Skip to content

Commit

Permalink
chore(radar_fusion_to_detected_object): fix README (autowarefoundatio…
Browse files Browse the repository at this point in the history
…n#6261)

* chore(radar_fusion_to_detected_object): fix README

Signed-off-by: scepter914 <scepter914@gmail.com>

* style(pre-commit): autofix

---------

Signed-off-by: scepter914 <scepter914@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kotaro Yoshimoto <pythagora.yoshimoto@gmail.com>
  • Loading branch information
3 people authored Feb 7, 2024
1 parent 069fb5e commit 6405516
Showing 1 changed file with 92 additions and 34 deletions.
126 changes: 92 additions & 34 deletions perception/radar_fusion_to_detected_object/README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,100 @@
# radar_fusion_to_detected_object

This package contains a sensor fusion module for radar-detected objects and 3D detected objects. The fusion node can:
This package contains a sensor fusion module for radar-detected objects and 3D detected objects.

The fusion node can:

- Attach velocity to 3D detections when successfully matching radar data. The tracking modules use the velocity information to enhance the tracking results while planning modules use it to execute actions like adaptive cruise control.
- Improve the low confidence 3D detections when corresponding radar detections are found.

![process_low_confidence](docs/radar_fusion_to_detected_object_6.drawio.svg)

## Core algorithm
## Design

### Background

This package is the fusion with LiDAR-based 3D detection output and radar data.
LiDAR based 3D detection can estimate position and size of objects with high precision, but it cannot estimate velocity of objects.
Radar data can estimate doppler velocity of objects, but it cannot estimate position and size of objects with high precision
This fusion package is aim to fuse these characteristic data, and to estimate position, size, velocity of objects with high precision.

### Algorithm

The document of core algorithm is [here](docs/algorithm.md)

## Interface for core algorithm

The parameters for core algorithm can be set as `core_params`.

### Parameters for sensor fusion

| Name | Type | Description | Default value |
| :----------------------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
| bounding_box_margin | double | The distance to extend the 2D bird's-eye view Bounding Box on each side. This distance is used as a threshold to find radar centroids falling inside the extended box. [m] | 2.0 |
| split_threshold_velocity | double | The object's velocity threshold to decide to split for two objects from radar information (currently not implemented) [m/s] | 5.0 |
| threshold_yaw_diff | double | The yaw orientation threshold. If ∣ θ_ob − θ_ra ∣ < threshold × yaw_diff attached to radar information include estimated velocity, where*θob*is yaw angle from 3d detected object,\*θ_ra is yaw angle from radar object. [rad] | 0.35 |
- `bounding_box_margin` (double) [m]
- Default parameter is 2.0.

This parameter is the distance to extend the 2D bird's-eye view bounding box on each side.
This parameter is used as a threshold to find radar centroids falling inside the extended box.

- `split_threshold_velocity` (double) [m/s]
- Default parameter is 5.0.

This parameter is the object's velocity threshold to decide to split for two objects from radar information.
Note that this feature is not currently implemented.

- `threshold_yaw_diff` (double) [rad]
- Default parameter is 0.35.

This parameter is the yaw orientation threshold.
If the difference of yaw degree between from a LiDAR-based detection object and radar velocity, radar information is attached to output objects.

### Weight parameters for velocity estimation

To tune these weight parameters, please see [document](docs/algorithm.md) in detail.

| Name | Type | Description | Default value |
| :----------------------------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
| velocity_weight_average | double | The twist coefficient of average twist of radar data in velocity estimation. | 0.0 |
| velocity_weight_median | double | The twist coefficient of median twist of radar data in velocity estimation. | 0.0 |
| velocity_weight_min_distance | double | The twist coefficient of radar data nearest to the center of bounding box in velocity estimation. | 1.0 |
| velocity_weight_target_value_average | double | The twist coefficient of target value weighted average in velocity estimation. Target value is amplitude if using radar pointcloud. Target value is probability if using radar objects. |
| 0.0 |
| velocity_weight_target_value_top | double | The twist coefficient of top target value radar data in velocity estimation. Target value is amplitude if using radar pointcloud. Target value is probability if using radar objects. | 0.0 |
- `velocity_weight_average` (double)
- Default parameter is 0.0.

This parameter is the twist coefficient of average twist of radar data in velocity estimation.

- `velocity_weight_median` (double)
- Default parameter is 0.0.

This parameter is the twist coefficient of median twist of radar data in velocity estimation.

- `velocity_weight_min_distance` (double)
- Default parameter is 1.0.

This parameter is the twist coefficient of radar data nearest to the center of bounding box in velocity estimation.

- `velocity_weight_target_value_average` (double)
- Default parameter is 0.0.

This parameter is the twist coefficient of target value weighted average in velocity estimation. Target value is amplitude if using radar pointcloud. Target value is probability if using radar objects.

- `velocity_weight_target_value_top` (double)
- Default parameter is 0.0.

This parameter is the twist coefficient of top target value radar data in velocity estimation. Target value is amplitude if using radar pointcloud. Target value is probability if using radar objects.

### Parameters for fixed object information

| Name | Type | Description | Default value |
| :----------------------- | :---- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
| convert_doppler_to_twist | bool | Convert doppler velocity to twist using the yaw information of a detected object. | false |
| threshold_probability | float | If the probability of an output object is lower than this parameter, and the output object does not have radar points/objects, then delete the object. | 0.4 |
| compensate_probability | bool | If this parameter is true, compensate probability of objects to threshold probability. | false |
- `convert_doppler_to_twist` (bool)
- Default parameter is false.

This parameter is the flag whether convert doppler velocity to twist using the yaw information of a detected object.

## radar_object_fusion_to_detected_object
- `threshold_probability` (float)
- Default parameter is 0.4.

This parameter is the threshold to filter output objects.
If the probability of an output object is lower than this parameter, and the output object does not have radar points/objects, then delete the object.

- `compensate_probability` (bool)
- Default parameter is false.

This parameter is the flag to use probability compensation.
If this parameter is true, compensate probability of objects to threshold probability.

## Interface for radar_object_fusion_to_detected_object

Sensor fusion with radar objects and a detected object.

Expand All @@ -56,24 +110,28 @@ ros2 launch radar_fusion_to_detected_object radar_object_to_detected_object.laun

### Input

| Name | Type | Description |
| ----------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- |
| `~/input/objects` | autoware_auto_perception_msgs/msg/DetectedObject.msg | 3D detected objects. |
| `~/input/radar_objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | Radar objects. Note that frame_id need to be same as `~/input/objects` |
- `~/input/objects` (`autoware_auto_perception_msgs/msg/DetectedObjects.msg`)
- 3D detected objects.
- `~/input/radar_objects` (`autoware_auto_perception_msgs/msg/DetectedObjects.msg`)
- Radar objects. Note that frame_id need to be same as `~/input/objects`

### Output

| Name | Type | Description |
| -------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `~/output/objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | 3D detected object with twist. |
| `~/debug/low_confidence_objects` | autoware_auto_perception_msgs/msg/DetectedObjects.msg | 3D detected object that doesn't output as `~/output/objects` because of low confidence |
- `~/output/objects` (`autoware_auto_perception_msgs/msg/DetectedObjects.msg`)
- 3D detected object with twist.
- `~/debug/low_confidence_objects` (`autoware_auto_perception_msgs/msg/DetectedObjects.msg`)
- 3D detected object that doesn't output as `~/output/objects` because of low confidence

### Parameters

| Name | Type | Description | Default value |
| :------------- | :----- | :-------------------- | :------------ |
| update_rate_hz | double | The update rate [hz]. | 20.0 |
The parameters for core algorithm can be set as `node_params`.

- `update_rate_hz` (double) [hz]
- Default parameter is 20.0

This parameter is update rate for the `onTimer` function.
This parameter should be same as the frame rate of input topics.

## radar_scan_fusion_to_detected_object (TBD)
## Interface for radar_scan_fusion_to_detected_object (TBD)

TBD
Under implement

0 comments on commit 6405516

Please sign in to comment.