mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-09-13 03:30:18 +08:00
feat: add point cloud decimation filter factor parameter
This commit is contained in:
@@ -587,6 +587,7 @@ class OBCameraNode {
|
||||
rclcpp::Publisher<sensor_msgs::msg::PointCloud2>::SharedPtr depth_cloud_pub_;
|
||||
bool enable_point_cloud_ = true;
|
||||
bool enable_colored_point_cloud_ = false;
|
||||
int point_cloud_decimation_filter_factor_ = 1;
|
||||
std::recursive_mutex point_cloud_mutex_;
|
||||
|
||||
orbbec_camera_msgs::msg::DeviceInfo device_info_;
|
||||
|
||||
@@ -81,6 +81,7 @@ def generate_launch_description():
|
||||
DeclareLaunchArgument('uvc_backend', default_value='libuvc'),#libuvc or v4l2
|
||||
DeclareLaunchArgument('point_cloud_qos', default_value='default'),
|
||||
DeclareLaunchArgument('enable_point_cloud', default_value='true'),
|
||||
DeclareLaunchArgument('point_cloud_decimation_filter_factor', default_value='1'),
|
||||
DeclareLaunchArgument('enable_colored_point_cloud', default_value='false'),
|
||||
DeclareLaunchArgument('cloud_frame_id', default_value=''),
|
||||
DeclareLaunchArgument('connection_delay', default_value='10'),
|
||||
|
||||
@@ -1779,6 +1779,7 @@ void OBCameraNode::getParameters() {
|
||||
setAndGetNodeParameter<std::string>(color_info_url_, "color_info_url", "");
|
||||
setAndGetNodeParameter<bool>(enable_colored_point_cloud_, "enable_colored_point_cloud", false);
|
||||
setAndGetNodeParameter<bool>(enable_point_cloud_, "enable_point_cloud", false);
|
||||
setAndGetNodeParameter<int>(point_cloud_decimation_filter_factor_, "point_cloud_decimation_filter_factor", 1);
|
||||
setAndGetNodeParameter<std::string>(point_cloud_qos_, "point_cloud_qos", "default");
|
||||
setAndGetNodeParameter<bool>(enable_d2c_viewer_, "enable_d2c_viewer", false);
|
||||
setAndGetNodeParameter<std::string>(disparity_to_depth_mode_, "disparity_to_depth_mode", "HW");
|
||||
@@ -2404,6 +2405,7 @@ void OBCameraNode::publishDepthPointCloud(const std::shared_ptr<ob::FrameSet> &f
|
||||
float depth_scale = depth_frame->getValueScale();
|
||||
depth_point_cloud_filter_.setPositionDataScaled(depth_scale);
|
||||
depth_point_cloud_filter_.setCreatePointFormat(OB_FORMAT_POINT);
|
||||
depth_point_cloud_filter_.setDecimationFactor(point_cloud_decimation_filter_factor_);
|
||||
auto result_frame = depth_point_cloud_filter_.process(depth_frame);
|
||||
if (!result_frame) {
|
||||
RCLCPP_ERROR_STREAM(logger_, "Failed to process depth frame");
|
||||
@@ -2515,6 +2517,7 @@ void OBCameraNode::publishColoredPointCloud(const std::shared_ptr<ob::FrameSet>
|
||||
auto depth_scale = depth_frame->getValueScale();
|
||||
color_point_cloud_filter_.setPositionDataScaled(depth_scale);
|
||||
color_point_cloud_filter_.setCreatePointFormat(OB_FORMAT_RGB_POINT);
|
||||
color_point_cloud_filter_.setDecimationFactor(point_cloud_decimation_filter_factor_);
|
||||
auto result_frame = color_point_cloud_filter_.process(frame_set);
|
||||
if (!result_frame) {
|
||||
RCLCPP_ERROR_STREAM(logger_, "Failed to process depth frame");
|
||||
|
||||
Reference in New Issue
Block a user