Hi,
I want to start a discussion on implementing a Doppler radar sensor so that we can raise a feature request together, or better start implementing it.
Desired Behavior
A new sensor plugin that provides measurements in PointCloud2. A radar point could look like this:
struct RadarPoint
{
// 3D point coordinates
float x;
float y;
float z;
float radial_speed; // radial speed of the point in m/s
float RCS; // radar cross-section
float snr; // signal to noise ratio
float power; // received signal power
float noise; // received signal noise
}
Parameters
The plugin should have the following parameters:
- Range min/max
- Range accuracy
- Azimuth angle min/max
- Azimuth angle accuracy
- Azimuth angle separation
- Elevation angle min/max
- Elevation angle accuracy
- Elevation angle separation
- Radial speed min/max
- Radial speed accuracy
- Radial speed separation
- Number of cloud points (maximum)
Implementation suggestion
From my side beam shape and modulation is not relevant, therefore I was considering using preexisting plugins, and building on top of these, rather than starting from the bottom with building a radio wave plugin.
Initially, I was thinking of using the GPULidar sensor to deliver XYZ, but I do not know about the physics implementation and the possibility of modulating the frequency on the ray cast.
The other idea was to use the features of the logical camera to get information about the environment and derive information such as XYZ, but also radial speed, and RCS from the detected model itself.
Additional context
I have seen this feature request for a Doppler Velocity Log sensor (Add Doppler Velocity Log (DVL) sensor · Issue #236 · gazebosim/gz-sensors · GitHub)
Discussion
Please let us discuss the requirements for such a sensor. (Do we need more or fewer measurements, or parameters?)
How can we implement a Doppler radar sensor?
What are the next steps?
Looking forward to a lively discussion,
Christian