引言
-
导航仿真是机器人自动化系统中不可或缺的一部分,能够帮助开发者在虚拟环境中测试机器人在复杂场景下的运动与路径规划。
-
在 Gazebo 仿真环境中,TurtleBot3 配合 ROS 操作系统提供了强大的导航功能。在进行导航仿真时,首先需要准备地图,并确保机器人能够正确地定位自己。
-
本文将介绍如何在 Ubuntu 系统上使用 ROS 进行 TurtleBot3 导航仿真,包括环境设置、节点运行、目标设置等步骤。
学习目标
-
掌握如何在 Gazebo 环境中加载 TurtleBot3 模型并启动导航仿真。
-
学习如何使用 AMCL 进行初始位置估计,确保机器人的位置与地图对齐。
-
掌握如何通过 RViz 设置目标位置并启动机器人导航。
-
使用键盘遥控节点精确控制机器人位置,保证导航的精确性。
-
安装与自己Ubuntu版本对应的ROS版本,本文ROS Noetic Ninjemys 主要支持 Ubuntu 20.04 (Focal Fossa),其他ROS 1 版本也适用。安装前请详细参考 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 操作系统安装与测试。
- 🕑见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统turtlebot3环境搭建。
1.2.2 turtlebot3 SLAM仿真
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统 turtlebot3 SLAM仿真。
1.2.2 turtlebot3 gazebo仿真
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Ubuntu 的 ROS 操作系统 turtlebot3 gazebo仿真。
1.2.4 Turtlebot3 buger 硬件与操作平台
- 见专栏:Turtlebot3 PC端ROS环境搭建与仿真之 Turtlebot3 buger 硬件与操作平台详细介绍。
2 启动Gazebo仿真环境
使用以下命令启动 Gazebo 环境,在 TurtleBot3 World 环境下进行导航仿真。
# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger
# 启动TurtleBot3 World环境
roslaunch turtlebot3_gazebo turtlebot3_world.launch
TurtleBot3 默认世界Gazebo仿真环境如下图所示:
3 运行SLAM节点
在新的终端中启动导航节点。
# 设置TurtleBot3模型
export TURTLEBOT3_MODEL=burger
# 启动导航节点,地图配置文件位置为 HOME/map.yaml
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$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
# 启动遥控节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
键盘遥控控制方法如下图所示:
控制机器人:
- w/x:增加/减少线速度
- a/d:增加/减少角速度
- 空格键、s:紧急停止
- CTRL-C:退出遥控
注意:完成后,按Ctrl + C
停止遥控节点,以避免多个节点发布不同的 cmd_vel 数据。
5 导航
5.1 设置导航目标
通过 RViz 设置机器人导航目标。点击 RViz 界面上的“2D Nav Goal”按钮(蓝色箭头),然后在地图上点击目标位置并拖动绿色箭头设置目标的朝向。
- 绿色箭头的根部表示目标的 x, y 坐标,箭头的方向表示目标的角度 θ。
- 设置完毕后,TurtleBot3 将立即开始向目标位置移动。
导航目标设定如下图所示:
5.2 到达设定目标
导航目标设置完成后,机器人通过设定好的路径规划方法进行导航,最终到达设定目标位置,朝向设定方向。
到达设定目标后如下图所示:
小结
- 本文详细讲解了在 ROS 操作系统下使用 TurtleBot3 进行导航仿真的步骤。
- 从加载仿真环境、启动导航节点,到通过 AMCL 进行初始定位,再到使用 RViz 设置导航目标,可以顺利完成导航。
- 此外,通过键盘遥控和精准定位,可以更好地控制机器人并进行目标导航任务。这些操作提供了高效的测试与调试工具,适用于机器人导航算法的开发与验证。
欢迎大家评论留言!!!
友情提示:
- 专栏:Turtlebot3 PC端ROS环境搭建与仿真
- 下一节:Ubuntu 的 ROS 2 操作系统 turtlebot3 导航仿真