Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 5d07d4b

Browse files
YoshiRiN-Eiki
authored andcommittedJun 10, 2024
feat(pointcloud_preprocessor): make concatenate node to publish pointclouds in sensor frame (autowarefoundation#6586)
* feat: make concatenate node to publish pointclouds in sensor frame Signed-off-by: yoshiri <yoshiyoshidetteiu@gmail.com> * chore: disable frame transform if not necessary Signed-off-by: yoshiri <yoshiyoshidetteiu@gmail.com> --------- Signed-off-by: yoshiri <yoshiyoshidetteiu@gmail.com>
1 parent 23d6755 commit 5d07d4b

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed
 

‎sensing/pointcloud_preprocessor/include/pointcloud_preprocessor/concatenate_data/concatenate_and_time_sync_nodelet.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class PointCloudConcatenateDataSynchronizerComponent : public rclcpp::Node
126126
double timeout_sec_ = 0.1;
127127

128128
bool publish_synchronized_pointcloud_;
129+
bool keep_input_frame_in_synchronized_pointcloud_;
129130
std::string synchronized_pointcloud_postfix_;
130131

131132
std::set<std::string> not_subscribed_topic_names_;

‎sensing/pointcloud_preprocessor/src/concatenate_data/concatenate_and_time_sync_nodelet.cpp

+20-5
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ PointCloudConcatenateDataSynchronizerComponent::PointCloudConcatenateDataSynchro
112112
}
113113

114114
// Check if publish synchronized pointcloud
115-
publish_synchronized_pointcloud_ = declare_parameter("publish_synchronized_pointcloud", false);
115+
publish_synchronized_pointcloud_ = declare_parameter("publish_synchronized_pointcloud", true);
116+
keep_input_frame_in_synchronized_pointcloud_ =
117+
declare_parameter("keep_input_frame_in_synchronized_pointcloud", true);
116118
synchronized_pointcloud_postfix_ =
117119
declare_parameter("synchronized_pointcloud_postfix", "pointcloud");
118120
}
@@ -397,10 +399,23 @@ PointCloudConcatenateDataSynchronizerComponent::combineClouds(
397399
pcl::concatenatePointCloud(
398400
*concat_cloud_ptr, *transformed_delay_compensated_cloud_ptr, *concat_cloud_ptr);
399401
}
400-
// gather transformed clouds
401-
transformed_delay_compensated_cloud_ptr->header.stamp = oldest_stamp;
402-
transformed_delay_compensated_cloud_ptr->header.frame_id = output_frame_;
403-
transformed_clouds[e.first] = transformed_delay_compensated_cloud_ptr;
402+
// convert to original sensor frame if necessary
403+
bool need_transform_to_sensor_frame = (e.second->header.frame_id != output_frame_);
404+
if (keep_input_frame_in_synchronized_pointcloud_ && need_transform_to_sensor_frame) {
405+
sensor_msgs::msg::PointCloud2::SharedPtr transformed_cloud_ptr_in_sensor_frame(
406+
new sensor_msgs::msg::PointCloud2());
407+
pcl_ros::transformPointCloud(
408+
(std::string)e.second->header.frame_id, *transformed_delay_compensated_cloud_ptr,
409+
*transformed_cloud_ptr_in_sensor_frame, *tf2_buffer_);
410+
transformed_cloud_ptr_in_sensor_frame->header.stamp = oldest_stamp;
411+
transformed_cloud_ptr_in_sensor_frame->header.frame_id = e.second->header.frame_id;
412+
transformed_clouds[e.first] = transformed_cloud_ptr_in_sensor_frame;
413+
} else {
414+
transformed_delay_compensated_cloud_ptr->header.stamp = oldest_stamp;
415+
transformed_delay_compensated_cloud_ptr->header.frame_id = output_frame_;
416+
transformed_clouds[e.first] = transformed_delay_compensated_cloud_ptr;
417+
}
418+
404419
} else {
405420
not_subscribed_topic_names_.insert(e.first);
406421
}

0 commit comments

Comments
 (0)
Please sign in to comment.