在真实 TurtleBot 3 上导航
本教程介绍如何在真实的 TurtleBot 3 上使用 ROS 2 Nav2 进行控制和导航。 开始之前,建议先阅读快速入门,尤其是初次接触 ROS 和 Nav2 的用户。
完成本教程大约需要 1 小时,具体取决于你对 ROS 和机器人的熟悉程度,以及所使用的操作系统。
需要先安装 Nav2 和 TurtleBot3。 如尚未安装,请参照快速入门中的步骤操作。
可通过以下命令安装 TurtleBot3 软件,也可从 TurtleBot3 仓库 获取:
首先,加载 ROS 2 安装目录的环境变量:
source /opt/ros/<ros2-distro>/setup.bash然后安装 TurtleBot3 软件包:
sudo apt install ros-$ROS_DISTRO-turtlebot3 ros-$ROS_DISTRO-turtlebot3-msgs ros-$ROS_DISTRO-turtlebot3-bringup0- 设置环境变量
Section titled “0- 设置环境变量”在本教程中,每次打开新终端时,请先运行以下命令:
source /opt/ros/<ros2-distro>/setup.bashexport TURTLEBOT3_MODEL=waffle
1- 启动 TurtleBot 3
Section titled “1- 启动 TurtleBot 3”启动机器人接口:
ros2 launch turtlebot3_bringup robot.launch.py use_sim_time:=False
2- 启动 Nav2
Section titled “2- 启动 Nav2”导航前需要一张环境地图,可使用已有的地图,也可通过 SLAM 实时建图。
如需了解如何在 Nav2 中结合 SLAM 使用,请参考教程:边建图边导航(SLAM)。
所需文件:
your-map.mapyour-map.yaml
<your_map>.yaml 是提供给 Nav2 的地图配置文件。
该文件包含地图分辨率、障碍物与自由空间的阈值,以及地图文件路径等信息,需确保这些参数正确无误。
关于 map.yaml 的更多信息,请参考这里。
启动 Nav2。若设置 autostart:=False,则需在 RViz 中点击启动按钮来初始化节点。
确保 use_sim_time 设置为 False,以使用系统时间而非 Gazebo 的仿真时间。
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=False autostart:=False map:=/path/to/your-map.yaml
注意:请将 /path/to/your-map.yaml 替换为 your-map.yaml 文件的实际路径。
3- 启动 RViz
Section titled “3- 启动 RViz”使用预先定义的配置文件启动 RViz。
ros2 run rviz2 rviz2 -d $(ros2 pkg prefix nav2_bringup)/share/nav2_bringup/rviz/nav2_default_view.rviz
启动后,RViz 中央应显示 TurtleBot 3 的模型轮廓。 若 auto_start 参数设置为 false,请点击左下角的启动按钮,地图随后将出现在 RViz 中。


4- 初始化 TurtleBot 3 的位置
Section titled “4- 初始化 TurtleBot 3 的位置”首先,确认机器人在实际房间中的位置,并在地图上找到对应点。
在 RViz 中设置机器人的初始位姿:点击 2D Pose Estimate 按钮,然后在地图上点击机器人所在的位置。 绿色箭头指示的方向即为 TurtleBot 的朝向。

设置完成后,TurtleBot 的 3D 模型会移动到该位置。 初始位姿的估计允许小幅误差。
5- 发送目标位姿
Section titled “5- 发送目标位姿”在地图上为 TurtleBot 选定一个目标位置。 可用 Nav2 Goal 或 GoalTool 按钮向 TurtleBot 3 发送目标位置和朝向。
注意:Nav2 Goal 按钮通过 ROS 2 Action 发送目标,而 GoalTool 将目标发布到话题。

设定目标位姿后,Nav2 会规划一条全局路径,并驱动机器人沿地图导航。

此时可以看到 TurtleBot 3 在房间中朝目标位置移动,参见下方视频。