Skip to content

Commit 559f873

Browse files
badai-nguyenmiursh
andauthored
fix(euclidean_cluster): add disuse downsample in clustering pipeline (#4385)
* fix: add unuse downsample launch option Signed-off-by: badai-nguyen <dai.nguyen@tier4.jp> * fix: add default param for downsample option Signed-off-by: badai-nguyen <dai.nguyen@tier4.jp> * fix typo Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> --------- Signed-off-by: badai-nguyen <dai.nguyen@tier4.jp> Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> Co-authored-by: Shunsuke Miura <shunsuke.miura@tier4.jp>
1 parent 0594d0d commit 559f873

6 files changed

+93
-13
lines changed

launch/tier4_perception_launch/launch/object_recognition/detection/camera_lidar_fusion_based_detection.launch.xml

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<arg name="image_number" default="1" description="choose image raw number(1-8)"/>
3131
<arg name="lidar_detection_model" default="centerpoint" description="options: `centerpoint`, `apollo`, `pointpainting`, `clustering`"/>
3232
<arg name="use_pointcloud_map" default="true" description="use pointcloud map in detection"/>
33+
<arg name="use_downsample_pointcloud" default="true" description="use downsample pointcloud in perception"/>
3334
<arg name="use_object_filter" default="true" description="use object filter"/>
3435
<arg name="use_pointcloud_container" default="false" description="use pointcloud container for detection preprocessor"/>
3536
<arg name="container_name" default="pointcloud_container"/>
@@ -73,6 +74,7 @@
7374
<arg name="input_pointcloud" value="$(var clustering/input/pointcloud)"/>
7475
<arg name="output_clusters" value="clusters"/>
7576
<arg name="use_pointcloud_map" value="false"/>
77+
<arg name="use_downsample_pointcloud" value="$(var use_downsample_pointcloud)"/>
7678
</include>
7779
</group>
7880

launch/tier4_perception_launch/launch/object_recognition/detection/camera_lidar_radar_fusion_based_detection.launch.xml

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<arg name="input/pointcloud"/>
55
<arg name="lidar_detection_model" default="centerpoint" description="options: `centerpoint`, `apollo`, `clustering`"/>
66
<arg name="use_pointcloud_map" default="true" description="use pointcloud map in detection"/>
7+
<arg name="use_downsample_pointcloud" default="true" description="use downsample pointcloud in perception"/>
78
<arg name="use_object_filter" default="true" description="use object filter"/>
89
<arg name="use_pointcloud_container" default="false" description="use pointcloud container for detection preprocessor"/>
910
<arg name="container_name" default="pointcloud_container"/>
@@ -59,6 +60,7 @@
5960
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
6061
<arg name="container_name" value="$(var container_name)"/>
6162
<arg name="score_threshold" value="$(var score_threshold)"/>
63+
<arg name="use_downsample_pointcloud" value="$(var use_downsample_pointcloud)"/>
6264
</include>
6365
</group>
6466

launch/tier4_perception_launch/launch/object_recognition/detection/lidar_based_detection.launch.xml

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<arg name="output/objects" default="objects"/>
66
<arg name="lidar_detection_model" default="centerpoint" description="options: `centerpoint`, `apollo`, `clustering`"/>
77
<arg name="use_pointcloud_map" default="true" description="use pointcloud map in detection"/>
8+
<arg name="use_downsample_pointcloud" default="true" description="use downsample pointcloud in perception"/>
89
<arg name="use_object_filter" default="true" description="use object filter"/>
910
<arg name="use_pointcloud_container" default="false" description="use pointcloud container for detection preprocessor"/>
1011
<arg name="container_name" default="pointcloud_container"/>
@@ -33,6 +34,7 @@
3334
<arg name="input_pointcloud" value="$(var clustering/input/pointcloud)"/>
3435
<arg name="output_clusters" value="clusters"/>
3536
<arg name="use_pointcloud_map" value="false"/>
37+
<arg name="use_downsample_pointcloud" value="$(var use_downsample_pointcloud)"/>
3638
</include>
3739
</group>
3840

launch/tier4_perception_launch/launch/perception.launch.xml

+2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<arg name="image_number" default="6" description="choose image raw number(1-8)"/>
5959
<arg name="use_vector_map" default="true" description="use vector map in prediction"/>
6060
<arg name="use_pointcloud_map" default="true" description="use pointcloud map in detection"/>
61+
<arg name="use_downsample_pointcloud" default="false" description="use downsample pointcloud in perception"/>
6162
<arg name="use_object_filter" default="true" description="use object filter"/>
6263
<arg
6364
name="use_empty_dynamic_object_publisher"
@@ -145,6 +146,7 @@
145146
<arg name="voxel_grid_param_path" value="$(var object_recognition_detection_voxel_grid_based_euclidean_param_path)"/>
146147
<arg name="voxel_grid_based_euclidean_param_path" value="$(var object_recognition_detection_voxel_grid_based_euclidean_cluster_param_path)"/>
147148
<arg name="use_pointcloud_map" value="$(var use_pointcloud_map)"/>
149+
<arg name="use_downsample_pointcloud" value="$(var use_downsample_pointcloud)"/>
148150
<arg name="use_object_filter" value="$(var use_object_filter)"/>
149151
<arg name="use_pointcloud_container" value="$(var use_pointcloud_container)"/>
150152
<arg name="container_name" value="$(var pointcloud_container_name)"/>

perception/euclidean_cluster/launch/voxel_grid_based_euclidean_cluster.launch.py

+83-13
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@
1616
from launch.actions import DeclareLaunchArgument
1717
from launch.actions import OpaqueFunction
1818
from launch.conditions import IfCondition
19-
from launch.conditions import UnlessCondition
19+
from launch.substitutions import AndSubstitution
2020
from launch.substitutions import AnonName
2121
from launch.substitutions import LaunchConfiguration
22+
from launch.substitutions import NotSubstitution
2223
from launch_ros.actions import ComposableNodeContainer
2324
from launch_ros.actions import LoadComposableNodes
2425
from launch_ros.descriptions import ComposableNode
@@ -164,7 +165,7 @@ def load_composable_node_param(param_path):
164165
)
165166

