diff --git a/sensing/pointcloud_preprocessor/docs/concatenate-data.md b/sensing/pointcloud_preprocessor/docs/concatenate-data.md index f59ff75852b1b..b48c476390aed 100644 --- a/sensing/pointcloud_preprocessor/docs/concatenate-data.md +++ b/sensing/pointcloud_preprocessor/docs/concatenate-data.md @@ -2,32 +2,38 @@ ## Purpose -The `concatenate_data` is a node that concatenates multiple pointclouds acquired by multiple LiDARs into a pointcloud. +Many self-driving cars combine multiple LiDARs to expand the sensing range. Therefore, a function to combine a plurality of point clouds is required. + +To combine multiple sensor data with a similar timestamp, the [message_filters](https://github.com/ros2/message_filters) is often used in the ROS-based system, but this requires the assumption that all inputs can be received. Since safety must be strongly considered in autonomous driving, the point clouds concatenate node must be designed so that even if one sensor fails, the remaining sensor information can be output. ## Inner-workings / Algorithms +The figure below represents the reception time of each sensor data and how it is combined in the case. + +![concatenate_data_timing_chart](./image/concatenate_data.drawio.svg) + ## Inputs / Outputs ### Input -| Name | Type | Description | -| ---------------- | ------------------------------------------------- | ---------------- | -| `~/input/points` | `sensor_msgs::msg::Pointcloud2` | reference points | -| `~/input/twist` | `autoware_auto_vehicle_msgs::msg::VelocityReport` | vehicle velocity | +| Name | Type | Description | +| --------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- | +| `~/input/twist` | `autoware_auto_vehicle_msgs::msg::VelocityReport` | The vehicle odometry is used to interpolate the timestamp of each sensor data | ### Output -| Name | Type | Description | -| ----------------- | ------------------------------- | --------------- | -| `~/output/points` | `sensor_msgs::msg::Pointcloud2` | filtered points | +| Name | Type | Description | +| ----------------- | ------------------------------- | ------------------------- | +| `~/output/points` | `sensor_msgs::msg::Pointcloud2` | concatenated point clouds | ## Parameters -| Name | Type | Default Value | Description | -| ---------------- | ------ | ------------- | ------------------------------------- | -| `input_frame` | string | " " | input frame id | -| `output_frame` | string | " " | output frame id | -| `max_queue_size` | int | 5 | max queue size of input/output topics | +| Name | Type | Default Value | Description | +| ---------------- | ---------------- | ------------- | ------------------------------------------------------------------- | +| `input/points` | vector of string | [] | input topic names that type must be `sensor_msgs::msg::Pointcloud2` | +| `input_frame` | string | "" | input frame id | +| `output_frame` | string | "" | output frame id | +| `max_queue_size` | int | 5 | max queue size of input/output topics | ### Core Parameters @@ -37,10 +43,4 @@ The `concatenate_data` is a node that concatenates multiple pointclouds acquired ## Assumptions / Known limits -## (Optional) Error detection and handling - -## (Optional) Performance characterization - -## (Optional) References/External links - -## (Optional) Future extensions / Unimplemented parts +It is necessary to assume that the vehicle odometry value exists, the sensor data and odometry timestamp are correct, and the TF from `base_link` to `sensor_frame` is also correct. diff --git a/sensing/pointcloud_preprocessor/docs/image/concatenate_data.drawio.svg b/sensing/pointcloud_preprocessor/docs/image/concatenate_data.drawio.svg new file mode 100644 index 0000000000000..43edc93299a8c --- /dev/null +++ b/sensing/pointcloud_preprocessor/docs/image/concatenate_data.drawio.svg @@ -0,0 +1,4 @@ + + + +
input topic 1
input topic...
input topic 2
input topic...
input topic 3
input topic...
concatenated topic
concatenate...
timer
start
timer...
this data is abandoned
this data i...
t0
t0
t1
t1
t2
t2
t3
t3
timer
start
timer...
timeout
timeout
t4
t4
Viewer does not support full SVG 1.1
\ No newline at end of file