第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 本章知识体系

为了让大家更直观地理解本章的内容结构,我画了一张图:

第1章:课程导论与环境准备 Nav2概览 Gazebo仿真环境搭建 ROS2与Nav2安装验证 核心组件:定位、规划、控制 与ROS1 Navigation Stack区别 安装Gazebo与ros2控制插件 验证:gazebo --version 安装nav2-bringup等包 运行tb3仿真测试 目标:搭建可运行的Nav2+Gazebo仿真环境 为后续参数调优打下坚实基础

这张图把本章的三个核心内容串起来了。你看,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/目录下,或者用代理。

我的习惯:每次开始调参前,我都会先跑一遍这个仿真测试,确保环境是干净的。如果测试失败,绝不往下走。这叫“基线验证”,能帮你省掉很多排查问题的时间。

好了,环境准备就到这里。记住,基础打牢了,后面调参才能得心应手。咱们下一章见。


可可精品资料库