Files
yiliao2026/master_launch_使用指南.md
2026-07-23 14:51:51 +08:00

228 lines
9.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | 使用仿真时间 |
---
## 常用命令
### 全部启动
```bash
ros2 launch my_robot_bringup master_launch.py
```
### 只调试底盘
```bash
ros2 launch my_robot_bringup master_launch.py use_lidar:=false use_slam:=false use_nav2:=false use_vlm:=false
```
### 只建图(底盘 + 雷达 + SLAM
```bash
ros2 launch my_robot_bringup master_launch.py use_nav2:=false use_vlm:=false
```
### 只启动 VLM调试图生文
```bash
ros2 launch my_robot_bringup master_launch.py use_base:=false use_lidar:=false use_slam:=false use_nav2:=false
```
### 底盘 + 雷达 + SLAM + 导航(不加 VLM
```bash
ros2 launch my_robot_bringup master_launch.py use_vlm:=false use_tts:=false
```
### 更换 VLM 服务地址
```bash
ros2 launch my_robot_bringup master_launch.py vlm_host:=http://192.168.10.200:8000
```
### 差分底盘模式
```bash
ros2 launch my_robot_bringup master_launch.py akmcar:=false
```
### 使用 Cartographer 替代 EKF
```bash
ros2 launch my_robot_bringup master_launch.py carto_slam:=true
```
### 使用自定义 SLAM 参数
```bash
ros2 launch my_robot_bringup master_launch.py slam_params_file:=/path/to/my_slam.yaml
```
### 使用自定义 Nav2 参数
```bash
ros2 launch my_robot_bringup master_launch.py nav2_params_file:=/path/to/my_nav2.yaml
```
---
## 前置条件
1. **VLM 服务** — WSL 中先启动 `python vlm_server.py`(如需使用 VLM
2. **Portproxy 转发** — Windows 上管理员 PowerShell 执行 `setup_vlm_forward.ps1`仅需一次IP 不变则不用重跑)
3. **重刷环境** — 启动前清理残留进程:
```bash
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 │ 不变 │
└───────────┴───────────────────────┴────────────────────────────────────────────┘
具体改动点
1. 移除cyy_slamtoolbox、gc_navigation2_slamtoolbox、slam_toolbox 节点、nav2_bringup launch
2. 新增obstacle_scanner 节点(发布 /obstacles
3. 新增map_server + amcl + lifecycle_manager 用于定位
4. 新增grid_astar_theta_node路径规划发布 /plan
5. 新增topology_pure_pursuit_node.py轨迹跟随发布 /cmd_vel
6. 话题对齐planner 的 obstacles_topic 参数覆盖为 /obstacles与 obstacle_scanner 发布的 topic 一致)
7. 原文件已备份为 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