diff --git a/orbbec_camera/examples/benchmark/gemini_330_series_benchmark.launch.py b/orbbec_camera/examples/benchmark/gemini_330_series_benchmark.launch.py index 2bce9168..04534516 100644 --- a/orbbec_camera/examples/benchmark/gemini_330_series_benchmark.launch.py +++ b/orbbec_camera/examples/benchmark/gemini_330_series_benchmark.launch.py @@ -95,7 +95,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), diff --git a/orbbec_camera/examples/gmsl_camera/gemini_330_gmsl.launch.py b/orbbec_camera/examples/gmsl_camera/gemini_330_gmsl.launch.py index 2bce9168..04534516 100644 --- a/orbbec_camera/examples/gmsl_camera/gemini_330_gmsl.launch.py +++ b/orbbec_camera/examples/gmsl_camera/gemini_330_gmsl.launch.py @@ -95,7 +95,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), diff --git a/orbbec_camera/examples/multi_camera_synced_verification_tool/gemini_330_series_synced_verify.launch.py b/orbbec_camera/examples/multi_camera_synced_verification_tool/gemini_330_series_synced_verify.launch.py index 2bce9168..04534516 100644 --- a/orbbec_camera/examples/multi_camera_synced_verification_tool/gemini_330_series_synced_verify.launch.py +++ b/orbbec_camera/examples/multi_camera_synced_verification_tool/gemini_330_series_synced_verify.launch.py @@ -95,7 +95,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index 0dc7bc95..cdb24b44 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -635,6 +635,7 @@ class OBCameraNode { std::string color_powerline_freq_; bool enable_color_decimation_filter_ = false; int color_decimation_filter_scale_ = -1; + int color_denoising_level_ = -1; // depth ae roi int depth_ae_roi_left_ = -1; int depth_ae_roi_top_ = -1; diff --git a/orbbec_camera/launch/dabai_a.launch.py b/orbbec_camera/launch/dabai_a.launch.py index f4d4e588..a69d609e 100644 --- a/orbbec_camera/launch/dabai_a.launch.py +++ b/orbbec_camera/launch/dabai_a.launch.py @@ -85,7 +85,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('depth_width', default_value='0'), DeclareLaunchArgument('depth_height', default_value='0'), diff --git a/orbbec_camera/launch/dabai_al.launch.py b/orbbec_camera/launch/dabai_al.launch.py index f4d4e588..a69d609e 100644 --- a/orbbec_camera/launch/dabai_al.launch.py +++ b/orbbec_camera/launch/dabai_al.launch.py @@ -85,7 +85,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('depth_width', default_value='0'), DeclareLaunchArgument('depth_height', default_value='0'), diff --git a/orbbec_camera/launch/gemini345.launch.py b/orbbec_camera/launch/gemini345.launch.py index f4d4e588..a69d609e 100644 --- a/orbbec_camera/launch/gemini345.launch.py +++ b/orbbec_camera/launch/gemini345.launch.py @@ -85,7 +85,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('depth_width', default_value='0'), DeclareLaunchArgument('depth_height', default_value='0'), diff --git a/orbbec_camera/launch/gemini435_le.launch.py b/orbbec_camera/launch/gemini435_le.launch.py index c8947539..de057ee9 100644 --- a/orbbec_camera/launch/gemini435_le.launch.py +++ b/orbbec_camera/launch/gemini435_le.launch.py @@ -111,7 +111,7 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), diff --git a/orbbec_camera/launch/gemini_330_series.launch.py b/orbbec_camera/launch/gemini_330_series.launch.py index bf1641b5..b0ac9dd7 100644 --- a/orbbec_camera/launch/gemini_330_series.launch.py +++ b/orbbec_camera/launch/gemini_330_series.launch.py @@ -115,6 +115,9 @@ def generate_launch_description(): DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), + DeclareLaunchArgument('color_denoising_level', default_value='-1'),#0: Auto; 1-8: higher values indicate stronger denoising. + #Note: The color_denoising_level configuration is supported only when AE is enabled, and requires new firmware support. + DeclareLaunchArgument('depth_width', default_value='0'), DeclareLaunchArgument('depth_height', default_value='0'), DeclareLaunchArgument('depth_fps', default_value='0'), @@ -176,6 +179,7 @@ def generate_launch_description(): DeclareLaunchArgument('tf_publish_rate', default_value='0.0'), DeclareLaunchArgument('ir_info_url', default_value=''), DeclareLaunchArgument('color_info_url', default_value=''), + # Network device settings: default enumerate_net_device is set to true, which will automatically enumerate network devices # If you do not want to automatically enumerate network devices, # you can set enumerate_net_device to false, net_device_ip to the device's IP address, and net_device_port to the default value of 8090 diff --git a/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py b/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py index 71c0f066..89fe5f4a 100644 --- a/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py +++ b/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py @@ -112,10 +112,13 @@ def generate_launch_description(): DeclareLaunchArgument('color_saturation', default_value='-1'), DeclareLaunchArgument('color_contrast', default_value='-1'), DeclareLaunchArgument('color_hue', default_value='-1'), - DeclareLaunchArgument('color_backlight_compensation', default_value='-1'), + DeclareLaunchArgument('color_backlight_compensation', default_value='-1'),#range: 0 - 6, default: 3 DeclareLaunchArgument('color_powerline_freq', default_value=''),#disable ,50hz ,60hz ,auto DeclareLaunchArgument('enable_color_decimation_filter', default_value='false'), DeclareLaunchArgument('color_decimation_filter_scale', default_value='-1'), + DeclareLaunchArgument('color_denoising_level', default_value='-1'),#0: Auto; 1-8: higher values indicate stronger denoising. + #Note: The color_denoising_level configuration is supported only when AE is enabled, and requires new firmware support. + DeclareLaunchArgument('depth_width', default_value='0'), DeclareLaunchArgument('depth_height', default_value='0'), DeclareLaunchArgument('depth_fps', default_value='0'), diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index 9d3a58aa..a8d7fa74 100644 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -231,7 +231,9 @@ void OBCameraNode::setupDevices() { enable_stream_[stream_index] = false; } } - auto info = device_->getDeviceInfo(); + auto device_info = device_->getDeviceInfo(); + CHECK_NOTNULL(device_info); + auto pid = device_info->getPid(); if (retry_on_usb3_detection_failure_ && device_->isPropertySupported(OB_PROP_DEVICE_USB3_REPEAT_IDENTIFY_BOOL, @@ -607,6 +609,11 @@ void OBCameraNode::setupDevices() { TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_COLOR_BACKLIGHT_COMPENSATION_INT, color_backlight_compensation_); } + if (isGemini335PID(pid) && color_denoising_level_ != -1 && + device_->isPropertySupported(OB_PROP_COLOR_DENOISING_LEVEL_INT, OB_PERMISSION_WRITE)) { + RCLCPP_INFO_STREAM(logger_, "Setting color denoising level to " << color_denoising_level_); + TRY_TO_SET_PROPERTY(setIntProperty, OB_PROP_COLOR_DENOISING_LEVEL_INT, color_denoising_level_); + } if (!color_powerline_freq_.empty() && device_->isPropertySupported(OB_PROP_COLOR_POWER_LINE_FREQUENCY_INT, OB_PERMISSION_WRITE)) { if (color_powerline_freq_ == "disable") { @@ -1780,6 +1787,7 @@ void OBCameraNode::getParameters() { setAndGetNodeParameter(color_contrast_, "color_contrast", -1); setAndGetNodeParameter(color_hue_, "color_hue", -1); setAndGetNodeParameter(color_backlight_compensation_, "color_backlight_compensation", -1); + setAndGetNodeParameter(color_denoising_level_, "color_denoising_level", -1); setAndGetNodeParameter(color_powerline_freq_, "color_powerline_freq", ""); setAndGetNodeParameter(enable_color_decimation_filter_, "enable_color_decimation_filter", false);