Ubuntu 的 ROS 操作系统 turtlebot3 gazebo仿真

引言

TurtleBot3 Gazebo仿真环境是一个非常强大的工具,能够帮助开发者在虚拟环境中测试和验证机器人算法。
Gazebo是一个开源的3D机器人仿真平台,它能支持物理引擎,允许机器人在虚拟环境中模拟和测试。结合ROS,它能提供一个完整的开发环境,特别适合机器人领域的研究和开发。
本文将介绍如何在ROS Noetic环境下安装和配置TurtleBot3 Gazebo仿真环境。通过这些步骤,在Gazebo中启动TurtleBot3模型,并开始进行路径规划、导航、避障等操作。

学习目标

掌握在ROS Noetic环境下安装TurtleBot3 Gazebo仿真所需的依赖包和仿真包。
学会在Gazebo中启动TurtleBot3的三种车模型,空白场景、默认世界和房屋环境三种环模拟世界环境。
通过远程控制机器人并启用避障功能,了解TurtleBot3的基本操作方法。
安装与自己Ubuntu版本对应的ROS版本,本文ROS Noetic Ninjemys 主要支持 Ubuntu 20.04 (Focal Fossa)。安装前请详细参考 Ubuntu版本、ROS版本与Python 版本之间的关系

学习内容

1 注意事项

注意:本文内容对应的是远程PC(桌面或笔记本电脑),用于控制TurtleBot3。 请勿将此指令应用到TurtleBot3机器人上。
首次启动模拟可能需要一些时间来完成环境设置。

2 TurtleBot3模拟环境

TurtleBot3支持在模拟中使用虚拟机器人进行编程和开发,主要有以下两种开发环境:

2.1 Fake Node + RViz
  • 功能:Fake Node是一种轻量级的模拟方式,可以结合3D可视化工具RViz一起使用。这种环境可以对机器人的基本模型和运动进行测试,比如行进路线和旋转等基础行为。

  • 局限性:由于Fake Node不支持传感器,因此不适合涉及传感器数据的开发任务,比如环境感知、SLAM(即时定位与地图构建)、避障等。

  • 适用场景:适合需要快速验证机器人模型和基本运动功能的场景,但不支持复杂的传感器相关任务。

2.2 Gazebo
  • 功能:Gazebo是一个强大的3D机器人仿真平台,支持多种传感器(如IMU、激光测距仪LDS、摄像头等),并能够逼真地模拟物理环境。这使得Gazebo能够应用于包括SLAM、导航、避障等传感器依赖的复杂任务中。

  • 优点:Gazebo不仅支持TurtleBot3的物理行为模拟,还可以通过ROS接口来接收传感器数据、控制机器人动作,并实时监控机器人在仿真环境中的表现。广泛应用于ROS开发者的项目中,是研究导航、路径规划、环境感知等功能的首选平台。

  • 推荐用途:由于其全面的功能支持,Gazebo非常适合复杂的机器人开发任务,比如基于传感器数据的路径规划、自动导航和避障等。

2.3 Gazebo教程
  • 如果需要详细了解Gazebo的使用方法,建议访问Gazebo官方教程
  • 该教程提供了从基本安装、环境设置到高级开发功能的全面指导,适合各个水平的开发者。

3 安装Gazebo模拟包

  • 本教程使用ROS Gazebo包,因此需要安装适用于ROS1 Noetic的正确Gazebo版本。
  • 确保安装了TurtleBot3和TurtleBot3_msgs包,否则无法启动模拟。
javascript 复制代码
# 克隆TurtleBot3仿真包
cd ~/catkin_ws/src/
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

# 编译工作空间
cd ~/catkin_ws
catkin_make

4 启动模拟环境

TurtleBot3提供了三个不同的车模型与模拟世界环境。启动新的环境前,确保完全终止其它模拟环境。

4.1 车模型环境

4.1.1 TurtleBot3 burger

javascript 复制代码
export TURTLEBOT3_MODEL=burger

