@@ -69,8 +69,8 @@ OBCameraNode::OBCameraNode(rclcpp::Node *node, std::shared_ptr<ob::Device> devic
6969 rgb_buffer_ = new uint8_t [width_[COLOR] * height_[COLOR] * 3 ];
7070 }
7171 if (enable_colored_point_cloud_ && enable_stream_[DEPTH] && enable_stream_[COLOR]) {
72- rgb_pint_cloud_buffer_size_ = width_[COLOR] * height_[COLOR] * sizeof (OBColorPoint);
73- rgb_pint_cloud_buffer_ = new uint8_t [rgb_pint_cloud_buffer_size_ ];
72+ rgb_point_cloud_buffer_size_ = width_[COLOR] * height_[COLOR] * sizeof (OBColorPoint);
73+ rgb_point_cloud_buffer_ = new uint8_t [rgb_point_cloud_buffer_size_ ];
7474 xy_table_data_size_ = width_[DEPTH] * height_[DEPTH] * 2 ;
7575 xy_table_data_ = new float [xy_table_data_size_];
7676 }
@@ -115,9 +115,9 @@ void OBCameraNode::clean() noexcept {
115115 delete[] rgb_buffer_;
116116 rgb_buffer_ = nullptr ;
117117 }
118- if (rgb_pint_cloud_buffer_ ) {
119- delete[] rgb_pint_cloud_buffer_ ;
120- rgb_pint_cloud_buffer_ = nullptr ;
118+ if (rgb_point_cloud_buffer_ ) {
119+ delete[] rgb_point_cloud_buffer_ ;
120+ rgb_point_cloud_buffer_ = nullptr ;
121121 }
122122 if (xy_table_data_) {
123123 delete[] xy_table_data_;
@@ -1216,6 +1216,9 @@ void OBCameraNode::publishDepthPointCloud(const std::shared_ptr<ob::FrameSet> &f
12161216 }
12171217 CHECK_NOTNULL (pipeline_);
12181218 auto camera_params = pipeline_->getCameraParam ();
1219+ if (depth_registration_) {
1220+ camera_params.depthIntrinsic = camera_params.rgbIntrinsic ;
1221+ }
12191222 depth_point_cloud_filter_.setCameraParam (camera_params);
12201223 float depth_scale = depth_frame->getValueScale ();
12211224 depth_point_cloud_filter_.setPositionDataScaled (depth_scale);
@@ -1336,15 +1339,15 @@ void OBCameraNode::publishColoredPointCloud(const std::shared_ptr<ob::FrameSet>
13361339
13371340 const auto *depth_data = (uint8_t *)depth_frame->data ();
13381341 const auto *color_data = (uint8_t *)(rgb_buffer_);
1339- CHECK_NOTNULL (rgb_pint_cloud_buffer_ );
1342+ CHECK_NOTNULL (rgb_point_cloud_buffer_ );
13401343 uint32_t point_cloud_buffer_size = color_width * color_height * sizeof (OBColorPoint);
1341- if (point_cloud_buffer_size > rgb_pint_cloud_buffer_size_ ) {
1342- delete[] rgb_pint_cloud_buffer_ ;
1343- rgb_pint_cloud_buffer_ = new uint8_t [point_cloud_buffer_size];
1344- rgb_pint_cloud_buffer_size_ = point_cloud_buffer_size;
1344+ if (point_cloud_buffer_size > rgb_point_cloud_buffer_size_ ) {
1345+ delete[] rgb_point_cloud_buffer_ ;
1346+ rgb_point_cloud_buffer_ = new uint8_t [point_cloud_buffer_size];
1347+ rgb_point_cloud_buffer_size_ = point_cloud_buffer_size;
13451348 }
1346- memset (rgb_pint_cloud_buffer_ , 0 , rgb_pint_cloud_buffer_size_ );
1347- auto *point_cloud = (OBColorPoint *)rgb_pint_cloud_buffer_ ;
1349+ memset (rgb_point_cloud_buffer_ , 0 , rgb_point_cloud_buffer_size_ );
1350+ auto *point_cloud = (OBColorPoint *)rgb_point_cloud_buffer_ ;
13481351 ob::CoordinateTransformHelper::transformationDepthToRGBDPointCloud (&(*xy_tables_), depth_data,
13491352 color_data, point_cloud);
13501353 auto point_cloud_msg = std::make_unique<sensor_msgs::msg::PointCloud2>();
0 commit comments