- cam_representation: Waymo to normal https://github.com/OpenPerceptionX/OpenLane/blob/1e8e61ccb456232955cf999b8db2aa4023945d25/eval/LANE_evaluation/lane3d/eval_3D_lane.py#L333-L338
- R_gc: normal to LaneNet https://github.com/OpenPerceptionX/OpenLane/blob/1e8e61ccb456232955cf999b8db2aa4023945d25/eval/LANE_evaluation/lane3d/eval_3D_lane.py#L305-L307
- R_vg: LaneNet to Waymo https://github.com/OpenPerceptionX/OpenLane/blob/1e8e61ccb456232955cf999b8db2aa4023945d25/eval/LANE_evaluation/lane3d/eval_3D_lane.py#L302-L304
- original cam_extrinsics in JSON: Waymo camera to Waymo vehicle
- inv(R_vg): Waymo to LaneNet
Note that the 3D lane GT are annotated in the Waymo camera coord sys. With matrices above, the final cam_extrinsics
can transform GT to road coord (which is right-down of the camera and actually has the same z height with Waymo vehicle coord rather than on the road, with setting x/y=0
in the last line of code).
https://github.com/OpenPerceptionX/OpenLane/blob/1e8e61ccb456232955cf999b8db2aa4023945d25/eval/LANE_evaluation/lane3d/eval_3D_lane.py#L308-L314
In conclusion, there are some redundancies in the process and one could try to use only R_vg
and original cam_extrinsics
to see if they could get the same results.
point_global = pose_matrix @ point_vehicle