I work for a company that is very closely tied to the automotive industry. Many people in our industry are starting to use ROS as the basis for research and development efforts into autonomous vehicles. One of the primary sensing modalities is radar. Unfortunately, there isn’t really a basic message type in sensor_msgs that currently fits the output from a radar. The closest available is sensor_msgs/Range. However, while there are field_of_view, min_range, max_range and range properties associated with a radar detection, there are also other intrinsic properties like amplitude (a measure of the power of the returned signal - also applies to the other light-based sensor readings represented by Range) and angle (the angle of the detection within the lateral field of view - since radars have horizontal discrimination). Soon, there will also be 3D radars with vertical discrimination necessitating a splitting of field_of_view into lateral and vertical components.
Furthermore, many radars do not actually output the raw detection information but only output “tracks” which are filtered and grouped abstractions of single or multiple detections. Because of the tracking over several scans, they contain all the same readings as sensor_msgs/Range with the following exceptions:
- They do not contain “amplitude” since this is meaningless for a grouped/tracked single or set of detections.
- They also contain the following additional fields:
a.lateral_rate: The lateral velocity of the object within the arc of the field of view of the radar (polar lateral velocity).
b.width: A lateral measurement of the “track” from the most extreme lateral detections that make up the track.
c.range_rate: A measurement of the longitudinal velocity of the track with respect to the detected angle (polar longitudinal velocity).
d.range_accel: A measurement of the longitudinal acceleration of the track with respect to the detected angle.
We have our own versions of messages representing these data (see our package on Github [1] - specifically RadarDetection and RadarTrack) but I am now aware that these do not comply with REP 117 [2] and would much rather contribute to the standardized set of messages in common_msgs.
To the point: Does it make sense to try to extend sensor_msgs/Range to include the properties of a radar detection or should a new message be created? What about a track (when they are the only data available)?
[1] https://github.com/astuff/platform_automation_msgs/tree/master/radar_msgs/msg
[2] REP 117 -- Informational Distance Measurements (ROS.org)