Skip to content

Commit ff43d3c

Browse files
committed
fix(ground_segmentation): add field select option
Signed-off-by: badai-nguyen <dai.nguyen@tier4.jp>
1 parent c75c92a commit ff43d3c

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

launch/tier4_perception_launch/launch/obstacle_segmentation/ground_segmentation/ground_segmentation.launch.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ def create_additional_pipeline(self, lidar_name):
118118
("output", f"{lidar_name}/pointcloud"),
119119
],
120120
parameters=[
121-
self.ground_segmentation_param[f"{lidar_name}_ground_filter"]["parameters"]
121+
self.ground_segmentation_param[f"{lidar_name}_ground_filter"]["parameters"],
122+
{"input_frame": "base_link"},
123+
{"output_frame": "base_link"},
124+
{"output_intensity_field": LaunchConfiguration("output_intensity_field")},
122125
],
123126
extra_arguments=[
124127
{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}
@@ -268,6 +271,7 @@ def create_common_pipeline(self, input_topic, output_topic):
268271
self.vehicle_info,
269272
{"input_frame": "base_link"},
270273
{"output_frame": "base_link"},
274+
{"output_intensity_field": LaunchConfiguration("output_intensity_field")},
271275
],
272276
extra_arguments=[
273277
{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}
@@ -563,6 +567,7 @@ def add_launch_arg(name: str, default_value=None):
563567
add_launch_arg("use_pointcloud_container", "False")
564568
add_launch_arg("container_name", "perception_pipeline_container")
565569
add_launch_arg("input/pointcloud", "/sensing/lidar/concatenated/pointcloud")
570+
add_launch_arg("output_intensity_field", "False")
566571

567572
set_container_executable = SetLaunchConfiguration(
568573
"container_executable",

perception/ground_segmentation/include/ground_segmentation/scan_ground_filter_nodelet.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ class ScanGroundFilterComponent : public pointcloud_preprocessor::Filter
196196
bool use_recheck_ground_cluster_; // to enable recheck ground cluster
197197
bool use_lowest_point_; // to select lowest point for reference in recheck ground cluster,
198198
// otherwise select middle point
199+
int output_field_num_{3};
199200
size_t radial_dividers_num_;
200201
VehicleInfo vehicle_info_;
201202

perception/ground_segmentation/src/scan_ground_filter_nodelet.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ ScanGroundFilterComponent::ScanGroundFilterComponent(const rclcpp::NodeOptions &
5858
use_virtual_ground_point_ = declare_parameter<bool>("use_virtual_ground_point");
5959
use_recheck_ground_cluster_ = declare_parameter<bool>("use_recheck_ground_cluster");
6060
use_lowest_point_ = declare_parameter<bool>("use_lowest_point");
61+
if (declare_parameter<bool>("output_intensity_field")) {
62+
output_field_num_ = 4;
63+
} else {
64+
output_field_num_ = 3;
65+
}
6166
radial_dividers_num_ = std::ceil(2.0 * M_PI / radial_divider_angle_rad_);
6267
vehicle_info_ = VehicleInfoUtil(*this).getVehicleInfo();
6368

@@ -610,7 +615,7 @@ void ScanGroundFilterComponent::faster_filter(
610615
output.row_step = no_ground_indices.indices.size() * input->point_step;
611616
output.data.resize(output.row_step);
612617
output.width = no_ground_indices.indices.size();
613-
output.fields.assign(input->fields.begin(), input->fields.begin() + 4);
618+
output.fields.assign(input->fields.begin(), input->fields.begin() + output_field_num_);
614619
output.is_dense = true;
615620
output.height = input->height;
616621
output.is_bigendian = input->is_bigendian;

0 commit comments

Comments
 (0)