mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 12:07:46 +08:00
[interleave-larse][modify]:modify interleave larse param
This commit is contained in:
@@ -609,6 +609,8 @@ class OBCameraNode {
|
|||||||
|
|
||||||
// interleave AE
|
// interleave AE
|
||||||
std::string interleave_ae_mode_ = "hdr"; // hdr or laser
|
std::string interleave_ae_mode_ = "hdr"; // hdr or laser
|
||||||
bool enable_depth_interleave_frame_ = false;
|
bool interleave_frame_enable_ = false;
|
||||||
|
bool interleave_skip_enable_ = false;
|
||||||
|
int interleave_skip_index_ = 1;
|
||||||
};
|
};
|
||||||
} // namespace orbbec_camera
|
} // namespace orbbec_camera
|
||||||
|
|||||||
+3
-1
@@ -182,7 +182,9 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('enable_heartbeat', default_value='false'),
|
DeclareLaunchArgument('enable_heartbeat', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_hardware_reset', default_value='false'),
|
DeclareLaunchArgument('enable_hardware_reset', default_value='false'),
|
||||||
DeclareLaunchArgument('interleave_ae_mode', default_value='laser'), # 'hdr' or 'laser'
|
DeclareLaunchArgument('interleave_ae_mode', default_value='laser'), # 'hdr' or 'laser'
|
||||||
DeclareLaunchArgument('enable_depth_interleave_frame', default_value='false'),
|
DeclareLaunchArgument('interleave_frame_enable', default_value='true'),
|
||||||
|
DeclareLaunchArgument('interleave_skip_enable', default_value='true'),
|
||||||
|
DeclareLaunchArgument('interleave_skip_index', default_value='1'), # 0:partern ir 1:flood ir
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_params(context, args):
|
def get_params(context, args):
|
||||||
@@ -182,7 +182,9 @@ def generate_launch_description():
|
|||||||
DeclareLaunchArgument('enable_heartbeat', default_value='false'),
|
DeclareLaunchArgument('enable_heartbeat', default_value='false'),
|
||||||
DeclareLaunchArgument('enable_hardware_reset', default_value='false'),
|
DeclareLaunchArgument('enable_hardware_reset', default_value='false'),
|
||||||
DeclareLaunchArgument('interleave_ae_mode', default_value='laser'), # 'hdr' or 'laser'
|
DeclareLaunchArgument('interleave_ae_mode', default_value='laser'), # 'hdr' or 'laser'
|
||||||
DeclareLaunchArgument('enable_depth_interleave_frame', default_value='true'),
|
DeclareLaunchArgument('interleave_frame_enable', default_value='true'),
|
||||||
|
DeclareLaunchArgument('interleave_skip_enable', default_value='false'),
|
||||||
|
DeclareLaunchArgument('interleave_skip_index', default_value='1'), # 0:partern ir 1:flood ir
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_params(context, args):
|
def get_params(context, args):
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ def generate_launch_description():
|
|||||||
launch_file_dir = os.path.join(package_dir, 'launch')
|
launch_file_dir = os.path.join(package_dir, 'launch')
|
||||||
launch1_include = IncludeLaunchDescription(
|
launch1_include = IncludeLaunchDescription(
|
||||||
PythonLaunchDescriptionSource(
|
PythonLaunchDescriptionSource(
|
||||||
os.path.join(launch_file_dir, 'gemini_330_series_interleave_laser_g335Lg.launch.py')
|
os.path.join(launch_file_dir, 'gemini_330_series_interleave_laser_g335.launch.py')
|
||||||
),
|
),
|
||||||
launch_arguments={
|
launch_arguments={
|
||||||
'camera_name': 'camera_01',
|
'camera_name': 'camera_01',
|
||||||
'usb_port': '2-1-2',
|
'usb_port': '2-1-2',
|
||||||
'device_num': '2',
|
'device_num': '2',
|
||||||
'sync_mode': 'primary'
|
'sync_mode': 'PRIMARY'
|
||||||
}.items()
|
}.items()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ def generate_launch_description():
|
|||||||
'camera_name': 'camera_02',
|
'camera_name': 'camera_02',
|
||||||
'usb_port': '2-2-3',
|
'usb_port': '2-2-3',
|
||||||
'device_num': '2',
|
'device_num': '2',
|
||||||
'sync_mode': 'hardware_triggering'
|
'sync_mode': 'SECONDARY_SYNCED'
|
||||||
}.items()
|
}.items()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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(
|
RCLCPP_INFO_STREAM(logger_, "Default noise removal filter params: "
|
||||||
logger_, "Default noise removal filter params: " << "disp_diff: " << params.disp_diff
|
<< "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_,
|
RCLCPP_INFO_STREAM(logger_, "Set noise removal filter params: "
|
||||||
"Set noise removal filter params: " << "disp_diff: " << params.disp_diff
|
<< "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(
|
RCLCPP_INFO_STREAM(logger_, "Set HDR merge filter params: "
|
||||||
logger_, "Set HDR merge filter params: " << "exposure_1: " << hdr_merge_exposure_1_
|
<< "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_;
|
||||||
@@ -814,7 +814,8 @@ int OBCameraNode::init_interleave_laser_param() {
|
|||||||
device_->setIntProperty(OB_PROP_DEPTH_EXPOSURE_INT, 3000);
|
device_->setIntProperty(OB_PROP_DEPTH_EXPOSURE_INT, 3000);
|
||||||
device_->setIntProperty(OB_PROP_DEPTH_GAIN_INT, 16);
|
device_->setIntProperty(OB_PROP_DEPTH_GAIN_INT, 16);
|
||||||
device_->setIntProperty(OB_PROP_IR_BRIGHTNESS_INT, 60);
|
device_->setIntProperty(OB_PROP_IR_BRIGHTNESS_INT, 60);
|
||||||
device_->setIntProperty(OB_PROP_IR_AE_MAX_EXPOSURE_INT, 30000);
|
// device_->setIntProperty(OB_PROP_IR_AE_MAX_EXPOSURE_INT, 30000);
|
||||||
|
device_->setIntProperty(OB_PROP_IR_AE_MAX_EXPOSURE_INT, 17000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -864,11 +865,18 @@ void OBCameraNode::startStreams() {
|
|||||||
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
||||||
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
||||||
<< (enable_depth_interleave_frame_ ? "true" : "false"));
|
<< (interleave_frame_enable_ ? "true" : "false"));
|
||||||
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
||||||
enable_depth_interleave_frame_);
|
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");
|
||||||
@@ -958,11 +966,11 @@ void OBCameraNode::stopStreams() {
|
|||||||
if ((interleave_ae_mode_ == "hdr") || (interleave_ae_mode_ == "laser")) {
|
if ((interleave_ae_mode_ == "hdr") || (interleave_ae_mode_ == "laser")) {
|
||||||
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
RCLCPP_INFO_STREAM(logger_, "current interleave_ae_mode_: " << interleave_ae_mode_);
|
||||||
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
if (device_->isPropertySupported(OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL, OB_PERMISSION_WRITE)) {
|
||||||
enable_depth_interleave_frame_ = false;
|
interleave_frame_enable_ = false;
|
||||||
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
RCLCPP_INFO_STREAM(logger_, "Enable enable_interleave_depth_frame to "
|
||||||
<< (enable_depth_interleave_frame_ ? "true" : "false"));
|
<< (interleave_frame_enable_ ? "true" : "false"));
|
||||||
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_FRAME_INTERLEAVE_ENABLE_BOOL,
|
||||||
enable_depth_interleave_frame_);
|
interleave_frame_enable_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1276,8 +1284,9 @@ void OBCameraNode::getParameters() {
|
|||||||
setAndGetNodeParameter<int>(gmsl_trigger_fps_, "gmsl_trigger_fps", 3000);
|
setAndGetNodeParameter<int>(gmsl_trigger_fps_, "gmsl_trigger_fps", 3000);
|
||||||
setAndGetNodeParameter<bool>(enable_gmsl_trigger_, "enable_gmsl_trigger", false);
|
setAndGetNodeParameter<bool>(enable_gmsl_trigger_, "enable_gmsl_trigger", false);
|
||||||
setAndGetNodeParameter<std::string>(interleave_ae_mode_, "interleave_ae_mode", "hdr");
|
setAndGetNodeParameter<std::string>(interleave_ae_mode_, "interleave_ae_mode", "hdr");
|
||||||
setAndGetNodeParameter<bool>(enable_depth_interleave_frame_, "enable_depth_interleave_frame",
|
setAndGetNodeParameter<bool>(interleave_frame_enable_, "interleave_frame_enable", false);
|
||||||
false);
|
setAndGetNodeParameter<bool>(interleave_skip_enable_, "interleave_skip_enable", false);
|
||||||
|
setAndGetNodeParameter<int>(interleave_skip_index_, "interleave_skip_index", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBCameraNode::setupTopics() {
|
void OBCameraNode::setupTopics() {
|
||||||
@@ -2042,6 +2051,18 @@ void OBCameraNode::onNewFrameCallback(const std::shared_ptr<ob::Frame> &frame,
|
|||||||
} else if (frame->getType() == OB_FRAME_IR || frame->getType() == OB_FRAME_IR_LEFT ||
|
} else if (frame->getType() == OB_FRAME_IR || frame->getType() == OB_FRAME_IR_LEFT ||
|
||||||
frame->getType() == OB_FRAME_IR_RIGHT) {
|
frame->getType() == OB_FRAME_IR_RIGHT) {
|
||||||
video_frame = frame->as<ob::IRFrame>();
|
video_frame = frame->as<ob::IRFrame>();
|
||||||
|
|
||||||
|
// interleave filter speckle or flood ir
|
||||||
|
if (interleave_skip_enable_) {
|
||||||
|
RCLCPP_DEBUG(logger_, "interleave filter skip interleave_skip_index_: %d",
|
||||||
|
interleave_skip_index_);
|
||||||
|
if (video_frame->getMetadataValue(OB_FRAME_METADATA_TYPE_HDR_SEQUENCE_INDEX) ==
|
||||||
|
interleave_skip_index_) {
|
||||||
|
RCLCPP_DEBUG(logger_, "interleave filter skip frame type: %d", frame->getType());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
RCLCPP_ERROR(logger_, "Unsupported frame type: %d", frame->getType());
|
RCLCPP_ERROR(logger_, "Unsupported frame type: %d", frame->getType());
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user