This document contains a set of questions that might be unclear after examining readme file data at this page:
https://www.a2d2.audi/a2d2/en/download.html
And the technical description of the data set at this page:
https://arxiv.org/abs/2004.06320
Answers, where available, are given directly below the questions and have come from discussions with the A2D2 Team. If a question has no answer below it, then it remains an open question.
- Why do converters only run on portions of the data set instead of the whole thing?
- The data set is quite large (~2.3TB). Many people won't be able to download and convert the whole thing at once, which would likely require over 5TB of free storage.
- What convention do the timestamps follow?
- All timestamps encode UTC microseconds since Epoch begin.
- What is the precision of real-valued data (e.g., single precision, double precision, etc.)?
- None of the data in the data set was recorded with greater than single precision. (For lidar data, note that numpy stores the point data with double precision, but the data itself is only generated with single precision.)
- Are the labeled data a subset of the unlabeled data, or are they different sets?
- The object detection dataset is a subset of the semantic segmentation dataset. The raw sensor fusion data (Gaimersheim, Ingolstadt, and Munich) is a different set.
- Do all subsets in the unlabeled data set span the same time?
- No, there are slightly different start times among the sensor locations. For example, the table below lists start times for the Ingolstadt logs (largest magnitude times in bold):
Sensor | Start time |
---|---|
Bus signals | 1554121593489120 |
Front center | 1554121593909522 |
Front left | 1554121593909500 |
Front right | 1554121593909500 |
Rear center | 1554121595034993 |
Side left | 1554121595035037 |
Side right | 1554121595035037 |
- Are all units in the
cams_lidars.json
file SI?- Distances are in meters, timestamp_delay is in microseconds
- Are coordinate systems right handed?
- Yes.
- In the bus signal data, what are the
roll_angle
andpitch_angle
conventions?- Euler/Tait-Bryan angles that describe the offset from the wheels frame to the chassis frame, with sign convention from DIN 9000.
- What are the conventions for the reference frame g (described in Section 3.1)?
- The frame g is fixed with respect to the chassis of the vehicle, and all sensor poses are static with respect to it.
- In addition, there is a
wheels
frame that, at rest, is coincident with g. In motion, g can roll and pitch (but not yaw or translate) with respect towheels
. In the bus signal data, theroll_angle
andpitch_angle
values describe these offsets.
- The tutorial states that
tstamp_delay
"specifies a known delay in microseconds between actual camera frame times"; what does that mean? Are these delays accounted for in the frame timestamps?- This is baked for the semantic segmentation and object detection datasets but not for the raw datasets. You can use this delay to register lidar/camera timestamps. Lidar comes before camera, and therefore tstamp_delay correction is optionally needed here.
- What are the
CorrectedImagePort
fields incams_lidars.json
for theside_left
andrear_center
cameras? Why are theynull
?- These fields are not used and can be ignored.
- What are the
view_
fields in the camera sections ofcams_lidars.json
?- These fields are not used and can be ignored.
- There is no
yaw_angle
field; is there supposed to be?- No. See the reference frame g topic in the 'Conventions' section.
- What are the
distance_pulse_*
fields and what do the values represent?- Distance pulse data comes from pulse counter at the wheels. Counters generally run forward, even when driving backwards. If the sensor is reset due to error or failure, the value is always, without exception, to send 1 times the Init value 1021. If the value 1021 is not present in the data set, then there were resets due to error or failure.
- What are the
latitude_direction
andlongitude_direction
fields and what do the values represent?- latitude_direction: North/South Hemisphere (0 north / 1 south), longitude_direction: East/West Hemisphere (0 east, 1 west)
- What are the conventions for the
steering_angle_calculated
values (i.e., what are min and max, and what is centered)?- Steering angle with straight-line flow correction from the position of the steering motor (0 = centered, stepsize = 0.15, min = 0, max = 614.25, init = 614.10, error = 614.25).
- What are the conventions for the
*_sign
fields?- 0 = left/positive, 1 = right/negative
- Is
vehicle_speed
allowed to be negative?- No, the vehicle_speed is always between 0 and 655.35.
- What is the convention for
accelerator_pedal
percent values (i.e., is 0 or 100 fully depressed)?- 100 = fully depressed
- Are the points in the point cloud ordered in any way? If so, what is the ordering?
- ?
- What is the
pcloud_attr.rectime
lidar data field?- The 'rectime' field contains the recording time when this data point was recorded.
- What is the
pcloud_attr.timestamp
lidar data field?- The 'timestamp' field contains the time when the operating system received the TCP/IP package from the device.
- What is the
pcloud_attr.boundary
lidar data field?- Boundary flag is true if the data point is coming from bordering lidar channel, probably ring 0 and ring 15 in the data set (recorded with VLP16).
- What is the
pcloud_attr.valid
lidar data field?- Valid is only true for points that need to be considered. There are some points in the xy plane near the sensor that need not be considered. That is, if valid != true, don’t consider this point.
- What are the units for
pcloud_attr.reflectance
?- See Velodyne VLP16 manual Sec 6.1
- Are
pcloud_attr.depth
andpcloud_attr.distance
strictly non-negative?- Yes.
- Are
pcloud_attr.row
andpcloud_attr.col
supposed to be non-negative? What is the convention to convert to integer pixel coordinates?- They may be negative but then they would fall outside the image, and thus not really usable. You may choose whatever pixel conversion convention makes sense for the application you have in mind. Typically they are simply rounded to the nearest integer.
- Are the lidar points in the raw sensor fusion data set motion compensated already?
- Yes.
- What is the
driving_direction
field and what do the values represent?- The signal driving_direction indicates reverse driving (0 = direction not definined, 1 = foreward, 2 = reverse, 3 = standstill). Note that in the raw sensor fusion data set there is no reverse driving so the 'driving_direction' is not needed and not included in the bus signal data.
- What do the values for the
gear
field represent?- 0 = Gear N, 1 = Gear 1, 2 = Gear 2, ..., 8 = Gear 8, 9 = Automatic P, 10 = Automatic forward S, 11 = Automatic forward D, 12 = Intermediate position, 13 = reverse gear, 14 = gear not defined, 15 = Error
- Are
steering_angle
andsteering_angle_sign
ground truth with respect tosteering_angle_calculated
andsteering_angle_calculated_sign
?- steering_angle is the position / shift from the middle measured on the steering link (it's no angle -> bad naming) and steering_angle_calculated is the steering wheel angle.
These items have to do with variations between the data and the tutorial.
- The JSON info file associated with each camera image has the additional fields
image_zoom
andpcld_view
that are not listed in the tutorial; what are they?- ?
- What is the purpose of the
get_axes_of_a_view
method? Why would thex-axis
andy-axis
members of theview
objects not already be orthonormal?- The axes might already be orthogonal; the method is just being pedantic.
The tutorial lists the lidar data fields as:
['azimuth', 'row', 'lidar_id', 'depth', 'reflectance', 'col', 'points', 'timestamp', 'distance']
However, in the data set they are:
['pcloud_points', 'pcloud_attr.rectime', 'pcloud_attr.azimuth', 'pcloud_attr.reflectance', 'pcloud_attr.boundary', 'pcloud_attr.lidar_id', 'pcloud_attr.timestamp', 'pcloud_attr.valid', 'pcloud_attr.row', 'pcloud_attr.col', 'pcloud_attr.distance', 'pcloud_attr.depth']