Update skip color implementation

This commit is contained in:
jj
2025-06-04 16:01:47 +08:00
parent eb02ef3e44
commit 290699b4db
2 changed files with 4 additions and 29 deletions
@@ -653,16 +653,12 @@ class OBCameraNode {
int laser_index0_ir_brightness_ = 60; int laser_index0_ir_brightness_ = 60;
int laser_index0_ir_ae_max_exposure_ = 17000; int laser_index0_ir_ae_max_exposure_ = 17000;
int interleave_skip_color_index_ = 1;
int interleave_skip_depth_index_ = 1;
double delta_duration_us_ = 1000.0; double delta_duration_us_ = 1000.0;
int delta_fps_ = 2; int delta_fps_ = 2;
VideoStreamInfo color_stream_info_ = {OB_FRAME_COLOR, 0}; VideoStreamInfo color_stream_info_ = {OB_FRAME_COLOR, 0};
VideoStreamInfo depth_stream_info_ = {OB_FRAME_DEPTH, 0}; VideoStreamInfo depth_stream_info_ = {OB_FRAME_DEPTH, 0};
VideoStreamInfo left_ir_stream_info_ = {OB_FRAME_IR_LEFT, 0}; VideoStreamInfo left_ir_stream_info_ = {OB_FRAME_IR_LEFT, 0};
VideoStreamInfo right_ir_stream_info_ = {OB_FRAME_IR_RIGHT, 0}; VideoStreamInfo right_ir_stream_info_ = {OB_FRAME_IR_RIGHT, 0};
uint64_t left_last_time=0; uint64_t depth_last_time_ = 0;
uint64_t right_last_time=0;
}; };
} // namespace orbbec_camera } // namespace orbbec_camera
+3 -24
View File
@@ -2165,11 +2165,10 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
std::shared_ptr<ob::VideoFrame> video_frame; std::shared_ptr<ob::VideoFrame> video_frame;
if (frame->getType() == OB_FRAME_COLOR) { if (frame->getType() == OB_FRAME_COLOR) {
if (interleave_frame_enable_ && interleave_skip_enable_) { if (interleave_frame_enable_ && interleave_skip_enable_) {
interleave_skip_color_index_++; if (std::abs(static_cast<int64_t>(getFrameTimestampUs(frame)) -
if (interleave_skip_color_index_ % 2 == 0) { static_cast<int64_t>(depth_last_time_)) < 4000) {
return; return;
} }
// updateStreamInfo(frame, color_stream_info_);
} }
video_frame = frame->as<ob::ColorFrame>(); video_frame = frame->as<ob::ColorFrame>();
} else if (frame->getType() == OB_FRAME_DEPTH) { } else if (frame->getType() == OB_FRAME_DEPTH) {
@@ -2177,6 +2176,7 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
if (interleave_frame_enable_ && interleave_skip_enable_) { if (interleave_frame_enable_ && interleave_skip_enable_) {
if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) == if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) ==
interleave_skip_index_) { interleave_skip_index_) {
depth_last_time_ = getFrameTimestampUs(frame);
return; return;
} }
} }
@@ -2188,27 +2188,6 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) != if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_LASER_POWER_MODE) !=
interleave_skip_index_) { interleave_skip_index_) {
return; return;
} else {
if (frame->getType() == OB_FRAME_IR_LEFT) {
if ((getFrameTimestampUs(frame) - left_last_time) > 37000) {
RCLCPP_WARN_STREAM(logger_,
"left this FrameTimestampUs: " << (getFrameTimestampUs(frame)));
RCLCPP_WARN_STREAM(logger_, "left last FrameTimestampUs: " << (left_last_time));
RCLCPP_WARN_STREAM(logger_, "left-between current and previous fram "
<< (getFrameTimestampUs(frame) - left_last_time));
}
left_last_time = getFrameTimestampUs(frame);
}
if (frame->getType() == OB_FRAME_IR_RIGHT) {
if ((getFrameTimestampUs(frame) - right_last_time) > 37000) {
RCLCPP_WARN_STREAM(logger_,
"right this FrameTimestampUs: " << (getFrameTimestampUs(frame)));
RCLCPP_WARN_STREAM(logger_, "right last FrameTimestampUs: " << (right_last_time));
RCLCPP_WARN_STREAM(logger_, "right-between current and previous fram "
<< (getFrameTimestampUs(frame) - right_last_time));
}
right_last_time = getFrameTimestampUs(frame);
}
} }
} }
} else { } else {