Main Content

ibeoFileReader

Read message headers from Ibeo Data Container (IDC) file

Description

Ibeo® Automotive Systems is a manufacturer of lidar sensor-based devices. The data from different sensors such as lidar and camera sensors, captured by these devices is stored in Ibeo Data Container (IDC) files. An ibeoFileReader object reads the message headers associated with the various sensors in an IDC file. Use the select object function to select messages of a specific type for reading, from an ibeoFileReader object.

Creation

Description

example

ibeoReader = ibeoFileReader(fileName) creates an ibeoFileReader object, ibeoReader, that reads message headers from the specified IDC file.

Input Arguments

expand all

IDC file name, specified as a string or character vector.

Properties

expand all

This property is read-only.

Absolute path to the IDC file to be read, specified as a string.

This property is read-only.

Timestamp of the first message in the IDC file with precision up to a nanosecond.

This property is read-only.

Timestamp of the final message in the IDC file, specified as a datetime scalar. This value is precise up to a nanosecond.

This property is read-only.

Total duration of IDC file in seconds specified as a duration scalar. This value is precise up to a nanosecond.

This property is read-only.

A table with columns NumMessages, MessageID, and DeviceID. The table rows are named based on the message types in the IDC file that are supported for reading.

Object Functions

selectSelect subset of messages to read from Ibeo Data Container (IDC) file

Examples

collapse all

Create an ibeoFileReader object, ibeoReader, to read the message headers from an IDC file. Replace the placeholder argument sample_data.idc with the name of your IDC file as sample_data.idc file is not provided with the toolbox.

ibeoReader = ibeoFileReader('sample_data.idc')
ibeoReader =
 
  ibeoFileReader with properties:
 
       FileName: "C:/Documents/MATLAB/ibeo_data/sample_data.idc"
      StartTime: 15-Mar-2020 11:21:04.999434999
        EndTime: 15-Mar-2020 11:25:35.030095000
       Duration: 00:04:30
    FileSummary: CAN             53    msgs [0x1002]
                 scan            53    msgs [0x2205]
                 object          106   msgs [0x2281]
                 image           53    msgs [0x2403]
                 vehicleState    53    msgs [0x2808]
                 measurementList 53    msgs [0x2821]
                 pointCloudPlane 53    msgs [0x7510]
                 unsupported     53    msgs [0x6120]
                 unsupported     53    msgs [0x6970]

Create two ibeoMessageReader objects, imgReader and objReader, to read all image and object detection messages in the first 2 minutes, respectively, by using the select function with appropriate message type and time range values.

timeRange = [0 minutes(2)];
imgReader = select(ibeoReader,'image',timeRange);
objReader = select(ibeoReader,'object',timeRange);

Read the first 10 images and all object detection messages in the first 2 minutes, by using the readMessages function on the respective ibeoMessageReader objects with appropriate indices and timeRange arguments. Reading object detection messages returns both online objects and postprocessed objects along with their metadata.

imgs = readMessages(imgReader,1:10);
[rawObjs,procObjs,rawMetadata,procMetadata] = readMessages(objReader);

Create an ibeoFileReader object, ibeoReader, to read the message headers from the IDC file. Replace the placeholder argument sample_data.idc with the name of your IDC file as sample_data.idc file is not provided with the toolbox.

ibeoReader = ibeoFileReader('sample_data.idc')
ibeoReader =
 
  ibeoFileReader with properties:
 
       FileName: "C:/Documents/MATLAB/ibeo_data/sample_data.idc"
      StartTime: 15-Mar-2020 11:21:04.999434999
        EndTime: 15-Mar-2020 11:25:35.030095000
       Duration: 00:04:30
    FileSummary: CAN             53    msgs [0x1002]
                 scan            53    msgs [0x2205]
                 object          106   msgs [0x2281]
                 image           53    msgs [0x2403]
                 vehicleState    53    msgs [0x2808]
                 measurementList 53    msgs [0x2821]
                 pointCloudPlane 53    msgs [0x7510]
                 unsupported     53    msgs [0x6120]
                 unsupported     53    msgs [0x6970]

Create an ibeoMessageReader object, imgReader, to read all images in the first 2 minutes, by using the select function with appropriate message type and time range values.

timeRange = [0, minutes(2)];
imgReader = select(ibeoReader, 'image', timeRange);

Visualize the message data by reading the messages one at a time to a video player object. First, create a vision.VideoPlayer object. Then, use the hasNextMessage function to check whether imgReader contains a message after the current one. If it does, use readNextMessage function to read the images into the workspace.

videoPlayer = vision.VideoPlayer;
while hasNextMessage(imgReader)
    img = readNextMessage(imgReader);
    step(videoPlayer,img);
end
release(videoPlayer);
     

Reset the ibeoMessageReader object, imgReader, to the first message in the selection, using the reset function.

 reset(imgReader);

Limitations

  • ibeoFileReader is designed for use with Ibeo Interface Specification v1.50. If you read older versions of IDC files, some fields may contain empty or random data.

  • The StartTime, EndTime, and Duration properties do not include the arrival time of postprocessed object messages.

Introduced in R2021a