mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-11 06:59:49 +08:00
Setting FRAME_INTERLEAVE_LASER_PATTERN_SYNC must avoid the outgoing flow time point
This commit is contained in:
@@ -545,14 +545,14 @@ void OBCameraNode::setupDepthPostProcessFilter() {
|
|||||||
} else if (filter_name == "NoiseRemovalFilter" && enable_noise_removal_filter_) {
|
} else if (filter_name == "NoiseRemovalFilter" && enable_noise_removal_filter_) {
|
||||||
auto noise_removal_filter = filter->as<ob::NoiseRemovalFilter>();
|
auto noise_removal_filter = filter->as<ob::NoiseRemovalFilter>();
|
||||||
OBNoiseRemovalFilterParams params = noise_removal_filter->getFilterParams();
|
OBNoiseRemovalFilterParams params = noise_removal_filter->getFilterParams();
|
||||||
RCLCPP_INFO_STREAM(logger_, "Default noise removal filter params: "
|
RCLCPP_INFO_STREAM(
|
||||||
<< "disp_diff: " << params.disp_diff
|
logger_, "Default noise removal filter params: " << "disp_diff: " << params.disp_diff
|
||||||
<< ", max_size: " << params.max_size);
|
<< ", max_size: " << params.max_size);
|
||||||
params.disp_diff = noise_removal_filter_min_diff_;
|
params.disp_diff = noise_removal_filter_min_diff_;
|
||||||
params.max_size = noise_removal_filter_max_size_;
|
params.max_size = noise_removal_filter_max_size_;
|
||||||
RCLCPP_INFO_STREAM(logger_, "Set noise removal filter params: "
|
RCLCPP_INFO_STREAM(logger_,
|
||||||
<< "disp_diff: " << params.disp_diff
|
"Set noise removal filter params: " << "disp_diff: " << params.disp_diff
|
||||||
<< ", max_size: " << params.max_size);
|
<< ", max_size: " << params.max_size);
|
||||||
if (noise_removal_filter_min_diff_ != -1 && noise_removal_filter_max_size_ != -1) {
|
if (noise_removal_filter_min_diff_ != -1 && noise_removal_filter_max_size_ != -1) {
|
||||||
noise_removal_filter->setFilterParams(params);
|
noise_removal_filter->setFilterParams(params);
|
||||||
}
|
}
|
||||||
@@ -561,11 +561,11 @@ void OBCameraNode::setupDepthPostProcessFilter() {
|
|||||||
hdr_merge_gain_2_ != -1) {
|
hdr_merge_gain_2_ != -1) {
|
||||||
auto hdr_merge_filter = filter->as<ob::HdrMerge>();
|
auto hdr_merge_filter = filter->as<ob::HdrMerge>();
|
||||||
hdr_merge_filter->enable(true);
|
hdr_merge_filter->enable(true);
|
||||||
RCLCPP_INFO_STREAM(logger_, "Set HDR merge filter params: "
|
RCLCPP_INFO_STREAM(
|
||||||
<< "exposure_1: " << hdr_merge_exposure_1_
|
logger_, "Set HDR merge filter params: " << "exposure_1: " << hdr_merge_exposure_1_
|
||||||
<< ", gain_1: " << hdr_merge_gain_1_
|
<< ", gain_1: " << hdr_merge_gain_1_
|
||||||
<< ", exposure_2: " << hdr_merge_exposure_2_
|
<< ", exposure_2: " << hdr_merge_exposure_2_
|
||||||
<< ", gain_2: " << hdr_merge_gain_2_);
|
<< ", gain_2: " << hdr_merge_gain_2_);
|
||||||
auto config = OBHdrConfig();
|
auto config = OBHdrConfig();
|
||||||
config.enable = true;
|
config.enable = true;
|
||||||
config.exposure_1 = hdr_merge_exposure_1_;
|
config.exposure_1 = hdr_merge_exposure_1_;
|
||||||
@@ -860,24 +860,6 @@ void OBCameraNode::startStreams() {
|
|||||||
colorFrameThread_ = std::make_shared<std::thread>([this]() { onNewColorFrameCallback(); });
|
colorFrameThread_ = std::make_shared<std::thread>([this]() { onNewColorFrameCallback(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// enable interleave frame
|
|
||||||
if ((interleave_ae_mode_ == "hdr") || (interleave_ae_mode_ == "laser")) {
|
|
||||||
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
|
||||||
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
|
||||||
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
|
||||||
<< (interleave_frame_enable_ ? "true" : "false"));
|
|
||||||
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
|
||||||
interleave_frame_enable_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// set interleave larse PATTERN_SYNC_DELAY
|
|
||||||
if ((interleave_ae_mode_ == "laser") &&
|
|
||||||
device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT,
|
|
||||||
OB_PERMISSION_READ_WRITE)) {
|
|
||||||
RCLCPP_INFO_STREAM(logger_, "Setting OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT 0 ");
|
|
||||||
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enable_frame_sync_) {
|
if (enable_frame_sync_) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "Enable frame sync");
|
RCLCPP_INFO_STREAM(logger_, "Enable frame sync");
|
||||||
TRY_EXECUTE_BLOCK(pipeline_->enableFrameSync());
|
TRY_EXECUTE_BLOCK(pipeline_->enableFrameSync());
|
||||||
@@ -885,6 +867,25 @@ void OBCameraNode::startStreams() {
|
|||||||
RCLCPP_INFO_STREAM(logger_, "Disable frame sync");
|
RCLCPP_INFO_STREAM(logger_, "Disable frame sync");
|
||||||
TRY_EXECUTE_BLOCK(pipeline_->disableFrameSync());
|
TRY_EXECUTE_BLOCK(pipeline_->disableFrameSync());
|
||||||
}
|
}
|
||||||
|
// enable interleave frame
|
||||||
|
if ((interleave_ae_mode_ == "hdr") || (interleave_ae_mode_ == "laser")) {
|
||||||
|
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
||||||
|
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
||||||
|
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
||||||
|
interleave_frame_enable_);
|
||||||
|
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
||||||
|
<< (interleave_frame_enable_ ? "true" : "false"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// set interleave larse PATTERN_SYNC_DELAY
|
||||||
|
if ((interleave_ae_mode_ == "laser") && interleave_frame_enable_ &&
|
||||||
|
device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT,
|
||||||
|
OB_PERMISSION_READ_WRITE) &&
|
||||||
|
(sync_mode_str_ == "PRIMARY" || sync_mode_str_ == "SOFTWARE_TRIGGERING")) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT, 0);
|
||||||
|
RCLCPP_INFO_STREAM(logger_, "Setting OB_PROP_FRAME_INTERLEAVE_LASER_PATTERN_SYNC_DELAY_INT 0 ");
|
||||||
|
}
|
||||||
pipeline_started_.store(true);
|
pipeline_started_.store(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2148,7 +2149,6 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
|
|||||||
} else {
|
} else {
|
||||||
memcpy(image.data, video_frame->getData(), video_frame->getDataSize());
|
memcpy(image.data, video_frame->getData(), video_frame->getDataSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stream_index == DEPTH) {
|
if (stream_index == DEPTH) {
|
||||||
auto depth_scale = video_frame->as<ob::DepthFrame>()->getValueScale();
|
auto depth_scale = video_frame->as<ob::DepthFrame>()->getValueScale();
|
||||||
image = image * depth_scale;
|
image = image * depth_scale;
|
||||||
|
|||||||
Reference in New Issue
Block a user