Skip to content

Commit 7edf981

Browse files
committed
Update: Fixed wrong depth point cloud
1 parent e1b106c commit 7edf981

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

orbbec_camera/include/orbbec_camera/ob_camera_node.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -539,12 +539,11 @@ class OBCameraNode {
539539
std::atomic_bool is_camera_node_initialized_{false};
540540
int laser_energy_level_ = -1;
541541
ob::PointCloudFilter depth_point_cloud_filter_;
542-
ob::PointCloudFilter colored_point_cloud_filter_;
543542
std::optional<OBCalibrationParam> calibration_param_;
544543
std::optional<OBXYTables> xy_tables_;
545544
float* xy_table_data_ = nullptr;
546545
uint32_t xy_table_data_size_ = 0;
547-
uint8_t* rgb_pint_cloud_buffer_ = nullptr;
548-
uint32_t rgb_pint_cloud_buffer_size_ = 0;
546+
uint8_t* rgb_point_cloud_buffer_ = nullptr;
547+
uint32_t rgb_point_cloud_buffer_size_ = 0;
549548
};
550549
} // namespace orbbec_camera

orbbec_camera/src/ob_camera_node.cpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)