166167
# set euclidean cluster as a component
167-
euclidean_cluster_component = ComposableNode(
168+
use_downsample_euclidean_cluster_component = ComposableNode(
168169
package=pkg,
169170
namespace=ns,
170171
plugin="euclidean_cluster::VoxelGridBasedEuclideanClusterNode",
@@ -176,40 +177,108 @@ def load_composable_node_param(param_path):
176177
parameters=[load_composable_node_param("voxel_grid_based_euclidean_param_path")],
177178
)
178179

180+
use_map_disuse_downsample_euclidean_component = ComposableNode(
181+
package=pkg,
182+
namespace=ns,
183+
plugin="euclidean_cluster::VoxelGridBasedEuclideanClusterNode",
184+
name="euclidean_cluster",
185+
remappings=[
186+
("input", "map_filter/pointcloud"),
187+
("output", LaunchConfiguration("output_clusters")),
188+
],
189+
parameters=[load_composable_node_param("voxel_grid_based_euclidean_param_path")],
190+
)
191+
disuse_map_disuse_downsample_euclidean_component = ComposableNode(
192+
package=pkg,
193+
namespace=ns,
194+
plugin="euclidean_cluster::VoxelGridBasedEuclideanClusterNode",
195+
name="euclidean_cluster",
196+
remappings=[
197+
("input", LaunchConfiguration("input_pointcloud")),
198+
("output", LaunchConfiguration("output_clusters")),
199+
],
200+
parameters=[load_composable_node_param("voxel_grid_based_euclidean_param_path")],
201+
)
202+
179203
container = ComposableNodeContainer(
180204
name="euclidean_cluster_container",
181205
package="rclcpp_components",
182206
namespace=ns,
183207
executable="component_container",
184-
composable_node_descriptions=[
185-
voxel_grid_filter_component,
186-
outlier_filter_component,
187-
downsample_concat_component,
188-
euclidean_cluster_component,
189-
],
208+
composable_node_descriptions=[],
190209
output="screen",
191210
)
192211

193-
use_map_loader = LoadComposableNodes(
212+
use_map_use_downsample_loader = LoadComposableNodes(
194213
composable_node_descriptions=[
195214
compare_map_filter_component,
196215
use_map_short_range_crop_box_filter_component,
197216
use_map_long_range_crop_box_filter_component,
217+
voxel_grid_filter_component,
218+
outlier_filter_component,
219+
downsample_concat_component,
220+
use_downsample_euclidean_cluster_component,
198221
],
199222
target_container=container,
200-
condition=IfCondition(LaunchConfiguration("use_pointcloud_map")),
223+
condition=IfCondition(
224+
AndSubstitution(
225+
LaunchConfiguration("use_pointcloud_map"),
226+
LaunchConfiguration("use_downsample_pointcloud"),
227+
)
228+
),
201229
)
202230

203-
disuse_map_loader = LoadComposableNodes(
231+
disuse_map_use_downsample_loader = LoadComposableNodes(
204232
composable_node_descriptions=[
205233
disuse_map_short_range_crop_box_filter_component,
206234
disuse_map_long_range_crop_box_filter_component,
235+
voxel_grid_filter_component,
236+
outlier_filter_component,
237+
downsample_concat_component,
238+
use_downsample_euclidean_cluster_component,
207239
],
208240
target_container=container,
209-
condition=UnlessCondition(LaunchConfiguration("use_pointcloud_map")),
241+
condition=IfCondition(
242+
AndSubstitution(
243+
NotSubstitution(LaunchConfiguration("use_pointcloud_map")),
244+
LaunchConfiguration("use_downsample_pointcloud"),
245+
)
246+
),
210247
)
211248

212-
return [container, use_map_loader, disuse_map_loader]
249+
use_map_disuse_downsample_loader = LoadComposableNodes(
250+
composable_node_descriptions=[
251+
compare_map_filter_component,
252+
use_map_disuse_downsample_euclidean_component,
253+
],
254+
target_container=container,
255+
condition=IfCondition(
256+
AndSubstitution(
257+
(LaunchConfiguration("use_pointcloud_map")),
258+
NotSubstitution(LaunchConfiguration("use_downsample_pointcloud")),
259+
)
260+
),
261+
)
262+
263+
disuse_map_disuse_downsample_loader = LoadComposableNodes(
264+
composable_node_descriptions=[
265+
disuse_map_disuse_downsample_euclidean_component,
266+
],
267+
target_container=container,
268+
condition=IfCondition(
269+
AndSubstitution(
270+
NotSubstitution(LaunchConfiguration("use_pointcloud_map")),
271+
NotSubstitution(LaunchConfiguration("use_downsample_pointcloud")),
272+
)
273+
),
274+
)
275+
return [
276+
container,
277+
use_map_use_downsample_loader,
278+
disuse_map_use_downsample_loader,
279+
use_map_disuse_downsample_loader,
280+
disuse_map_disuse_downsample_loader,
281+
]
213282

214283

215284
def generate_launch_description():
@@ -222,6 +291,7 @@ def add_launch_arg(name: str, default_value=None):
222291
add_launch_arg("input_map", "/map/pointcloud_map"),
223292
add_launch_arg("output_clusters", "clusters"),
224293
add_launch_arg("use_pointcloud_map", "false"),
294+
add_launch_arg("use_downsample_pointcloud", "false"),
225295
add_launch_arg(
226296
"voxel_grid_param_path",
227297
[

perception/euclidean_cluster/launch/voxel_grid_based_euclidean_cluster.launch.xml

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<arg name="input_map" default="/map/pointcloud_map"/>
55
<arg name="output_clusters" default="clusters"/>
66
<arg name="use_pointcloud_map" default="false"/>
7+
<arg name="use_downsample_pointcloud" default="false"/>
78
<arg name="voxel_grid_param_path" default="$(find-pkg-share euclidean_cluster)/config/voxel_grid.param.yaml"/>
89
<arg name="compare_map_param_path" default="$(find-pkg-share euclidean_cluster)/config/compare_map.param.yaml"/>
910
<arg name="outlier_param_path" default="$(find-pkg-share euclidean_cluster)/config/outlier.param.yaml"/>
@@ -14,6 +15,7 @@
1415
<arg name="input_map" value="$(var input_map)"/>
1516
<arg name="output_clusters" value="$(var output_clusters)"/>
1617
<arg name="use_pointcloud_map" value="$(var use_pointcloud_map)"/>
18+
<arg name="use_downsample_pointcloud" value="$(var use_downsample_pointcloud)"/>
1719
<arg name="voxel_grid_param_path" value="$(var voxel_grid_param_path)"/>
1820
<arg name="compare_map_param_path" value="$(var compare_map_param_path)"/>
1921
<arg name="outlier_param_path" value="$(var outlier_param_path)"/>

0 commit comments

Comments
 (0)