第1章:课程导论与环境准备
大家好,我是你们的老朋友。今天咱们正式开始《Nav2导航参数在Gazebo中的调优实战》这门课。
说实话,我刚开始接触机器人导航那会儿,也踩过不少坑。记得有一次,我在实验室里调了一整天的参数,机器人就是原地打转,气得我差点把键盘摔了。后来才发现,原来是环境没搭好,一个依赖包版本不对。所以啊,环境准备这一步,看似基础,其实特别关键。
1.1 Nav2概览:导航系统到底在干什么?
Nav2,全称Navigation2,是ROS2生态里最主流的导航框架。说白了,它就是一个让机器人从A点走到B点的“大脑”。
你想想看,一个机器人要自主导航,它得解决几个问题:
- 我在哪?——定位问题,通常靠AMCL或者更现代的粒子滤波
- 周围有什么?——建图问题,用SLAM或者加载已知地图
- 怎么过去?——路径规划问题,全局规划器找大方向,局部规划器躲障碍
- 走稳了吗?——控制问题,把速度指令发给底盘
Nav2把这些模块都整合在了一起。我个人习惯把它看作一个“插件工厂”,每个模块都可以替换、调参。这也是为什么它这么灵活。
核心组件一览:
- map_server:加载和提供地图数据
- amcl:自适应蒙特卡洛定位,估算机器人位姿
- planner_server:全局路径规划(如A*、Dijkstra)
- controller_server:局部路径规划(如DWB、TEB)
- bt_navigator:行为树导航,控制整个导航流程
- recovery_server:异常恢复,比如卡住时倒车
嗯,这里要注意:Nav2不是ROS1的Navigation Stack的简单移植,而是完全重写的。它利用了ROS2的很多新特性,比如生命周期节点、参数动态配置、更高效的消息传递。所以,如果你之前用过ROS1的导航,也别觉得能无缝迁移——有些概念变了。
1.2 Gazebo仿真环境搭建
为什么我们要用Gazebo?很简单——省钱、省时间、省命。我在项目中吃过亏,直接在真车上调参,结果撞坏了激光雷达,修了三千块。从那以后,我坚持先在仿真里跑通,再上真车。
Gazebo是一个高保真的3D仿真器,和ROS2有原生接口。咱们这门课用的版本是Gazebo Classic 11(对应ROS2 Humble)。
安装命令很简单:
sudo apt install ros-humble-gazebo-ros-pkgs
sudo apt install ros-humble-gazebo-ros2-control
安装完成后,验证一下:
gazebo --version
# 应该输出类似 Gazebo multi-robot simulator, version 11.x.x
我个人建议,再装一个turtlebot3_gazebo包,方便后续测试:
sudo apt install ros-humble-turtlebot3-gazebo
小技巧:如果你在启动Gazebo时发现黑屏或者卡死,八成是显卡驱动问题。试试在终端里先跑export LIBGL_ALWAYS_SOFTWARE=1,强制用软件渲染。虽然慢一点,但至少能跑起来。
1.3 ROS2与Nav2安装验证
ROS2的安装我就不赘述了,大家应该都装好了。咱们直接验证Nav2。
安装Nav2:
sudo apt install ros-humble-nav2-bringup
sudo apt install ros-humble-nav2-msgs
sudo apt install ros-humble-nav2-lifecycle-manager
验证安装是否成功,我习惯用这个命令:
ros2 pkg list | grep nav2
如果看到一长串以nav2_开头的包名,比如nav2_amcl、nav2_planner、nav2_controller等等,那就说明装好了。
接下来,咱们跑一个最简单的测试,看看Nav2能不能正常启动:
export TURTLEBOT3_MODEL=waffle
ros2 launch nav2_bringup tb3_simulation_launch.py
如果一切顺利,你会看到Gazebo里出现一个TurtleBot3,Rviz2里也加载了地图和机器人模型。这时候,你可以用“2D Nav Goal”按钮,点一下地图上的某个位置,机器人就会开始规划路径并移动。
注意:我第一次跑这个命令时,等了快两分钟才看到Gazebo界面。别急,Gazebo启动比较慢,尤其是第一次加载模型。如果超过5分钟还没反应,检查一下终端有没有报错信息。
1.4 本章知识体系
为了让大家更直观地理解本章的内容结构,我画了一张图:
这张图把本章的三个核心内容串起来了。你看,Nav2概览是理论基础,Gazebo搭建是仿真平台,ROS2与Nav2验证是实操检验。三者缺一不可。
1.5 避坑指南
最后,分享几个我踩过的坑,希望能帮你省点时间:
- 版本匹配问题:我曾经在Ubuntu 22.04上装了ROS2 Foxy,结果发现Nav2的很多功能不支持。记住,ROS2 Humble + Gazebo Classic 11是官方推荐组合。
- 环境变量:每次新开终端,记得
source /opt/ros/humble/setup.bash。我见过有人忘了source,然后折腾半天说“怎么找不到命令”。 - Gazebo卡死:如果Gazebo启动后界面无响应,试试
killall gzserver gzclient,然后重来。有时候是进程残留。 - 模型下载慢:Gazebo第一次启动会从网上下载模型文件,速度很慢。我建议提前手动下载到
~/.gazebo/models/目录下,或者用代理。
我的习惯:每次开始调参前,我都会先跑一遍这个仿真测试,确保环境是干净的。如果测试失败,绝不往下走。这叫“基线验证”,能帮你省掉很多排查问题的时间。
好了,环境准备就到这里。记住,基础打牢了,后面调参才能得心应手。咱们下一章见。
可可精品资料库