From 0b2b33d1389dcb1788deb5af142a6d29642b17f7 Mon Sep 17 00:00:00 2001 From: ob-yalian Date: Mon, 3 Nov 2025 09:24:19 +0800 Subject: [PATCH] fix: update launch files to standardize device preset and enhance plugin parameter handling --- orbbec_camera/launch/dabai_a.launch.py | 37 ++++++++++++++++--- orbbec_camera/launch/dabai_al.launch.py | 37 ++++++++++++++++--- orbbec_camera/launch/gemini345.launch.py | 36 +++++++++++++++--- orbbec_camera/launch/gemini345_lg.launch.py | 37 ++++++++++++++++--- .../launch/gemini_330_series.launch.py | 2 +- 5 files changed, 128 insertions(+), 21 deletions(-) diff --git a/orbbec_camera/launch/dabai_a.launch.py b/orbbec_camera/launch/dabai_a.launch.py index 3cad471f..30a6e656 100644 --- a/orbbec_camera/launch/dabai_a.launch.py +++ b/orbbec_camera/launch/dabai_a.launch.py @@ -43,10 +43,28 @@ def load_parameters(context, args): yaml_params = load_yaml(config_file_path) default_params = merge_params(default_params, yaml_params) skip_convert = {'config_file_path', 'usb_port', 'serial_number'} - return { - key: (value if key in skip_convert else convert_value(value)) - for key, value in default_params.items() - } + + result = {} + for key, value in default_params.items(): + if key in skip_convert: + result[key] = value + elif 'enable_pub_plugins' in key: + if isinstance(value, str): + if value.startswith('[') and value.endswith(']'): + try: + result[key] = yaml.safe_load(value) + except: + result[key] = [value] + else: + result[key] = [value] + elif isinstance(value, list): + result[key] = value + else: + result[key] = [str(value)] + else: + result[key] = convert_value(value) + + return result def generate_launch_description(): @@ -180,13 +198,22 @@ def generate_launch_description(): DeclareLaunchArgument('align_target_stream', default_value='COLOR'),# COLOR or DEPTH DeclareLaunchArgument('diagnostic_period', default_value='1.0'), DeclareLaunchArgument('depth_precision', default_value=''), - DeclareLaunchArgument('device_preset', default_value='Default'), + DeclareLaunchArgument('device_preset', default_value='Standard'), DeclareLaunchArgument('retry_on_usb3_detection_failure', default_value='false'), DeclareLaunchArgument('enable_sync_host_time', default_value='true'), DeclareLaunchArgument('time_domain', default_value='global'),# global, device, system DeclareLaunchArgument('enable_color_undistortion', default_value='false'), DeclareLaunchArgument('config_file_path', default_value=''), DeclareLaunchArgument('enable_heartbeat', default_value='false'), + + #color image transport plugins + DeclareLaunchArgument('color.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #depth image transport plugins + DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw"]'), + #infra1 + DeclareLaunchArgument('left_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #infra2 + DeclareLaunchArgument('right_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), ] def get_params(context, args): diff --git a/orbbec_camera/launch/dabai_al.launch.py b/orbbec_camera/launch/dabai_al.launch.py index a69d609e..8400dbf9 100644 --- a/orbbec_camera/launch/dabai_al.launch.py +++ b/orbbec_camera/launch/dabai_al.launch.py @@ -43,10 +43,28 @@ def load_parameters(context, args): yaml_params = load_yaml(config_file_path) default_params = merge_params(default_params, yaml_params) skip_convert = {'config_file_path', 'usb_port', 'serial_number'} - return { - key: (value if key in skip_convert else convert_value(value)) - for key, value in default_params.items() - } + + result = {} + for key, value in default_params.items(): + if key in skip_convert: + result[key] = value + elif 'enable_pub_plugins' in key: + if isinstance(value, str): + if value.startswith('[') and value.endswith(']'): + try: + result[key] = yaml.safe_load(value) + except: + result[key] = [value] + else: + result[key] = [value] + elif isinstance(value, list): + result[key] = value + else: + result[key] = [str(value)] + else: + result[key] = convert_value(value) + + return result def generate_launch_description(): @@ -181,7 +199,7 @@ def generate_launch_description(): DeclareLaunchArgument('diagnostic_period', default_value='1.0'), DeclareLaunchArgument('enable_laser', default_value='true'), DeclareLaunchArgument('depth_precision', default_value=''), - DeclareLaunchArgument('device_preset', default_value='Default'), + DeclareLaunchArgument('device_preset', default_value='Standard'), DeclareLaunchArgument('retry_on_usb3_detection_failure', default_value='false'), DeclareLaunchArgument('laser_energy_level', default_value='-1'), DeclareLaunchArgument('enable_sync_host_time', default_value='true'), @@ -189,6 +207,15 @@ def generate_launch_description(): DeclareLaunchArgument('enable_color_undistortion', default_value='false'), DeclareLaunchArgument('config_file_path', default_value=''), DeclareLaunchArgument('enable_heartbeat', default_value='false'), + + #color image transport plugins + DeclareLaunchArgument('color.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #depth image transport plugins + DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw"]'), + #infra1 + DeclareLaunchArgument('left_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #infra2 + DeclareLaunchArgument('right_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), ] def get_params(context, args): diff --git a/orbbec_camera/launch/gemini345.launch.py b/orbbec_camera/launch/gemini345.launch.py index 3cad471f..422e32d6 100644 --- a/orbbec_camera/launch/gemini345.launch.py +++ b/orbbec_camera/launch/gemini345.launch.py @@ -43,11 +43,28 @@ def load_parameters(context, args): yaml_params = load_yaml(config_file_path) default_params = merge_params(default_params, yaml_params) skip_convert = {'config_file_path', 'usb_port', 'serial_number'} - return { - key: (value if key in skip_convert else convert_value(value)) - for key, value in default_params.items() - } + result = {} + for key, value in default_params.items(): + if key in skip_convert: + result[key] = value + elif 'enable_pub_plugins' in key: + if isinstance(value, str): + if value.startswith('[') and value.endswith(']'): + try: + result[key] = yaml.safe_load(value) + except: + result[key] = [value] + else: + result[key] = [value] + elif isinstance(value, list): + result[key] = value + else: + result[key] = [str(value)] + else: + result[key] = convert_value(value) + + return result def generate_launch_description(): args = [ @@ -180,13 +197,22 @@ def generate_launch_description(): DeclareLaunchArgument('align_target_stream', default_value='COLOR'),# COLOR or DEPTH DeclareLaunchArgument('diagnostic_period', default_value='1.0'), DeclareLaunchArgument('depth_precision', default_value=''), - DeclareLaunchArgument('device_preset', default_value='Default'), + DeclareLaunchArgument('device_preset', default_value='Standard'), DeclareLaunchArgument('retry_on_usb3_detection_failure', default_value='false'), DeclareLaunchArgument('enable_sync_host_time', default_value='true'), DeclareLaunchArgument('time_domain', default_value='global'),# global, device, system DeclareLaunchArgument('enable_color_undistortion', default_value='false'), DeclareLaunchArgument('config_file_path', default_value=''), DeclareLaunchArgument('enable_heartbeat', default_value='false'), + + #color image transport plugins + DeclareLaunchArgument('color.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #depth image transport plugins + DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw"]'), + #infra1 + DeclareLaunchArgument('left_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #infra2 + DeclareLaunchArgument('right_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), ] def get_params(context, args): diff --git a/orbbec_camera/launch/gemini345_lg.launch.py b/orbbec_camera/launch/gemini345_lg.launch.py index a69d609e..8400dbf9 100644 --- a/orbbec_camera/launch/gemini345_lg.launch.py +++ b/orbbec_camera/launch/gemini345_lg.launch.py @@ -43,10 +43,28 @@ def load_parameters(context, args): yaml_params = load_yaml(config_file_path) default_params = merge_params(default_params, yaml_params) skip_convert = {'config_file_path', 'usb_port', 'serial_number'} - return { - key: (value if key in skip_convert else convert_value(value)) - for key, value in default_params.items() - } + + result = {} + for key, value in default_params.items(): + if key in skip_convert: + result[key] = value + elif 'enable_pub_plugins' in key: + if isinstance(value, str): + if value.startswith('[') and value.endswith(']'): + try: + result[key] = yaml.safe_load(value) + except: + result[key] = [value] + else: + result[key] = [value] + elif isinstance(value, list): + result[key] = value + else: + result[key] = [str(value)] + else: + result[key] = convert_value(value) + + return result def generate_launch_description(): @@ -181,7 +199,7 @@ def generate_launch_description(): DeclareLaunchArgument('diagnostic_period', default_value='1.0'), DeclareLaunchArgument('enable_laser', default_value='true'), DeclareLaunchArgument('depth_precision', default_value=''), - DeclareLaunchArgument('device_preset', default_value='Default'), + DeclareLaunchArgument('device_preset', default_value='Standard'), DeclareLaunchArgument('retry_on_usb3_detection_failure', default_value='false'), DeclareLaunchArgument('laser_energy_level', default_value='-1'), DeclareLaunchArgument('enable_sync_host_time', default_value='true'), @@ -189,6 +207,15 @@ def generate_launch_description(): DeclareLaunchArgument('enable_color_undistortion', default_value='false'), DeclareLaunchArgument('config_file_path', default_value=''), DeclareLaunchArgument('enable_heartbeat', default_value='false'), + + #color image transport plugins + DeclareLaunchArgument('color.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #depth image transport plugins + DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw"]'), + #infra1 + DeclareLaunchArgument('left_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), + #infra2 + DeclareLaunchArgument('right_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), ] def get_params(context, args): diff --git a/orbbec_camera/launch/gemini_330_series.launch.py b/orbbec_camera/launch/gemini_330_series.launch.py index 78e1f087..c1f4a3d8 100644 --- a/orbbec_camera/launch/gemini_330_series.launch.py +++ b/orbbec_camera/launch/gemini_330_series.launch.py @@ -293,7 +293,7 @@ def generate_launch_description(): #color image transport plugins DeclareLaunchArgument('color.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), #depth image transport plugins - DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw", "image_transport/theora"]'), + DeclareLaunchArgument('depth.image_raw.enable_pub_plugins',default_value='["image_transport/compressedDepth", "image_transport/raw"]'), #infra1 DeclareLaunchArgument('left_ir.image_raw.enable_pub_plugins',default_value='["image_transport/compressed", "image_transport/raw", "image_transport/theora"]'), #infra2