TurtleBot3 burger 模型如下图所示:

4.1.2 TurtleBot3 bwaffle

javascript 复制代码
export TURTLEBOT3_MODEL=waffle

TurtleBot3 waffle 模型如下图所示:

4.1.3 TurtleBot3 waffle_pi

javascript 复制代码
export TURTLEBOT3_MODEL=waffle_pi

TurtleBot3 waffle_pi 模型如下图所示:

4.1.3 便捷设置

如果我们仿真开发时只用其中某一款,例如只用TurtleBot3 burger 。但是每次启动一个终端都需要设置TurtleBot3 的车模型,为了方便,我们直接在终端的配置文件中写入,每次打开终端会自动加载设置的某一款车模型。

javascript 复制代码
# 打开.bashrc文件
sudo gedit ~/.bashrc

# 在文件末尾添加以下内容(burger车模型,其他同理)
export TURTLEBOT3_MODEL=burger
4.2 模拟世界环境

4.2.1 空白环境

javascript 复制代码
# 便捷设置后可不用设置车模型
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

TurtleBot3 空白环境如下图所示:

4.2.2 TurtleBot3默认世界

javascript 复制代码
# 便捷设置后可不用设置车模型
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_world.launch

TurtleBot3 默认世界环境如下图所示:

4.2.3 TurtleBot3房屋环境

javascript 复制代码
# 便捷设置后可不用设置车模型
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_house.launch

提示:首次启动TurtleBot3房屋环境时,地图下载可能需要数分钟,具体时间取决于网络状况。

TurtleBot3 房屋环境如下图所示:

4.3 Gazebo启动失败原因

4.3.1 环境变量未自动加载

  • 默认情况下,Gazebo 的环境变量(如路径设置等)可能没有在系统启动时加载,可以手动加载,也可类似4.1.3 便捷设置。
javascript 复制代码
# 终端输入
source /usr/share/gazebo/setup.sh

4.3.2 Gazebo 与 ROS 环境的兼容性问题

  • Gazebo 与 ROS 有各自的环境配置,运行 ROS 的环境时可能会缺少 Gazebo 所需的一些特定配置,导致 Gazebo 启动失败。

4.3.3 多版本冲突

  • 如果系统中存在多个版本的 Gazebo 或相关依赖包,可能会导致 Gazebo 找不到正确的库文件或路径。
  • 手动执行 source /usr/share/gazebo/setup.sh 有助于指定正确的 Gazebo 配置。

5 键盘控制与自主避障

5.1 键盘远程控制TurtleBot3

要使用键盘远程控制TurtleBot3,在新终端窗口中启动teleoperation节点。

javascript 复制代码
# 启动teleoperation节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

键盘远程控制方法如下图所示:

5.2 自主避障操作

一个简单的避障节点已准备好,可让机器人在遇到障碍时自动保持一定距离并转弯以避免碰撞。Ctrl + C结束teleop节点后,启动自主避障节点。

javascript 复制代码
# 启动自主避障节点
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch
5.3 使用RViz可视化数据

RViz可视化仿真运行时发布的主题数据。在新终端窗口中启动RViz。

javascript 复制代码
# 启动RViz
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

TurtleBot3 RViz可视化数据如下图所示:


小结

  • 本文通过详细的操作步骤,在TurtleBot3仿真环境中配置和运行机器人,并通过远程控制、避障等功能实现基本的机器人行为。
  • 利用RViz进行传感器数据的可视化展示,以便实时监控仿真过程。掌握这些技能为实际机器人应用开发和算法验证提供有力支持。

欢迎大家评论留言!!!


友情提示:

  • 专栏:Turtlebot3 PC端ROS环境搭建与仿真
  • 下一节:Ubuntu 的 ROS 2 操作系统 turtlebot3 gazebo仿真

相关推荐
A小辣椒8 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒12 小时前
TShark:基础知识
linux
AlfredZhao14 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言