Detection - AD-EYE/AD-EYE_Core GitHub Wiki
Detection diagram
The white nodes are part of Autoware, while the blue ones are custom nodes that are included in the Adeye package.
Camera extrinsics - Camera frame
This frame describes the position and orientation of the camera. The following rules must be considered:
- The origin of the frame should be the optical center of the camera
- +x should point to the right in the image
- +y should point down in the image
- +z should point into the plane of the image
In the current implementation, a static transformation between base_link and the camera frame have been added to the detection launcher:
<node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="2.0 0.0 1.32 -0.5 0.5 -0.5 0.5 base_link camera 10"/>
Example of the calculation using Matlab:
quat_frames = eul2quat([-pi()/2, pi()/2,0], "xyz");
quat_orientation = eul2quat([-pi()/12,-pi()/12,0],"zyx");
quat_final = quatmultiply(quat_orientation,quat_frames);
The first quaternion is the constant relation between PreScan frame and Autoware frame for the cameras. The second quaternion represents the rotation in PreScan. In this example, the camera is rotated -15 degrees in both z and y frames.
Camera intrinsics - CameraInfo message
Nodes description
/camera_info_publisher
Publish the camera intrinsics.
/vision_ssd_detect
Reads image data from cameras, and provides image-based object detection capabilities.
/lidar_euclidean_cluster_detect
Reads point cloud data from 3D laser scanners, and provides LiDAR-based object detection capabilities.
/range_vision_fusion
Combines the results from lidar_detector and image_tracker. The class information identified by image_detector is added to the clusters of point cloud detected by lidar_detector. (Check range_vision_fusion/README, source 2)
/imm_ukf_pda_track
Tracks the motion of objects detected and identified by the above packages.
/tracked_objects_adapter
Adapts the message containing the information about the tracked objects to the requirements of the open planner. Adds 1 to the id of every tracked object to be sure that it is not considered part of the own car and transform the coordinates to the global frame.