228 lines
9.0 KiB
Markdown
228 lines
9.0 KiB
Markdown
# 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
|
||
|
||
|