diff --git a/orbbec_camera/include/orbbec_camera/ob_camera_node.h b/orbbec_camera/include/orbbec_camera/ob_camera_node.h index f21ad31c..ec59c93a 100644 --- a/orbbec_camera/include/orbbec_camera/ob_camera_node.h +++ b/orbbec_camera/include/orbbec_camera/ob_camera_node.h @@ -324,6 +324,8 @@ class OBCameraNode { void setupImagePublisher(const stream_index_pair& stream_index); + rmw_qos_profile_t getImageQosProfile(const stream_index_pair& stream_index) const; + void setupPipelineConfig(); void setupDiagnosticUpdater(); @@ -692,6 +694,8 @@ class OBCameraNode { std::string camera_link_frame_id_; bool depth_registration_ = false; std::map image_qos_; + std::map image_qos_history_; + std::map image_qos_depth_; std::map camera_info_qos_; std::map format_; std::map format_str_; diff --git a/orbbec_camera/launch/astra.launch.py b/orbbec_camera/launch/astra.launch.py index 0a498db9..3c1e838b 100644 --- a/orbbec_camera/launch/astra.launch.py +++ b/orbbec_camera/launch/astra.launch.py @@ -35,6 +35,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_flip', default_value='false'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), DeclareLaunchArgument('color_exposure', default_value='-1'), @@ -48,6 +50,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_flip', default_value='false'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('ir_width', default_value='640'), DeclareLaunchArgument('ir_height', default_value='480'), @@ -56,6 +60,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_ir', default_value='false'), DeclareLaunchArgument('ir_flip', default_value='false'), DeclareLaunchArgument('ir_qos', default_value='default'), + DeclareLaunchArgument('ir_qos_history', default_value='default'), + DeclareLaunchArgument('ir_qos_depth', default_value='-1'), DeclareLaunchArgument('ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/astra2.launch.py b/orbbec_camera/launch/astra2.launch.py index d17f738d..7a97a4e7 100644 --- a/orbbec_camera/launch/astra2.launch.py +++ b/orbbec_camera/launch/astra2.launch.py @@ -34,6 +34,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -49,6 +51,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("ir_width", default_value="800"), DeclareLaunchArgument("ir_height", default_value="600"), @@ -57,6 +61,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/dabai_a.launch.py b/orbbec_camera/launch/dabai_a.launch.py index 33f2a11c..4d7b904e 100644 --- a/orbbec_camera/launch/dabai_a.launch.py +++ b/orbbec_camera/launch/dabai_a.launch.py @@ -94,6 +94,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), @@ -116,6 +118,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -126,6 +130,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_width', default_value='0'), DeclareLaunchArgument('right_ir_height', default_value='0'), @@ -133,6 +139,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/dabai_al.launch.py b/orbbec_camera/launch/dabai_al.launch.py index 1773024c..5640afc6 100644 --- a/orbbec_camera/launch/dabai_al.launch.py +++ b/orbbec_camera/launch/dabai_al.launch.py @@ -94,6 +94,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), @@ -116,6 +118,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -126,6 +130,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_width', default_value='0'), DeclareLaunchArgument('right_ir_height', default_value='0'), @@ -133,6 +139,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/dabai_dcw2.launch.py b/orbbec_camera/launch/dabai_dcw2.launch.py index 95a1eec0..ddd0c11f 100644 --- a/orbbec_camera/launch/dabai_dcw2.launch.py +++ b/orbbec_camera/launch/dabai_dcw2.launch.py @@ -35,6 +35,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('flip_color', default_value='false'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), @@ -56,6 +58,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('flip_depth', default_value='false'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), # /config/depthfilter/Openni_device.json,need config path. DeclareLaunchArgument('depth_filter_config', default_value=''), @@ -66,6 +70,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_ir', default_value='true'), DeclareLaunchArgument('flip_ir', default_value='false'), DeclareLaunchArgument('ir_qos', default_value='default'), + DeclareLaunchArgument('ir_qos_history', default_value='default'), + DeclareLaunchArgument('ir_qos_depth', default_value='-1'), DeclareLaunchArgument('ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/dabai_max_pro.launch.py b/orbbec_camera/launch/dabai_max_pro.launch.py index 02757996..1e239305 100644 --- a/orbbec_camera/launch/dabai_max_pro.launch.py +++ b/orbbec_camera/launch/dabai_max_pro.launch.py @@ -38,6 +38,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_mirror', default_value='false'), DeclareLaunchArgument('color_rotation', default_value='-1'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), @@ -63,6 +65,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_exposure', default_value='-1'), DeclareLaunchArgument('depth_gain', default_value='-1'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), # /config/depthfilter/Openni_device.json,need config path. DeclareLaunchArgument('depth_filter_config', default_value=''), @@ -73,6 +77,8 @@ def generate_launch_description(): DeclareLaunchArgument('enable_ir', default_value='true'), DeclareLaunchArgument('ir_flip', default_value='false'), DeclareLaunchArgument('ir_qos', default_value='default'), + DeclareLaunchArgument('ir_qos_history', default_value='default'), + DeclareLaunchArgument('ir_qos_depth', default_value='-1'), DeclareLaunchArgument('ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/femto.launch.py b/orbbec_camera/launch/femto.launch.py index 6ea3f7aa..2da1beac 100644 --- a/orbbec_camera/launch/femto.launch.py +++ b/orbbec_camera/launch/femto.launch.py @@ -33,6 +33,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_exposure", default_value="-1"), @@ -48,6 +50,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("ir_width", default_value="640"), DeclareLaunchArgument("ir_height", default_value="480"), @@ -56,6 +60,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/femto_bolt.launch.py b/orbbec_camera/launch/femto_bolt.launch.py index 7283f469..cd3cb0b9 100644 --- a/orbbec_camera/launch/femto_bolt.launch.py +++ b/orbbec_camera/launch/femto_bolt.launch.py @@ -34,6 +34,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -49,6 +51,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("ir_width", default_value="640"), DeclareLaunchArgument("ir_height", default_value="576"), @@ -57,6 +61,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/femto_mega.launch.py b/orbbec_camera/launch/femto_mega.launch.py index 040e0696..7a643aa3 100644 --- a/orbbec_camera/launch/femto_mega.launch.py +++ b/orbbec_camera/launch/femto_mega.launch.py @@ -34,6 +34,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -49,6 +51,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("ir_width", default_value="640"), DeclareLaunchArgument("ir_height", default_value="576"), @@ -57,6 +61,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/gemini2.launch.py b/orbbec_camera/launch/gemini2.launch.py index d0beb879..a64dd3f8 100644 --- a/orbbec_camera/launch/gemini2.launch.py +++ b/orbbec_camera/launch/gemini2.launch.py @@ -34,6 +34,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -57,6 +59,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("depth_ae_roi_left", default_value="-1"), DeclareLaunchArgument("depth_ae_roi_right", default_value="-1"), @@ -69,6 +73,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/gemini210.launch.py b/orbbec_camera/launch/gemini210.launch.py index e5da7d5f..a48c9773 100644 --- a/orbbec_camera/launch/gemini210.launch.py +++ b/orbbec_camera/launch/gemini210.launch.py @@ -34,6 +34,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -55,6 +57,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("depth_ae_roi_left", default_value="-1"), DeclareLaunchArgument("depth_ae_roi_right", default_value="-1"), @@ -67,6 +71,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/gemini2L.launch.py b/orbbec_camera/launch/gemini2L.launch.py index 81405065..bfec3b99 100644 --- a/orbbec_camera/launch/gemini2L.launch.py +++ b/orbbec_camera/launch/gemini2L.launch.py @@ -96,6 +96,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_color", default_value="true"), DeclareLaunchArgument("color_flip", default_value="false"), DeclareLaunchArgument("color_qos", default_value="default"), + DeclareLaunchArgument("color_qos_history", default_value="default"), + DeclareLaunchArgument("color_qos_depth", default_value="-1"), DeclareLaunchArgument("color_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_color_auto_exposure", default_value="true"), DeclareLaunchArgument("color_ae_max_exposure", default_value="-1"), @@ -115,6 +117,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_depth", default_value="true"), DeclareLaunchArgument("depth_flip", default_value="false"), DeclareLaunchArgument("depth_qos", default_value="default"), + DeclareLaunchArgument("depth_qos_history", default_value="default"), + DeclareLaunchArgument("depth_qos_depth", default_value="-1"), DeclareLaunchArgument("depth_camera_info_qos", default_value="default"), DeclareLaunchArgument("ir_width", default_value="640"), DeclareLaunchArgument("ir_height", default_value="400"), @@ -123,6 +127,8 @@ def generate_launch_description(): DeclareLaunchArgument("enable_ir", default_value="true"), DeclareLaunchArgument("ir_flip", default_value="false"), DeclareLaunchArgument("ir_qos", default_value="default"), + DeclareLaunchArgument("ir_qos_history", default_value="default"), + DeclareLaunchArgument("ir_qos_depth", default_value="-1"), DeclareLaunchArgument("ir_camera_info_qos", default_value="default"), DeclareLaunchArgument("enable_ir_auto_exposure", default_value="true"), DeclareLaunchArgument("ir_ae_max_exposure", default_value="-1"), diff --git a/orbbec_camera/launch/gemini345.launch.py b/orbbec_camera/launch/gemini345.launch.py index fd1e3167..29efb1ad 100644 --- a/orbbec_camera/launch/gemini345.launch.py +++ b/orbbec_camera/launch/gemini345.launch.py @@ -93,6 +93,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), @@ -115,6 +117,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -125,6 +129,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_width', default_value='0'), DeclareLaunchArgument('right_ir_height', default_value='0'), @@ -132,6 +138,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/gemini345_lg.launch.py b/orbbec_camera/launch/gemini345_lg.launch.py index 87e46fdd..a5ec7a15 100644 --- a/orbbec_camera/launch/gemini345_lg.launch.py +++ b/orbbec_camera/launch/gemini345_lg.launch.py @@ -94,6 +94,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), @@ -116,6 +118,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -126,6 +130,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_width', default_value='0'), DeclareLaunchArgument('right_ir_height', default_value='0'), @@ -133,6 +139,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/launch/gemini435_le.launch.py b/orbbec_camera/launch/gemini435_le.launch.py index 726472be..2eca0b27 100644 --- a/orbbec_camera/launch/gemini435_le.launch.py +++ b/orbbec_camera/launch/gemini435_le.launch.py @@ -94,6 +94,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('color_rotation', default_value='-1'),#color rotation degree : 0, 90, 180, 270 @@ -126,6 +128,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -143,6 +147,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_rotation', default_value='-1'),#left_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('left_ir_flip', default_value='false'), @@ -153,6 +159,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_rotation', default_value='-1'),#right_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('right_ir_flip', default_value='false'), diff --git a/orbbec_camera/launch/gemini_301_series.launch.py b/orbbec_camera/launch/gemini_301_series.launch.py index 4339900b..23e57da5 100644 --- a/orbbec_camera/launch/gemini_301_series.launch.py +++ b/orbbec_camera/launch/gemini_301_series.launch.py @@ -119,6 +119,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='YUYV'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('color_rotation', default_value='-1'),#color rotation degree : 0, 90, 180, 270 @@ -155,6 +157,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='Y16'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -173,6 +177,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='Y8'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_rotation', default_value='-1'),#left_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('left_ir_flip', default_value='false'), @@ -186,6 +192,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='Y8'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_rotation', default_value='-1'),#right_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('right_ir_flip', default_value='false'), diff --git a/orbbec_camera/launch/gemini_330_series.launch.py b/orbbec_camera/launch/gemini_330_series.launch.py index a8860183..bcce78e2 100644 --- a/orbbec_camera/launch/gemini_330_series.launch.py +++ b/orbbec_camera/launch/gemini_330_series.launch.py @@ -108,6 +108,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('color_rotation', default_value='-1'),#color rotation degree : 0, 90, 180, 270 @@ -144,6 +146,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -161,6 +165,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_rotation', default_value='-1'),#left_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('left_ir_flip', default_value='false'), @@ -173,6 +179,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_rotation', default_value='-1'),#right_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('right_ir_flip', default_value='false'), 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 36be361e..7089840e 100644 --- a/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py +++ b/orbbec_camera/launch/gemini_330_series_low_cpu.launch.py @@ -96,6 +96,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('color_rotation', default_value='-1'),#color rotation degree : 0, 90, 180, 270 @@ -132,6 +134,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_depth_auto_exposure_priority', default_value='false'), DeclareLaunchArgument('depth_precision', default_value=''), @@ -149,6 +153,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_rotation', default_value='-1'),#left_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('left_ir_flip', default_value='false'), @@ -161,6 +167,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_rotation', default_value='-1'),#right_ir rotation degree : 0, 90, 180, 270 DeclareLaunchArgument('right_ir_flip', default_value='false'), diff --git a/orbbec_camera/launch/gemini_330_series_sdk_json.launch.py b/orbbec_camera/launch/gemini_330_series_sdk_json.launch.py index a41be6b1..7a8e862e 100644 --- a/orbbec_camera/launch/gemini_330_series_sdk_json.launch.py +++ b/orbbec_camera/launch/gemini_330_series_sdk_json.launch.py @@ -83,15 +83,31 @@ def generate_launch_description(): DeclareLaunchArgument('export_config_json_file_path', default_value=''), DeclareLaunchArgument('color_qos', default_value='default'), + + DeclareLaunchArgument('color_qos_history', default_value='default'), + + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('depth_qos', default_value='default'), + + DeclareLaunchArgument('depth_qos_history', default_value='default'), + + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_sync_output_accel_gyro', default_value='false'), diff --git a/orbbec_camera/launch/gemini_intra_process_demo_launch.py b/orbbec_camera/launch/gemini_intra_process_demo_launch.py index 21cc4ae2..43ec8282 100644 --- a/orbbec_camera/launch/gemini_intra_process_demo_launch.py +++ b/orbbec_camera/launch/gemini_intra_process_demo_launch.py @@ -70,6 +70,8 @@ def generate_launch_description(): DeclareLaunchArgument('color_format', default_value='ANY'), DeclareLaunchArgument('enable_color', default_value='true'), DeclareLaunchArgument('color_qos', default_value='default'), + DeclareLaunchArgument('color_qos_history', default_value='default'), + DeclareLaunchArgument('color_qos_depth', default_value='-1'), DeclareLaunchArgument('color_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_color_auto_exposure', default_value='true'), DeclareLaunchArgument('color_exposure', default_value='-1'), @@ -82,6 +84,8 @@ def generate_launch_description(): DeclareLaunchArgument('depth_format', default_value='ANY'), DeclareLaunchArgument('enable_depth', default_value='true'), DeclareLaunchArgument('depth_qos', default_value='default'), + DeclareLaunchArgument('depth_qos_history', default_value='default'), + DeclareLaunchArgument('depth_qos_depth', default_value='-1'), DeclareLaunchArgument('depth_camera_info_qos', default_value='default'), DeclareLaunchArgument('left_ir_width', default_value='0'), DeclareLaunchArgument('left_ir_height', default_value='0'), @@ -89,6 +93,8 @@ def generate_launch_description(): DeclareLaunchArgument('left_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_left_ir', default_value='false'), DeclareLaunchArgument('left_ir_qos', default_value='default'), + DeclareLaunchArgument('left_ir_qos_history', default_value='default'), + DeclareLaunchArgument('left_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('left_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('right_ir_width', default_value='0'), DeclareLaunchArgument('right_ir_height', default_value='0'), @@ -96,6 +102,8 @@ def generate_launch_description(): DeclareLaunchArgument('right_ir_format', default_value='ANY'), DeclareLaunchArgument('enable_right_ir', default_value='false'), DeclareLaunchArgument('right_ir_qos', default_value='default'), + DeclareLaunchArgument('right_ir_qos_history', default_value='default'), + DeclareLaunchArgument('right_ir_qos_depth', default_value='-1'), DeclareLaunchArgument('right_ir_camera_info_qos', default_value='default'), DeclareLaunchArgument('enable_ir_auto_exposure', default_value='true'), DeclareLaunchArgument('ir_exposure', default_value='-1'), diff --git a/orbbec_camera/src/ob_camera_node.cpp b/orbbec_camera/src/ob_camera_node.cpp index 1aa56019..925726f5 100755 --- a/orbbec_camera/src/ob_camera_node.cpp +++ b/orbbec_camera/src/ob_camera_node.cpp @@ -16,6 +16,7 @@ #include "orbbec_camera/ob_camera_node.h" #include +#include #include #include #include @@ -4415,6 +4416,20 @@ void OBCameraNode::getParameters() { updateImageConfig(stream_index); param_name = stream_name_[stream_index] + "_qos"; setAndGetNodeParameter(image_qos_[stream_index], param_name, "default"); + param_name = stream_name_[stream_index] + "_qos_history"; + setAndGetNodeParameter(image_qos_history_[stream_index], param_name, "default"); + std::transform(image_qos_history_[stream_index].begin(), image_qos_history_[stream_index].end(), + image_qos_history_[stream_index].begin(), ::toupper); + if (image_qos_history_[stream_index] != "DEFAULT" && + image_qos_history_[stream_index] != "KEEP_LAST" && + image_qos_history_[stream_index] != "KEEP_ALL") { + throw std::invalid_argument(param_name + " must be DEFAULT, KEEP_LAST, or KEEP_ALL"); + } + param_name = stream_name_[stream_index] + "_qos_depth"; + setAndGetNodeParameter(image_qos_depth_[stream_index], param_name, -1); + if (image_qos_depth_[stream_index] == 0 || image_qos_depth_[stream_index] < -1) { + throw std::invalid_argument(param_name + " must be -1 or greater than zero"); + } param_name = stream_name_[stream_index] + "_camera_info_qos"; setAndGetNodeParameter(camera_info_qos_[stream_index], param_name, "default"); param_name = "enable_" + stream_name_[stream_index] + "_undistortion"; @@ -5267,10 +5282,7 @@ void OBCameraNode::setupConfidencePublishers() { if (confidence_image_publisher_) { return; } - auto image_qos_profile = getRMWQosProfileFromString(image_qos_[DEPTH]); - if (use_intra_process_) { - image_qos_profile = rmw_qos_profile_default; - } + const auto image_qos_profile = getImageQosProfile(DEPTH); confidence_image_publisher_ = node_->create_publisher( "confidence/image_raw", rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(image_qos_profile), image_qos_profile)); @@ -5359,11 +5371,7 @@ void OBCameraNode::setupImagePublisher(const stream_index_pair &stream_index) { } const std::string topic = stream_name_[stream_index] + "/image_raw"; - auto image_qos_profile = getRMWQosProfileFromString(image_qos_[stream_index]); - if (use_intra_process_) { - image_qos_profile = rmw_qos_profile_default; - } - + const auto image_qos_profile = getImageQosProfile(stream_index); const bool is_mjpg_color_stream = (stream_index == COLOR || stream_index == COLOR_LEFT || stream_index == COLOR_RIGHT) && format_[stream_index] == OB_FORMAT_MJPG; @@ -5374,6 +5382,14 @@ void OBCameraNode::setupImagePublisher(const stream_index_pair &stream_index) { image_publishers_[stream_index] = std::make_shared(*node_, topic, image_qos_profile); } + std::string history = rmw_qos_history_policy_to_str(image_qos_profile.history); + if (image_qos_profile.history == RMW_QOS_POLICY_HISTORY_KEEP_LAST) { + history += "(" + std::to_string(image_qos_profile.depth) + ")"; + } + RCLCPP_INFO_STREAM( + logger_, topic << " QoS: " << rmw_qos_reliability_policy_to_str(image_qos_profile.reliability) + << ", " << rmw_qos_durability_policy_to_str(image_qos_profile.durability) + << ", " << history); if (is_mjpg_color_stream) { compressed_image_publishers_[stream_index] = @@ -5385,6 +5401,24 @@ void OBCameraNode::setupImagePublisher(const stream_index_pair &stream_index) { } } +rmw_qos_profile_t OBCameraNode::getImageQosProfile(const stream_index_pair &stream_index) const { + auto image_qos_profile = getRMWQosProfileFromString(image_qos_.at(stream_index)); + if (use_intra_process_) { + image_qos_profile = rmw_qos_profile_default; + } + const auto &history = image_qos_history_.at(stream_index); + if (history == "KEEP_LAST") { + image_qos_profile.history = RMW_QOS_POLICY_HISTORY_KEEP_LAST; + } else if (history == "KEEP_ALL") { + image_qos_profile.history = RMW_QOS_POLICY_HISTORY_KEEP_ALL; + } + const auto depth = image_qos_depth_.at(stream_index); + if (depth > 0) { + image_qos_profile.depth = static_cast(depth); + } + return image_qos_profile; +} + void OBCameraNode::setupPublishers() { using PointCloud2 = sensor_msgs::msg::PointCloud2; using CameraInfo = sensor_msgs::msg::CameraInfo; @@ -5529,10 +5563,7 @@ void OBCameraNode::syncSoftwareAlignment() { RCLCPP_INFO_STREAM(logger_, "set align mode to " << align_mode_); } if (!depth_unaligned_publisher_) { - auto depth_image_qos_profile = getRMWQosProfileFromString(image_qos_[DEPTH]); - if (use_intra_process_) { - depth_image_qos_profile = rmw_qos_profile_default; - } + const auto depth_image_qos_profile = getImageQosProfile(DEPTH); if (use_intra_process_) { depth_unaligned_publisher_ = std::make_shared( *node_, "depth/image_unaligned", depth_image_qos_profile);