diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index 07907415..cd906450 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -487,6 +487,7 @@ class OBCameraNode { int color_gain_ = -1; int color_white_balance_ = -1; int color_ae_max_exposure_ = -1; + int color_ae_max_gain_ = -1; int color_brightness_ = -1; int color_sharpness_ = -1; int color_saturation_ = -1; diff --git a/orbbec_camera/launch/gemini2.launch.py b/orbbec_camera/launch/gemini2.launch.py index 4b3c558f..87acef42 100644 --- a/orbbec_camera/launch/gemini2.launch.py +++ b/orbbec_camera/launch/gemini2.launch.py @@ -38,7 +38,7 @@ 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('color_ae_max_exposure', default_value='-1'), + DeclareLaunchArgument('color_ae_max_gain', default_value='-1'), DeclareLaunchArgument('depth_width', default_value='640'), DeclareLaunchArgument('depth_height', default_value='400'), DeclareLaunchArgument('depth_fps', default_value='15'), diff --git a/orbbec_camera/launch/gemini2L.launch.py b/orbbec_camera/launch/gemini2L.launch.py index 0a34243f..3b22147e 100644 --- a/orbbec_camera/launch/gemini2L.launch.py +++ b/orbbec_camera/launch/gemini2L.launch.py @@ -38,7 +38,7 @@ 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('color_ae_max_exposure', default_value='-1'), + DeclareLaunchArgument('color_ae_max_gain', default_value='-1'), DeclareLaunchArgument('depth_width', default_value='1280'), DeclareLaunchArgument('depth_height', default_value='800'), DeclareLaunchArgument('depth_fps', default_value='30'), diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index 65febc17..7f83acd5 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -483,6 +483,18 @@ void OBCameraNode::setupDevices() { RCLCPP_INFO_STREAM(logger_, "Setting color AE max exposure to " << color_ae_max_exposure_); TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_COLOR_AE_MAX_EXPOSURE_INT, color_ae_max_exposure_); } + if (color_ae_max_gain_ != -1 && + device_->isPropertySupported(OB_PROP_COLOR_AE_MAX_GAIN_INT, OB_PERMISSION_WRITE)) { + auto range = device_->getIntPropertyRange(OB_PROP_COLOR_AE_MAX_GAIN_INT); + if (color_ae_max_gain_ < range.min || color_ae_max_gain_ > range.max) { + RCLCPP_ERROR(logger_, + "color AE max gain value is out of range[%d,%d], please check the value", + range.min, range.max); + } else { + RCLCPP_INFO_STREAM(logger_, "Setting color AE max gain to " << color_ae_max_gain_); + TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_COLOR_AE_MAX_GAIN_INT, color_ae_max_gain_); + } + } if (color_brightness_ != -1 && device_->isPropertySupported(OB_PROP_COLOR_BRIGHTNESS_INT, OB_PERMISSION_WRITE)) { RCLCPP_INFO_STREAM(logger_, "Setting color brightness to " << color_brightness_); @@ -1178,6 +1190,7 @@ void OBCameraNode::getParameters() { setAndGetNodeParameter(color_gain_, "color_gain", -1); setAndGetNodeParameter(color_white_balance_, "color_white_balance", -1); setAndGetNodeParameter(color_ae_max_exposure_, "color_ae_max_exposure", -1); + setAndGetNodeParameter(color_ae_max_gain_, "color_ae_max_gain", -1); setAndGetNodeParameter(color_brightness_, "color_brightness", -1); setAndGetNodeParameter(color_sharpness_, "color_sharpness", -1); setAndGetNodeParameter(color_saturation_, "color_saturation", -1);