diff --git a/orbbec_camera/launch/gemini_301_series.launch.py b/orbbec_camera/launch/gemini_301_series.launch.py index d78fc15a..37bb666d 100644 --- a/orbbec_camera/launch/gemini_301_series.launch.py +++ b/orbbec_camera/launch/gemini_301_series.launch.py @@ -142,7 +142,6 @@ def generate_launch_description(): DeclareLaunchArgument('color_gain', default_value='-1'), DeclareLaunchArgument('enable_color_auto_white_balance', default_value='true'), DeclareLaunchArgument('color_white_balance', default_value='-1'), - DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), DeclareLaunchArgument('color_ae_max_exposure', default_value='-1'), DeclareLaunchArgument('color_brightness', default_value='-1'), DeclareLaunchArgument('color_sharpness', default_value='-1'), @@ -208,7 +207,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_mirror', default_value='false'), DeclareLaunchArgument('enable_right_ir_sequence_id_filter', default_value='false'), DeclareLaunchArgument('right_ir_sequence_id_filter_id', default_value='-1'), - DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), + # Gemini 301 color, depth, and IR streams share one auto-exposure switch. + DeclareLaunchArgument('enable_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), DeclareLaunchArgument('ir_gain', default_value='-1'), DeclareLaunchArgument('ir_ae_max_exposure', default_value='-1'), diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index bc2fddc7..286c3b9b 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -1721,7 +1721,8 @@ void OBCameraNode::setupDevices() { "Current depth auto exposure priority: " << (device_->getIntProperty(OB_PROP_DEPTH_AUTO_EXPOSURE_PRIORITY_INT) ? "ON" : "OFF"))); } - if (should_apply_launch_config("enable_ir_auto_exposure") && + if ((should_apply_launch_config("enable_auto_exposure") || + should_apply_launch_config("enable_ir_auto_exposure")) && device_->isPropertySupported(OB_PROP_IR_AUTO_EXPOSURE_BOOL, OB_PERMISSION_WRITE)) { TRY_TO_SET_PROPERTY(setBoolProperty, OB_PROP_IR_AUTO_EXPOSURE_BOOL, enable_ir_auto_exposure_); TRY_EXECUTE_BLOCK(RCLCPP_INFO_STREAM( @@ -4772,7 +4773,11 @@ void OBCameraNode::getParameters() { setAndGetNodeParameter(mean_intensity_set_point_, "mean_intensity_set_point", depth_brightness_); setAndGetNodeParameter(depth_precision_str_, "depth_precision", ""); - setAndGetNodeParameter(enable_ir_auto_exposure_, "enable_ir_auto_exposure", true); + setAndGetNodeParameter(enable_ir_auto_exposure_, + isLaunchParamProvided("enable_auto_exposure") + ? "enable_auto_exposure" + : "enable_ir_auto_exposure", + true); setAndGetNodeParameter(ir_exposure_, "ir_exposure", -1); setAndGetNodeParameter(ir_gain_, "ir_gain", -1); setAndGetNodeParameter(ir_ae_max_exposure_, "ir_ae_max_exposure", -1);