Skip to content

Commit

Permalink
refactor(tier4_perception_launch): refactoring detection launchers (a…
Browse files Browse the repository at this point in the history
…utowarefoundation#9611)

* feat: Update object detection launch files to include input and output arguments

The object detection launch files have been updated to include input and output arguments for better flexibility and modularity. This allows for easier integration with other components and improves the overall performance of the system.

```

Signed-off-by: Taekjin LEE <[email protected]>

* feat: Update object detection launch files to include input and output arguments

Signed-off-by: Taekjin LEE <[email protected]>

* refactor: Update object detection launch files for better readability

Signed-off-by: Taekjin LEE <[email protected]>

* Update object detection launch files to include clustering output argument

Signed-off-by: Taekjin LEE <[email protected]>

* fix: pass ns argument to the lidar_rule_detector

Signed-off-by: Taekjin LEE <[email protected]>

* refactor: make euclidean_cluster not to use use_pointcloud_container and mark explicitly

Signed-off-by: Taekjin LEE <[email protected]>

---------

Signed-off-by: Taekjin LEE <[email protected]>
  • Loading branch information
technolojin authored Dec 12, 2024
1 parent 41ca768 commit 4bfb753
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,37 +47,40 @@
<arg name="input/camera7/info"/>
<arg name="input/camera7/rois"/>
<arg name="input/radar"/>

<arg name="input/tracked_objects" default="/perception/object_recognition/tracking/objects"/>
<arg name="output/objects" default="objects"/>

<!-- internal interfaces -->
<arg name="pointcloud_filter/output/pointcloud" default="$(var ns)/pointcloud_map_filtered/pointcloud"/>
<arg name="lidar_ml_detector/output/objects" default="$(var ns)/$(var lidar_detection_model_type)/objects"/>
<arg name="lidar_rule_detector/output/objects" default="$(var ns)/clustering/objects"/>
<arg name="camera_lidar_rule_detector/output/objects" default="$(var ns)/clustering/camera_lidar_fusion/objects"/>
<arg name="tracker_based_detector/output/objects" default="$(var ns)/detection_by_tracker/objects"/>
<arg name="lidar_object_filter/output/objects" default="$(var ns)/$(var lidar_detection_model_type)/validation/objects"/>
<arg name="camera_lidar_object_filter/output/objects" default="$(var ns)/clustering/camera_lidar_fusion/filtered/objects"/>
<arg name="radar_pipeline/output/objects" default="$(var ns)/radar/far_objects"/>
<arg name="radar_object_filter/output/objects" default="$(var ns)/radar/far_objects"/>
<let name="pointcloud_filter/output/pointcloud" value="$(var ns)/pointcloud_map_filtered/pointcloud"/>
<let name="lidar_ml_detector/output/objects" value="$(var ns)/$(var lidar_detection_model_type)/objects"/>
<let name="lidar_rule_detector/output/cluster_objects" value="$(var ns)/clustering/objects_with_feature"/>
<let name="lidar_rule_detector/output/objects" value="$(var ns)/clustering/objects"/>
<let name="camera_lidar_rule_detector/output/objects" value="$(var ns)/clustering/camera_lidar_fusion/objects"/>
<let name="camera_lidar_rule_detector/output/cluster_objects" value="$(var ns)/clustering/objects_with_feature"/>
<let name="tracker_based_detector/input/clusters" value="$(var ns)/clustering/objects_with_feature"/>
<let name="tracker_based_detector/output/objects" value="$(var ns)/detection_by_tracker/objects"/>
<let name="lidar_object_filter/output/objects" value="$(var ns)/$(var lidar_detection_model_type)/validation/objects"/>
<let name="camera_lidar_object_filter/output/objects" value="$(var ns)/clustering/camera_lidar_fusion/filtered/objects"/>
<let name="radar_pipeline/output/objects" value="$(var ns)/radar/far_objects"/>
<let name="radar_object_filter/output/objects" value="$(var ns)/radar/far_objects"/>

<!-- Module switching -->
<arg name="switch/detector/camera_lidar" default="false"/>
<arg name="switch/detector/lidar_dnn" default="false"/>
<arg name="switch/detector/lidar_rule" default="false"/>
<arg name="switch/detector/radar" default="false"/>
<arg name="switch/detector/radar_only" default="false"/>
<arg name="switch/detector/tracker_based" default="false"/>
<let name="switch/detector/camera_lidar" value="false"/>
<let name="switch/detector/lidar_dnn" value="false"/>
<let name="switch/detector/lidar_rule" value="false"/>
<let name="switch/detector/radar" value="false"/>
<let name="switch/detector/radar_only" value="false"/>
<let name="switch/detector/tracker_based" value="false"/>
<let name="switch/detector/tracker_based" value="true" if="$(var use_detection_by_tracker)"/>

<arg name="switch/filter/pointcloud" default="false"/>
<arg name="switch/filter/camera_lidar_object" default="false"/>
<arg name="switch/filter/lidar_object" default="false"/>
<let name="switch/filter/pointcloud" value="false"/>
<let name="switch/filter/camera_lidar_object" value="false"/>
<let name="switch/filter/lidar_object" value="false"/>

<arg name="switch/merger/camera_lidar_radar" default="false"/>
<arg name="switch/merger/camera_lidar" default="false"/>
<arg name="switch/merger/lidar_radar" default="false"/>
<arg name="switch/merger/lidar" default="false"/>
<let name="switch/merger/camera_lidar_radar" value="false"/>
<let name="switch/merger/camera_lidar" value="false"/>
<let name="switch/merger/lidar_radar" value="false"/>
<let name="switch/merger/lidar" value="false"/>

<group scoped="false" if="$(eval '&quot;$(var mode)&quot;==&quot;camera_lidar_radar_fusion&quot;')">
<let name="switch/filter/pointcloud" value="true"/>
Expand Down Expand Up @@ -129,6 +132,7 @@
<group if="$(var switch/detector/camera_lidar)">
<!-- Camera-Lidar detectors -->
<include file="$(find-pkg-share tier4_perception_launch)/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml">
<arg name="ns" value="$(var ns)"/>
<arg name="number_of_cameras" value="$(var number_of_cameras)"/>
<arg name="input/camera0/image" value="$(var input/camera0/image)"/>
<arg name="input/camera0/info" value="$(var input/camera0/info)"/>
Expand Down Expand Up @@ -159,6 +163,7 @@
<arg name="input/obstacle_segmentation/pointcloud" value="$(var input/obstacle_segmentation/pointcloud)"/>
<arg name="output/ml_detector/objects" value="$(var lidar_ml_detector/output/objects)"/>
<arg name="output/rule_detector/objects" value="$(var camera_lidar_rule_detector/output/objects)"/>
<arg name="output/clustering/cluster_objects" value="$(var camera_lidar_rule_detector/output/cluster_objects)"/>
<arg name="node/pointcloud_container" value="$(var node/pointcloud_container)"/>
<arg name="lidar_detection_model_type" value="$(var lidar_detection_model_type)"/>
<arg name="lidar_detection_model_name" value="$(var lidar_detection_model_name)"/>
Expand All @@ -182,9 +187,11 @@
<group if="$(var switch/detector/lidar_rule)">
<!-- Lidar rule-based detectors-->
<include file="$(find-pkg-share tier4_perception_launch)/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml">
<arg name="ns" value="$(var ns)"/>
<arg name="node/pointcloud_container" value="$(var node/pointcloud_container)"/>
<arg name="input/pointcloud_map/pointcloud" value="$(var pointcloud_filter/output/pointcloud)"/>
<arg name="input/obstacle_segmentation/pointcloud" value="$(var input/obstacle_segmentation/pointcloud)"/>
<arg name="output/cluster_objects" value="$(var lidar_rule_detector/output/cluster_objects)"/>
<arg name="output/objects" value="$(var lidar_rule_detector/output/objects)"/>
<arg name="use_low_height_cropbox" value="$(var use_low_height_cropbox)"/>
</include>
Expand Down Expand Up @@ -217,6 +224,8 @@
<!-- DetectionByTracker -->
<group if="$(var switch/detector/tracker_based)">
<include file="$(find-pkg-share tier4_perception_launch)/launch/object_recognition/detection/detector/tracker_based_detector.launch.xml">
<arg name="input/clusters" value="$(var tracker_based_detector/input/clusters)"/>
<arg name="input/tracked_objects" value="$(var input/tracked_objects)"/>
<arg name="output/objects" value="$(var tracker_based_detector/output/objects)"/>
<arg name="detection_by_tracker_param_path" value="$(var object_recognition_detection_detection_by_tracker_param)"/>
</include>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<?xml version="1.0"?>
<launch>
<!-- Current namespace -->
<arg name="ns" description="current namespace"/>

<!-- Lidar + Camera detector parameters -->
<arg name="lidar_detection_model_type" description="options: `transfusion`, `centerpoint`, `pointpainting`, `apollo`, `clustering`"/>
<arg name="lidar_detection_model_name" description="options: `transfusion`, `centerpoint`, `centerpoint_tiny`, `centerpoint_sigma`, `pointpainting`"/>
Expand Down Expand Up @@ -41,6 +44,35 @@

<arg name="output/ml_detector/objects"/>
<arg name="output/rule_detector/objects"/>
<arg name="output/clustering/cluster_objects"/>

<!-- Internal interfaces -->
<let name="pointpainting/input/pointcloud" value="$(var input/pointcloud)"/>
<let name="pointpainting/output/objects" value="$(var output/ml_detector/objects)"/>

<let name="segmentation_based_filtered/input/pointcloud" value="$(var input/pointcloud_map/pointcloud)"/>
<let name="segmentation_based_filtered/output/pointcloud" value="$(var ns)/segmentation_based_filtered/pointcloud"/>

<let name="euclidean_cluster/input/pointcloud" value="$(var segmentation_based_filtered/output/pointcloud)" if="$(var use_image_segmentation_based_filter)"/>
<let name="euclidean_cluster/input/pointcloud" value="$(var input/pointcloud_map/pointcloud)" unless="$(var use_image_segmentation_based_filter)"/>
<let name="clustering/clusters" value="$(var ns)/clustering/clusters"/>
<let name="euclidean_cluster/output/clusters" value="$(var ns)/clustering/euclidean_cluster/clusters" if="$(var use_roi_based_cluster)"/>
<let name="euclidean_cluster/output/clusters" value="$(var clustering/clusters)" unless="$(var use_roi_based_cluster)"/>
<let name="roi_cluster/input/pointcloud" value="$(var input/pointcloud_map/pointcloud)"/>
<let name="roi_cluster/output/clusters" value="$(var ns)/clustering/roi_cluster/clusters"/>
<let name="roi_merged_cluster/output/clusters" value="$(var clustering/clusters)"/>
<let name="shape_estimation1/input/clusters" value="$(var clustering/clusters)"/>
<let name="shape_estimation1/output/objects" value="$(var output/clustering/cluster_objects)"/>

<let name="roi_cluster_fusion/input/clusters" value="$(var ns)/clustering/clusters"/>
<let name="roi_cluster_fusion/output/clusters" value="$(var ns)/clustering/camera_lidar_fusion/clusters"/>
<let name="low_intensity_cluster_filter/input/clusters" value="$(var roi_cluster_fusion/output/clusters)"/>
<let name="low_intensity_cluster_filter/output/clusters" value="$(var ns)/clustering/camera_lidar_fusion/filtered/clusters"/>
<let name="shape_estimation2/input/clusters" value="$(var low_intensity_cluster_filter/output/clusters)" if="$(var use_low_intensity_cluster_filter)"/>
<let name="shape_estimation2/input/clusters" value="$(var roi_cluster_fusion/output/clusters)" unless="$(var use_low_intensity_cluster_filter)"/>
<let name="shape_estimation2/output/objects" value="$(var ns)/clustering/camera_lidar_fusion/objects_with_feature"/>
<let name="detected_object_feature_remover/input/objects_with_feature" value="$(var shape_estimation2/output/objects)"/>
<let name="detected_object_feature_remover/output/objects" value="$(var output/rule_detector/objects)"/>

<!-- Jetson AGX -->
<!-- <include file="$(find-pkg-share autoware_tensorrt_yolox)/launch/multiple_yolox.launch.xml">
Expand Down Expand Up @@ -85,8 +117,8 @@
<arg name="input/image5" value="$(var input/camera5/image)"/>
<arg name="input/image6" value="$(var input/camera6/image)"/>
<arg name="input/image7" value="$(var input/camera7/image)"/>
<arg name="input/pointcloud" value="$(var input/pointcloud)"/>
<arg name="output/objects" value="$(var output/ml_detector/objects)"/>
<arg name="input/pointcloud" value="$(var pointpainting/input/pointcloud)"/>
<arg name="output/objects" value="$(var pointpainting/output/objects)"/>

<arg name="model_name" value="$(var lidar_detection_model_name)"/>
<arg name="model_path" value="$(var pointpainting_model_path)"/>
Expand All @@ -101,23 +133,20 @@
<!-- Image_segmentation based filter, apply for camera0 only-->
<group>
<include file="$(find-pkg-share autoware_image_projection_based_fusion)/launch/segmentation_pointcloud_fusion.launch.xml" if="$(var use_image_segmentation_based_filter)">
<arg name="input/pointcloud" value="$(var input/pointcloud_map/pointcloud)"/>
<arg name="output/pointcloud" value="/perception/object_recognition/detection/segmentation_based_filtered/pointcloud"/>
<arg name="input/pointcloud" value="$(var segmentation_based_filtered/input/pointcloud)"/>
<arg name="output/pointcloud" value="$(var segmentation_based_filtered/output/pointcloud)"/>
</include>
</group>

<!-- Clustering -->
<group>
<push-ros-namespace namespace="clustering"/>
<group>
<let name="euclidean_cluster_input" value="$(var input/pointcloud_map/pointcloud)" unless="$(var use_image_segmentation_based_filter)"/>
<let name="euclidean_cluster_input" value="/perception/object_recognition/detection/segmentation_based_filtered/pointcloud" if="$(var use_image_segmentation_based_filter)"/>
<let name="euclidean_cluster_output" value="euclidean_cluster/clusters" if="$(var use_roi_based_cluster)"/>
<let name="euclidean_cluster_output" value="clusters" unless="$(var use_roi_based_cluster)"/>
<include file="$(find-pkg-share autoware_euclidean_cluster)/launch/voxel_grid_based_euclidean_cluster.launch.xml">
<arg name="input_pointcloud" value="$(var euclidean_cluster_input)"/>
<arg name="output_clusters" value="$(var euclidean_cluster_output)"/>
<arg name="input_pointcloud" value="$(var euclidean_cluster/input/pointcloud)"/>
<arg name="output_clusters" value="$(var euclidean_cluster/output/clusters)"/>
<arg name="use_low_height_cropbox" value="$(var use_low_height_cropbox)"/>
<arg name="use_pointcloud_container" value="false"/>
</include>
</group>

Expand Down Expand Up @@ -151,8 +180,8 @@
<arg name="input/image5" value="$(var input/camera5/image)"/>
<arg name="input/image6" value="$(var input/camera6/image)"/>
<arg name="input/image7" value="$(var input/camera7/image)"/>
<arg name="input/pointcloud" value="$(var input/pointcloud_map/pointcloud)"/>
<arg name="output_clusters" value="clusters"/>
<arg name="input/pointcloud" value="$(var roi_cluster/input/pointcloud)"/>
<arg name="output_clusters" value="$(var roi_cluster/output/clusters)"/>
<arg name="param_path" value="$(var roi_pointcloud_fusion_param_path)"/>
</include>
</group>
Expand All @@ -161,21 +190,21 @@
<!-- simple_cluster_merger -->
<group>
<include file="$(find-pkg-share autoware_cluster_merger)/launch/cluster_merger.launch.xml" if="$(var use_roi_based_cluster)">
<arg name="input/cluster0" value="euclidean_cluster/clusters"/>
<arg name="input/cluster1" value="roi_cluster/clusters"/>
<arg name="output/clusters" value="clusters"/>
<arg name="input/cluster0" value="$(var euclidean_cluster/output/clusters)"/>
<arg name="input/cluster1" value="$(var roi_cluster/output/clusters)"/>
<arg name="output/clusters" value="$(var roi_merged_cluster/output/clusters)"/>
</include>
</group>

<!-- shape_estimation 1 -->
<group>
<include file="$(find-pkg-share autoware_shape_estimation)/launch/shape_estimation.launch.xml">
<arg name="input/objects" value="clusters"/>
<arg name="output/objects" value="objects_with_feature"/>
<arg name="input/objects" value="$(var shape_estimation1/input/clusters)"/>
<arg name="output/objects" value="$(var shape_estimation1/output/objects)"/>
</include>
</group>

<group>
<let name="input/clustering" value="/perception/object_recognition/detection/clustering/clusters"/>
<push-ros-namespace namespace="camera_lidar_fusion"/>
<!-- Fusion camera-lidar to classify -->

Expand Down Expand Up @@ -207,33 +236,31 @@
<arg name="input/image5" value="$(var input/camera5/image)"/>
<arg name="input/image6" value="$(var input/camera6/image)"/>
<arg name="input/image7" value="$(var input/camera7/image)"/>
<arg name="input/clusters" value="$(var input/clustering)"/>
<arg name="output/clusters" value="clusters"/>
<arg name="input/clusters" value="$(var roi_cluster_fusion/input/clusters)"/>
<arg name="output/clusters" value="$(var roi_cluster_fusion/output/clusters)"/>
<arg name="param_path" value="$(var roi_cluster_fusion_param_path)"/>
</include>
</group>

<!-- low_intensity_cluster_filter -->
<group>
<include file="$(find-pkg-share autoware_raindrop_cluster_filter)/launch/low_intensity_cluster_filter.launch.xml" if="$(var use_low_intensity_cluster_filter)">
<arg name="input/objects" value="clusters"/>
<arg name="output/objects" value="filtered/clusters"/>
<arg name="input/objects" value="$(var low_intensity_cluster_filter/input/clusters)"/>
<arg name="output/objects" value="$(var low_intensity_cluster_filter/output/clusters)"/>
</include>
</group>

<group>
<let name="shape_estimation/input" value="filtered/clusters" if="$(var use_low_intensity_cluster_filter)"/>
<let name="shape_estimation/input" value="clusters" unless="$(var use_low_intensity_cluster_filter)"/>
<include file="$(find-pkg-share autoware_shape_estimation)/launch/shape_estimation.launch.xml">
<arg name="input/objects" value="$(var shape_estimation/input)"/>
<arg name="output/objects" value="objects_with_feature"/>
<arg name="input/objects" value="$(var shape_estimation2/input/clusters)"/>
<arg name="output/objects" value="$(var shape_estimation2/output/objects)"/>
</include>
</group>
<!-- convert DynamicObjectsWithFeatureArray to DynamicObjects -->
<group>
<include file="$(find-pkg-share autoware_detected_object_feature_remover)/launch/detected_object_feature_remover.launch.xml">
<arg name="input" value="objects_with_feature"/>
<arg name="output" value="$(var output/rule_detector/objects)"/>
<arg name="input" value="$(var detected_object_feature_remover/input/objects_with_feature)"/>
<arg name="output" value="$(var detected_object_feature_remover/output/objects)"/>
</include>
</group>
</group>
Expand Down
Loading

0 comments on commit 4bfb753

Please sign in to comment.