|
| 1 | +# radar_crossing_objects_noise_filter |
| 2 | + |
| 3 | +This package contains a radar noise filter module for [autoware_auto_perception_msgs/msg/DetectedObject](https://gitlab.com/autowarefoundation/autoware.auto/autoware_auto_msgs/-/blob/master/autoware_auto_perception_msgs/msg/DetectedObject.idl). |
| 4 | +This package can filter the noise objects which cross to the ego vehicle. |
| 5 | + |
| 6 | +## Algorithm |
| 7 | + |
| 8 | +### Background |
| 9 | + |
| 10 | +This package aim to filter the noise objects which cross from the ego vehicle. |
| 11 | +The reason why these objects are noise is as below. |
| 12 | + |
| 13 | +- 1. The objects with doppler velocity can be trusted more than those with vertical velocity to it. |
| 14 | + |
| 15 | +Radars can get velocity information of objects as doppler velocity, but cannot get vertical velocity to doppler velocity directory. |
| 16 | +Some radars can output the objects with not only doppler velocity but also vertical velocity by estimation. |
| 17 | +If the vertical velocity estimation is poor, it leads to output noise objects. |
| 18 | +In other words, the above situation is that the objects which has vertical twist viewed from ego vehicle can tend to be noise objects. |
| 19 | + |
| 20 | +The example is below figure. |
| 21 | +Velocity estimation fails on static objects, resulting in ghost objects crossing in front of ego vehicles. |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +- 2. Turning around by ego vehicle affect the output from radar. |
| 26 | + |
| 27 | +When the ego vehicle turns around, the radars outputting at the object level sometimes fail to estimate the twist of objects correctly even if [radar_tracks_msgs_converter](https://github.com/autowarefoundation/autoware.universe/tree/main/perception/radar_tracks_msgs_converter) compensates by the ego vehicle twist. |
| 28 | +So if an object detected by radars has circular motion viewing from base_link, it is likely that the speed is estimated incorrectly and that the object is a static object. |
| 29 | + |
| 30 | +The example is below figure. |
| 31 | +When the ego vehicle turn right, the surrounding objects have left circular motion. |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | +### Detail Algorithm |
| 36 | + |
| 37 | +To filter the objects crossing to ego vehicle, this package filter the objects as below algorithm. |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +```cpp |
| 42 | + // If velocity of an object is rather than the velocity_threshold, |
| 43 | + // and crossing_yaw is near to vertical |
| 44 | + // angle_threshold < crossing_yaw < pi - angle_threshold |
| 45 | + if ( |
| 46 | + velocity > node_param_.velocity_threshold && |
| 47 | + abs(std::cos(crossing_yaw)) < abs(std::cos(node_param_.angle_threshold))) { |
| 48 | + // Object is noise object; |
| 49 | + } else { |
| 50 | + // Object is not noise object; |
| 51 | + } |
| 52 | +``` |
| 53 | +
|
| 54 | +## Input |
| 55 | +
|
| 56 | +| Name | Type | Description | |
| 57 | +| ----------------- | ----------------------------------------------------- | -------------- | |
| 58 | +| `~/input/objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | Radar objects. | |
| 59 | +
|
| 60 | +## Output |
| 61 | +
|
| 62 | +| Name | Type | Description | |
| 63 | +| --------------------------- | ----------------------------------------------------- | ---------------- | |
| 64 | +| `~/output/noise_objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | Noise objects | |
| 65 | +| `~/output/filtered_objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | Filtered objects | |
| 66 | +
|
| 67 | +## Parameters |
| 68 | +
|
| 69 | +| Name | Type | Description | Default value | |
| 70 | +| :------------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ | |
| 71 | +| `angle_threshold` | double | The angle threshold parameter to filter [rad]. This parameter has condition that 0 < `angle_threshold` < pi / 2. See algorithm chapter for details. | 1.0472 | |
| 72 | +| `velocity_threshold` | double | The velocity threshold parameter to filter [m/s]. See algorithm chapter for details. | 3.0 | |
0 commit comments