From 0c09a97e7f2ab7beac5a7af7636b6d04de3382ed Mon Sep 17 00:00:00 2001 From: Orange <2314753575@qq.com> Date: Fri, 24 Jul 2026 17:13:05 +0800 Subject: [PATCH] Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. On branch master Your branch is ahead of 'origin/master' by 24 commits. (use "git push" to publish your local commits) Changes to be committed: modified: src/my_robot_bringup/launch/master_launch.py deleted: src/obs.zip modified: src/vlm_detect/launch/vlm_detect.launch.py --- src/my_robot_bringup/launch/master_launch.py | 29 +++++++------------ src/obs.zip | Bin 7377 -> 0 bytes src/vlm_detect/launch/vlm_detect.launch.py | 8 ++--- 3 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 src/obs.zip diff --git a/src/my_robot_bringup/launch/master_launch.py b/src/my_robot_bringup/launch/master_launch.py index 722bdf6..17b77c5 100755 --- a/src/my_robot_bringup/launch/master_launch.py +++ b/src/my_robot_bringup/launch/master_launch.py @@ -104,9 +104,9 @@ def generate_launch_description(): ) # ================================================================ - # 阶段 3: TTS 语音播报服务 + 二维码播报桥接 (t=3s) + # 阶段 3: TTS 语音播报服务 (t=3s) # tts_server: Piper 离线 TTS + espeak 降级,提供 /tts/speak 服务 - # qr_tts_bridge: 订阅 qr_results,调用 /tts/speak + # qr_detect / vlm_node 直接调用 /tts/speak # ================================================================ tts_server = Node( package='vlm_detect', @@ -120,18 +120,10 @@ def generate_launch_description(): }], ) - qr_tts_bridge = Node( - package='vlm_detect', - executable='qr_tts_bridge', - name='qr_tts_bridge', - output='screen', - condition=IfCondition(use_tts), - ) - # ================================================================ # 阶段 4: USB 摄像头 + 二维码识别 (t=4s) - # car_usb_cam: 使用 hobot_usb_cam 驱动 USB 摄像头,发布 /image_raw - # qr_detect: 订阅 /image_raw,识别二维码,发布 qr_results + # car_usb_cam: 使用 hobot_usb_cam 驱动 USB 摄像头,发布 /image (CompressedImage) + # qr_detect: 自动识别 /image 类型,识别二维码,发布 qr_results # ================================================================ usb_camera = IncludeLaunchDescription( PythonLaunchDescriptionSource([ @@ -153,7 +145,7 @@ def generate_launch_description(): name='qr_detect', output='screen', condition=IfCondition(use_qr), - parameters=[{'image_topic': '/image_raw'}], + parameters=[{'image_topic': '/image'}], ) # ================================================================ @@ -227,7 +219,7 @@ def generate_launch_description(): # ================================================================ # 阶段 8: VLM 图生文 (t=11s) # vlm_node 内部自带 TTS 服务客户端,识别完自动调用 /tts/speak - # 注意: TTS 服务和桥接已在阶段 3 启动,这里只启动 vlm_node + # 注意: TTS 服务已在阶段 3 启动,这里只启动 vlm_node # ================================================================ vlm_launch = IncludeLaunchDescription( PythonLaunchDescriptionSource([ @@ -237,7 +229,7 @@ def generate_launch_description(): launch_arguments={ 'vlm_host': vlm_host, 'use_tts': 'false', # tts_server 已在阶段 3 启动 - 'use_qr_tts': 'false', # qr_tts_bridge 已在阶段 3 启动 + 'use_qr_tts': 'false', # QR 播报已集成到 qr_detect }.items(), ) @@ -254,7 +246,7 @@ def generate_launch_description(): DeclareLaunchArgument('use_qr', default_value='true', description='USB 摄像头 + 二维码识别'), DeclareLaunchArgument('use_tts', default_value='true', - description='TTS 语音播报服务 + 二维码播报桥接'), + description='TTS 语音播报服务'), DeclareLaunchArgument('use_obstacle', default_value='true', description='障碍物检测'), DeclareLaunchArgument('use_planner', default_value='true', @@ -305,11 +297,10 @@ def generate_launch_description(): lidar_launch, ]), - # t=3s: TTS 服务 + 二维码播报桥接 + # t=3s: TTS 服务 TimerAction(period=3.0, actions=[ - LogInfo(msg='[3/8] Starting TTS Server + QR-TTS Bridge ...'), + LogInfo(msg='[3/8] Starting TTS Server ...'), tts_server, - qr_tts_bridge, ]), # t=4s: USB 摄像头 + 二维码识别 diff --git a/src/obs.zip b/src/obs.zip deleted file mode 100644 index c03beeee0eeaded3293b802a456b853abf2018dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7377 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 diff --git a/src/vlm_detect/launch/vlm_detect.launch.py b/src/vlm_detect/launch/vlm_detect.launch.py index dd416d5..4dc0152 100644 --- a/src/vlm_detect/launch/vlm_detect.launch.py +++ b/src/vlm_detect/launch/vlm_detect.launch.py @@ -2,13 +2,13 @@ # -*- coding: utf-8 -*- """ vlm_detect 启动文件 -同时启动 vlm_node (图生文) + tts_server (语音播报服务) + qr_tts_bridge (二维码播报) +同时启动 vlm_node (图生文) + tts_server (语音播报服务) 用法: ros2 launch vlm_detect vlm_detect.launch.py # 默认全部 ros2 launch vlm_detect vlm_detect.launch.py vlm_host:=http://... # 指定 VLM 服务地址 ros2 launch vlm_detect vlm_detect.launch.py use_tts:=false # 关闭语音播报 - ros2 launch vlm_detect vlm_detect.launch.py use_qr_tts:=false # 关闭二维码播报桥接 + ros2 launch vlm_detect vlm_detect.launch.py use_qr_tts:=true # 兼容旧二维码播报桥接 ros2 launch vlm_detect vlm_detect.launch.py use_vlm:=false # 只启动语音服务 """ @@ -55,8 +55,8 @@ def generate_launch_description(): description='启动 TTS 语音播报服务') declare_use_qr_tts = DeclareLaunchArgument( - 'use_qr_tts', default_value='true', - description='启动二维码 → TTS 桥接节点') + 'use_qr_tts', default_value='false', + description='启动旧二维码 → TTS 桥接节点') declare_config_file = DeclareLaunchArgument( 'config_file',