Nav2 安装与部署
二、安装与部署
安装步骤
- 装好 ROS2 发行版,确认基础话题能通。
- 安装导航栈与 bringup 包,以及 RViz 的导航插件(否则 RViz 里看不到代价地图和路径)。
- 准备地图:用 SLAM 建好图后保存为 pgm 加 yaml,yaml 里要写明分辨率、原点、占用阈值。
- 准备参数文件:从官方 bringup 包里提供的默认参数文件复制一份改,不要从零手写。
- 先在有仿真的环境里跑通,再上真机。
sudo apt install -y \
ros-$ROS_DISTRO-navigation2 \
ros-$ROS_DISTRO-nav2-bringup \
ros-$ROS_DISTRO-nav2-rviz-plugins
# 用 TurtleBot3 仿真做一次冒烟测试
export TURTLEBOT3_MODEL=waffle
ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False
地图 yaml 的典型内容:
image: warehouse.pgm
resolution: 0.05
origin: [-12.5, -12.5, 0.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
resolution 是每像素多少米,origin 是地图左下角在地图坐标系下的位姿。这两个值写错,导航会整体偏移或尺度不对,而且往往表现为「路径看起来正常,车就是走不到」。
常见报错排查
| 报错 / 现象 | 原因 | 处理 |
|---|---|---|
| Timed out waiting for transform from base_link to map | TF 链断裂,或定位模块没启动 | 先确认 map 到 odom 有发布,再用变换树工具检查整条链 |
| 节点一直处于 inactive | 生命周期没激活,或某个必需的插件加载失败 | 用生命周期命令行手动 configure 与 activate,看具体报错 |
| 代价地图全黑或全白 | 雷达话题没接上、坐标系不对、观测范围与地图尺寸不匹配 | 在 RViz 里单独打开该层排查,确认 observation_sources 的话题名与类型 |
| 车不动,控制器报无法前进 | 目标点在障碍物里、局部代价地图被糊住、进度检查超时 | 检查目标点可达性,放宽进度检查参数,确认局部地图干净 |
| AMCL 定位乱跳 | 初始位姿没给、雷达与地图不匹配、粒子数太少 | 给准确初值,确认雷达扫描与地图墙体对齐 |
| 修改参数后没生效 | YAML 层级写错(每个节点都要有独立的一层键) | 对照默认参数文件的结构,注意局部代价地图是双层嵌套键 |
| 仿真里正常,真机跑飞 | 一边用系统时间一边用仿真时间 | 统一 use_sim_time;真机为 false,仿真为 true |
