Input Format
Metadata
The metadata is the basic information of the running logs as
{
"timesteps_per_frame": 50,
"ego_config":{
"camera":{
"camera_loc" : [1.3, 0.0, 1.8]
}
},
"collision_frame": 114,
"total_frames": 114
}
timesteps_per_frame
: Number of millisecond per frame (e.g. 50 millisecond/frame)ego_config
camera
camera_loc
: Camera position coordinates [x,y,z] in meters (e.g. [1.3, 0.0, 1.8])
timesteps_per_frame
: Frame number where collision occurstotal_frames
: Total number of frames in simulation
Running Logs
ADS Root Cause Analysis is to analyze the running logs of ADS, thus the following logs are needed.
Each piece of data is in JSON format and should be placed in the corresponding folder. The file name should follow the pattern xxx-ttt.json
, where xxx
is the data name and ttt
is the timestamp in milliseconds.
Pose Data
The Pose data records the ego car's operating state at each moment, collected from either the simulator or the real world.
The Pose data saved in ${input_data}/pose/pose-ttt.json
.
A typical pose data should like
{
"x": "-111.38536071777345",
"y": "2.82016420293382",
"z": "0.03314319625496864",
"pitch": "0",
"yaw": "-0.1394016564817946",
"roll": "0",
"timestamp": "50",
"speed": "1.959183287133675"
}
x
: The X-coordinate position in 3D space (in meters).y
: The Y-coordinate position in 3D space (in meters).z
: The Z-coordinate position in 3D space (in meters).pitch
: The pitch angle representing the rotation around the lateral axis (up/down tilt),in degrees.yaw
: The yaw angle representing the rotation around the vertical axis (left/right turn), in degrees.roll
: The roll angle representing the rotation around the longitudinal axis (tilting side to side), in degrees.timestamp
: The time at which the data was recorded, given in milliseconds.speed
: The instantaneous speed of the object at this timestamp, in meters per second.
Actors
The Actors data records all vehicles and pedstrains in the environment, collected from either the simulator or the real world.
The Actors data saved in ${input_data}/actors/actors-ttt.json
.
A typical actor data should like
{
"746": {
"extent": {
"x": 2.4508416652679443,
"y": 1.0641621351242065,
"z": 0.7553732395172119
},
"location": {
"x": -111.38536071777344,
"y": 2.820164203643799,
"z": 0.03314319625496864
},
"rotation": {
"pitch": 0.0021241887006908655,
"roll": -0.003143310546875,
"yaw": -0.139404296875
}
},
...
}
keyValue
: The actor's id.extent
:x
: The half X-coordinate extent of actor (in meters).y
: The half Y-coordinate extent of actor (in meters).z
: The half Z-coordinate pextent of actor (in meters).
location
x
: The X-coordinate position in 3D space (in meters).y
: The Y-coordinate position in 3D space (in meters).z
: The Z-coordinate position in 3D space (in meters).
rotation
pitch
: The pitch angle representing the rotation around the lateral axis (up/down tilt),in degrees.yaw
: The yaw angle representing the rotation around the vertical axis (left/right turn), in degrees.roll
: The roll angle representing the rotation around the longitudinal axis (tilting side to side), in degrees.
Note that, the ego car's data should also be included in pose data.
Bounding Box
Bounding Box data is the output of perception module (in other word, detection module).
The Bounding Box data saved in ${input_data}/bboxes/bboxes-ttt.json
.
A typical bounding box data contains
[
{
"id": 0,
"bounding_box": [
[
1111,
550
],
[
1450,
733
]
]
},
...
]
id
: The detect id of NPCbounding_box
: The coordinates of the diagonal points of the bounding box
The id
is generated by perception module, it can be different with the Actors data.
Groundtruth Bouding Box data
The Groundtruth Bounding Box data is generated by the affine transformation of NPC location and camera settings.
The Groundtruth Bounding Box data saved in ${input_data}/bboxes_gt/bboxes_gt-ttt.json
.
It has the same format with the bounding box data.
Note that, the id
should same as the Actors data.
Prediction Data
The Prediction data is the output of the prediction module.
The Prediction Data saved in ${input_data}/predictions/predictions-ttt.json
.
A typical prediction data like
{
"1": {
"0": {
"x": 6.07421875,
"y": -0.012420654296875,
"z": 0.0
},
"1": {
"x": 6.07421875,
"y": -0.012420654296875,
"z": 0.0
},
"2": {
"x": 6.07421875,
"y": -0.012420654296875,
"z": 0.0
},
"3": {
"x": 6.07421875,
"y": -0.012420654296875,
"z": 0.0
},
...
},
...
}
first-level key
: The id that prediction module used, commonly generated by the tracking module.second-level key
: The future frame that the prediction module predict.x
: The relative X-coordinate position in 3D space (in meters).y
: The relative Y-coordinate position in 3D space (in meters).z
: The relative Z-coordinate position in 3D space (in meters).
The id
can be different with the Actors data.
Adjust Prediction data
To avoid the influence of the perception module, we adjust Prediction data with perception output.
The Adjust Prediction Data saved in ${input_data}/predictions_with_perception/predictions-ttt.json
.
The format should be same as the Prediction Data
Detail method can refer to the paper.
Waypoint Data
The Waypoint Data is the output of the planning module.
The Waypoint Data saved in ${input_data}/waypoint/waypoints-ttt.json
.
A typical Waypoint Data like
{
"0": {
"x": -111.38533020019531,
"y": 2.820444345474243,
"speed": 0
},
"1": {
"x": -111.38533020019531,
"y": 2.820444345474243,
"speed": 10
},
"2": {
"x": -110.38533020019531,
"y": 2.8180103302001953,
"speed": 15
},
"3": {
"x": -109.38533020019531,
"y": 2.8155760765075684,
"speed": 20
},
...
}
first-level key
: The future frame that the planning module plan to arrive.x
: The planning X-coordinate position in 3D space (in meters).y
: The planning Y-coordinate position in 3D space (in meters).speed
: The planning speed, in meters per second.