引言
-
导航仿真是机器人自动化系统中不可或缺的一部分,能够帮助开发者在虚拟环境中测试机器人在复杂场景下的运动与路径规划。
-
在 Gazebo 仿真环境中,TurtleBot3 配合 ROS 2 提供了强大的导航功能。在进行导航仿真时,首先需要准备地图,并确保机器人能够正确地定位自己。
-
本文将介绍如何在 Ubuntu 系统上使用 ROS 2 的 Navigation2 包进行 TurtleBot3 的导航仿真。通过详细的步骤,开发者可以在虚拟环境中配置和调试机器人的路径规划与避障功能,为实际部署提供支持。

学习目标
-
掌握如何在 Gazebo 环境中加载 TurtleBot3 模型并启动导航仿真。
-
了解如何启动并运行 ROS 2 Navigation2 节点,执行路径规划与目标设定
-
掌握使用 RViz2 进行机器人的初始位置估计和导航目标设置。
-
使用键盘遥控节点精确控制机器人位置,保证导航的精确性。
-
安装与自己Ubuntu版本对应的ROS 2版本,本文ROS 2 Humble Hawksbill 主要支持 Ubuntu 22.04 (Jammy Jellyfish),其他ROS 2 版本也适用。安装前请详细参考 Ubuntu版本、ROS版本与Python 版本之间的关系。

学习内容
1 注意事项
1.1 兼容性注意事项
- 注意:本文内容对应的是远程PC(桌面或笔记本电脑),用于控制TurtleBot3。 请勿将此指令应用到TurtleBot3机器人上。
- 首次启动模拟可能需要一些时间来完成环境设置。
- SLAM 仿真前请详细参考 ———>专栏: Linux系统之Ubuntu系统安装 。
- SLAM 仿真前请详细参考 ———>专栏: Turtlebot3 PC端ROS环境搭建与仿真。
1.2 ROS 系统安装、turtlebot3环境搭建与gazebo仿真
1.2.1 安装 ROS 系统与搭建turtlebot3环境
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 2 操作系统安装与测试。
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 2 操作系统turtlebot3环境搭建。
1.2.2 turtlebot3 gazebo仿真
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 2 操作系统 turtlebot3 gazebo仿真。
1.2.2 turtlebot3 gazebo仿真
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 2 操作系统 turtlebot3 gazebo仿真。
1.2.4 Turtlebot3 buger 硬件与操作平台
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Turtlebot3 buger 硬件与操作平台详细介绍。
2 启动Gazebo仿真环境
使用以下命令启动 Gazebo 环境,在 TurtleBot3 World 环境下进行导航仿真。
# 设置 TurtleBot3 模型
$ export TURTLEBOT3_MODEL=burger
# 启动 Gazebo 仿真环境
$ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
TurtleBot3 默认世界Gazebo仿真环境如下图所示:

3 运行SLAM节点
在新的终端中启动导航节点。
# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger
# 启动导航节点,地图配置文件位置为 HOME/map.yaml
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml
RViz可视化界面如下图所示:

4 估计初始位置
在运行导航节点之前,必须进行初始位置估计,以便为 AMCL(自适应蒙特卡洛定位)提供初始数据。如果没有进行初始位置估计,那么机器人无法确定自己的位置,自然不能到达目标点。
4.1 Gazebo与RViz可视化界面
Gazebo与RViz可视化界面如下图所示:

4.2 2D Pose Estimate
过点击 RViz 中的“2D Pose Estimate”按钮(上图箭头)来实现。在地图上点击机器人所在的位置,并拖动绿色箭头至机器人当前的朝向。重复几次后,激光雷达(LDS)传感器数据正确重叠在保存的地图上。
2D Pose Estimate操作如下图所示:

初始位置标记后显示如下图所示:

4.3 键盘遥控精确定位机器人
在新的终端中启动遥控节点,通过键盘控制TurtleBot3的运动。
# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger
# 启动键盘遥控节点来帮助精确定位
$ ros2 run turtlebot3_teleop teleop_keyboard
键盘遥控控制方法如下图所示:

控制机器人:
- w/x:增加/减少线速度
- a/d:增加/减少角速度
- 空格键、s:紧急停止
- CTRL-C:退出遥控
注意:完成后,按Ctrl + C
停止遥控节点,以避免多个节点发布不同的 cmd_vel 数据。
5 导航
5.1 设置导航目标
通过 RViz 设置机器人导航目标。点击 RViz 界面上的“2D Nav Goal”按钮(蓝色箭头),然后在地图上点击目标位置并拖动绿色箭头设置目标的朝向。
- 绿色箭头的根部表示目标的 x, y 坐标,箭头的方向表示目标的角度 θ。
- 设置完毕后,TurtleBot3 将立即开始向目标位置移动。
导航目标设定如下图所示:

5.2 到达设定目标
导航目标设置完成后,机器人通过设定好的路径规划方法进行导航,最终到达设定目标位置,朝向设定方向。
到达设定目标后如下图所示:

小结
- 通过本文的操作步骤,开发者能够在 Gazebo 中配置并运行 TurtleBot3 的导航仿真。
- ROS 2 Navigation2 包提供了强大的路径规划与避障功能,能够帮助机器人在复杂环境中进行自主导航。
- 从加载仿真环境、启动导航节点,到通过 AMCL 进行初始定位,再到使用 RViz 设置导航目标,可以顺利完成导航。。
- 此外,通过键盘遥控和精准定位,可以更好地控制机器人进行目标导航任务。这些操作提供了高效的测试与调试工具,适用于机器人导航算法的开发与验证。
欢迎大家评论留言!!!
友情提示:
- 专栏:Turtlebot3 PC端ROS环境搭建与仿真
- 下一节:Ubuntu 的 ROS 2 操作系统 turtlebot3 发布话题