9.0 KiB
master_launch.py 使用指南
启动顺序
t=0s 底盘驱动 + EKF + TF + IMU (origincar_bringup)
t=2s 激光雷达 (lslidar_driver)
t=5s SLAM 建图 (slam_toolbox)
t=8s Nav2 导航栈
t=10s VLM 图生文 + TTS 语音播报
每个阶段依赖前一个阶段就绪,属于严格时间线启动,不可调换。
参数一览
| 参数 | 默认值 | 说明 |
|---|---|---|
use_base |
true | 底盘驱动 + EKF + TF |
use_lidar |
true | 激光雷达 (lsn10) |
use_slam |
true | slam_toolbox 建图 |
use_nav2 |
true | Nav2 导航栈 |
use_vlm |
true | VLM 图生文 + TTS |
use_tts |
true | TTS 语音播报开关 |
akmcar |
true | 阿克曼底盘 (false=差速) |
carto_slam |
false | 使用 Cartographer 替代 EKF |
vlm_host |
http://192.168.10.189:8000 | VLM 推理服务地址 |
use_sim_time |
false | 使用仿真时间 |
常用命令
全部启动
ros2 launch my_robot_bringup master_launch.py
只调试底盘
ros2 launch my_robot_bringup master_launch.py use_lidar:=false use_slam:=false use_nav2:=false use_vlm:=false
只建图(底盘 + 雷达 + SLAM)
ros2 launch my_robot_bringup master_launch.py use_nav2:=false use_vlm:=false
只启动 VLM(调试图生文)
ros2 launch my_robot_bringup master_launch.py use_base:=false use_lidar:=false use_slam:=false use_nav2:=false
底盘 + 雷达 + SLAM + 导航(不加 VLM)
ros2 launch my_robot_bringup master_launch.py use_vlm:=false use_tts:=false
更换 VLM 服务地址
ros2 launch my_robot_bringup master_launch.py vlm_host:=http://192.168.10.200:8000
差分底盘模式
ros2 launch my_robot_bringup master_launch.py akmcar:=false
使用 Cartographer 替代 EKF
ros2 launch my_robot_bringup master_launch.py carto_slam:=true
使用自定义 SLAM 参数
ros2 launch my_robot_bringup master_launch.py slam_params_file:=/path/to/my_slam.yaml
使用自定义 Nav2 参数
ros2 launch my_robot_bringup master_launch.py nav2_params_file:=/path/to/my_nav2.yaml
前置条件
- VLM 服务 — WSL 中先启动
python vlm_server.py(如需使用 VLM) - Portproxy 转发 — Windows 上管理员 PowerShell 执行
setup_vlm_forward.ps1(仅需一次,IP 不变则不用重跑) - 重刷环境 — 启动前清理残留进程:
pkill -f ros2; pkill -f espeak; pkill -f ffplay
网络架构(VLM 相关)
机器人 (192.168.10.x)
↓ http://192.168.10.189:8000
Windows 宿主机 (IP 需固定)
↓ netsh portproxy → 127.0.0.1:8000
WSL2 vlm_server.py
- Windows IP 不变 → 一切正常
- Windows IP 变化 → 重跑
setup_vlm_forward.ps1,启动时传vlm_host:=http://新IP:8000
改动的地方
master_launch.py 变更内容
阶段: 1 (t=0s) 原来: 底盘 + EKF + TF + IMU 现在: 不变 ──────────────────────────────────────── 阶段: 2 (t=2s) 原来: 激光雷达 现在: 不变 ──────────────────────────────────────── 阶段: 3 (t=4s) 原来: — 现在: 障碍物检测 (obstacle_scanner.launch.py) ──────────────────────────────────────── 阶段: 4 (t=5s) 原来: SLAM Toolbox 现在: Map Server + AMCL 定位 (预建地图替代 SLAM) ──────────────────────────────────────── 阶段: 5 (t=7s) 原来: Nav2 导航栈 现在: Hybrid A* 路径规划 + Pure Pursuit 轨迹跟随 ──────────────────────────────────────── 阶段: 6 (t=10s)
● Bash(rm -f /c/Users/DHQ/master_launch_new.py) ⎿ Done
● 修改完成。以下是改动总结:
master_launch.py 变更内容
┌───────────┬───────────────────────┬────────────────────────────────────────────┐ │ 阶段 │ 原来 │ 现在 │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 1 (t=0s) │ 底盘 + EKF + TF + IMU │ 不变 │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 2 (t=2s) │ 激光雷达 │ 不变 │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 3 (t=4s) │ — │ 障碍物检测 (obstacle_scanner.launch.py) │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 4 (t=5s) │ SLAM Toolbox │ Map Server + AMCL 定位 (预建地图替代 SLAM) │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 5 (t=7s) │ Nav2 导航栈 │ Hybrid A* 路径规划 + Pure Pursuit 轨迹跟随 │ ├───────────┼───────────────────────┼────────────────────────────────────────────┤ │ 6 (t=10s) │ VLM + TTS │ 不变 │ └───────────┴───────────────────────┴────────────────────────────────────────────┘
具体改动点
- 移除:cyy_slamtoolbox、gc_navigation2_slamtoolbox、slam_toolbox 节点、nav2_bringup launch
- 新增:obstacle_scanner 节点(发布 /obstacles)
- 新增:map_server + amcl + lifecycle_manager 用于定位
- 新增:grid_astar_theta_node(路径规划,发布 /plan)
- 新增:topology_pure_pursuit_node.py(轨迹跟随,发布 /cmd_vel)
- 话题对齐:planner 的 obstacles_topic 参数覆盖为 /obstacles(与 obstacle_scanner 发布的 topic 一致)
- 原文件已备份为 master_launch.py.bak
常用命令 source /opt/ros/humble/setup.bash source ~/yiliao_ws/install/setup.bash 全部启动
ros2 launch my_robot_bringup master_launch.py
只调试底盘
ros2 launch my_robot_bringup master_launch.py use_lidar:=false use_obstacle:=false use_planner:=false use_vlm:=false
底盘 + 雷达 + 定位 + 规划跟踪(不开障碍物检测和 VLM)
ros2 launch my_robot_bringup master_launch.py use_obstacle:=false use_vlm:=false
只启动 VLM(调试图生文)
ros2 launch my_robot_bringup master_launch.py use_base:=false use_lidar:=false use_obstacle:=false use_planner:=false
底盘 + 雷达 + 障碍物检测 + 规划跟踪(不加 VLM)
ros2 launch my_robot_bringup master_launch.py use_vlm:=false use_tts:=false
只做障碍物检测(不开规划不开 VLM)
ros2 launch my_robot_bringup master_launch.py use_planner:=false use_vlm:=false
只做路径规划+跟踪(不开障碍物检测,靠预建地图)
ros2 launch my_robot_bringup master_launch.py use_obstacle:=false use_vlm:=false
更换 VLM 服务地址
ros2 launch my_robot_bringup master_launch.py vlm_host:=http://192.168.10.200:8000
差分底盘模式
ros2 launch my_robot_bringup master_launch.py akmcar:=false
使用 Cartographer 替代 EKF
ros2 launch my_robot_bringup master_launch.py carto_slam:=true
更换地图文件
ros2 launch my_robot_bringup master_launch.py map_file:=/path/to/my_map.yaml
更换规划器/跟踪器/AMCL 参数文件
ros2 launch my_robot_bringup master_launch.py planner_params_file:=/path/to/planner.yaml ros2 launch my_robot_bringup master_launch.py tracker_params_file:=/path/to/tracker.yaml ros2 launch my_robot_bringup master_launch.py amcl_params_file:=/path/to/amcl.yaml