Radar pointcloud data pre-processing design#
Overview#
Pipeline#
This diagram describes the pre-process pipeline for radar pointcloud.
Note
The launch files of autoware_launch do not launch this pipeline, and none of its sensor kits has a radar. No perception package of Autoware Universe reads RadarScan today. The "Radar detection and tracking" box with a dashed border shows the intended user.
Interface#
- Input
- Radar data from device
- Odometry of the ego vehicle (
nav_msgs/msg/Odometry.msg)
- Output
- Dynamic radar pointcloud (
ros-perception/radar_msgs/msg/RadarScan.msg) - Noise filtered radar pointcloud (
sensor_msgs/msg/PointCloud2.msg)
- Dynamic radar pointcloud (
Note#
- In the sensing layer, the radar pre-process packages filter noise through the
ros-perception/radar_msgs/msg/RadarScan.msgmessage type with sensor coordinate. - To use radar pointcloud data in LiDAR packages, a converter creates
sensor_msgs/msg/PointCloud2.msgfromros-perception/radar_msgs/msg/RadarScan.msg.
Reference implementations#
Data message for radars#
Autoware uses radar pointcloud data type as radar_msgs/msg/RadarScan.msg. In detail, please see Data message for radars.
Device driver for radars#
Autoware supports ros-perception/radar_msgs/msg/RadarScan.msg and ros-perception/radar_msgs/msg/RadarTracks.msg for radar drivers.
In detail, please see Device driver for radars.
Basic noise filter#
This package removes pointcloud noise with low amplitude, edge angle, too near pointcloud by threshold. The noise depends on the radar devices and installation location.
Filter to static/dynamic pointcloud#
This package extracts static/dynamic radar pointcloud by using doppler velocity and the ego vehicle odometry. The static radar pointcloud can be used for localization like NDT scan matching, and the dynamic radar pointcloud can be used for dynamic object detection.
Message converter from RadarScan to PointCloud2#
To use radar pointcloud with the existing LiDAR packages, the autoware_radar_scan_to_pointcloud2 package converts ros-perception/radar_msgs/msg/RadarScan.msg to sensor_msgs/msg/PointCloud2.msg. It publishes two point clouds: output/amplitude_pointcloud has the amplitude as intensity, and output/doppler_pointcloud has the doppler velocity as intensity.
| LiDAR package | Radar package | |
|---|---|---|
| message | sensor_msgs/msg/PointCloud2.msg | ros-perception/radar_msgs/msg/RadarScan.msg |
| coordinate | (x, y, z) | (r, θ, φ) |
| value | intensity | amplitude, doppler velocity |
For considered use cases,
- Use pointcloud_preprocessor for radar scan.
- Apply obstacle segmentation like ground segmentation to radar points for LiDAR-less (camera + radar) systems.
Appendix#
Discussion#
Radar architecture design is discussed as below.