diff --git a/aip_x2_gen2_launch/launch/hesai_OT128.launch.xml b/aip_x2_gen2_launch/launch/hesai_OT128.launch.xml index e8881a1f..da6614be 100644 --- a/aip_x2_gen2_launch/launch/hesai_OT128.launch.xml +++ b/aip_x2_gen2_launch/launch/hesai_OT128.launch.xml @@ -31,6 +31,11 @@ + + + + + @@ -64,6 +69,9 @@ + + + diff --git a/aip_x2_gen2_launch/launch/hesai_QT128.launch.xml b/aip_x2_gen2_launch/launch/hesai_QT128.launch.xml index 59df827e..2f5a8adc 100644 --- a/aip_x2_gen2_launch/launch/hesai_QT128.launch.xml +++ b/aip_x2_gen2_launch/launch/hesai_QT128.launch.xml @@ -32,6 +32,11 @@ + + + + + @@ -64,5 +69,9 @@ + + + + diff --git a/aip_x2_gen2_launch/launch/lidar.launch.xml b/aip_x2_gen2_launch/launch/lidar.launch.xml index 2763a2cc..fe1213a9 100644 --- a/aip_x2_gen2_launch/launch/lidar.launch.xml +++ b/aip_x2_gen2_launch/launch/lidar.launch.xml @@ -13,6 +13,14 @@ + + + + + + + @@ -44,6 +52,9 @@ + + + @@ -80,6 +91,9 @@ + + + @@ -189,6 +203,9 @@ + + + @@ -225,6 +242,9 @@ + + + diff --git a/aip_x2_gen2_launch/launch/nebula_node_container.launch.py b/aip_x2_gen2_launch/launch/nebula_node_container.launch.py index 98336e33..f4447198 100644 --- a/aip_x2_gen2_launch/launch/nebula_node_container.launch.py +++ b/aip_x2_gen2_launch/launch/nebula_node_container.launch.py @@ -161,7 +161,13 @@ def str2vector(string): plugin="pointcloud_preprocessor::CropBoxFilterComponent", name="crop_box_filter_self", remappings=[ - ("input", "pointcloud_raw_ex"), + ("input", + ( + "ring_filtered/pointcloud" + if LaunchConfiguration("enable_ring_filter").perform(context) == "true" + else "pointcloud_raw_ex" + ), + ), ("output", "self_cropped/pointcloud_ex"), ], parameters=[cropbox_parameters], @@ -280,6 +286,23 @@ def str2vector(string): extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) + ring_filter_component = ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::RingFilterComponent", + name="ring_filter", + remappings=[ + ("input", "pointcloud_raw_ex"), + ("output", "ring_filtered/pointcloud"), + ], + parameters=[ + { + "ring_interval": LaunchConfiguration("ring_interval"), + "remove_interval_ring": LaunchConfiguration("remove_interval_ring"), + } + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + container = ComposableNodeContainer( name="nebula_node_container", namespace="pointcloud_preprocessor", @@ -313,11 +336,18 @@ def str2vector(string): condition=launch.conditions.IfCondition(LaunchConfiguration("enable_blockage_diag")), ) + ring_filter_loader = LoadComposableNodes( + composable_node_descriptions=[ring_filter_component], + target_container=container, + condition=launch.conditions.IfCondition(LaunchConfiguration("enable_ring_filter")), + ) + return [ container, # ring_outlier_filter_loader, dual_return_filter_loader, blockage_diag_loader, + ring_filter_loader, ] @@ -382,6 +412,11 @@ def add_launch_arg(name: str, default_value=None, description=None): add_launch_arg("max_azimuth_deg", "225.0") add_launch_arg("enable_blockage_diag", "true") + # ring filter params + add_launch_arg("enable_ring_filter", "true") + add_launch_arg("ring_interval", "2") + add_launch_arg("remove_interval_ring", "true") + # TODO: remove add_launch_arg("scan_phase", "0.0")