Ubuntu 的 ROS 操作系统 turtlebot3 gazebo仿真

引言

在这里插入图片描述


学习目标

在这里插入图片描述


学习内容

1 注意事项


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包,否则无法启动模拟。
# 克隆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

export TURTLEBOT3_MODEL=burger

TurtleBot3 burger 模型如下图所示:

在这里插入图片描述

4.1.2 TurtleBot3 bwaffle

export TURTLEBOT3_MODEL=waffle

TurtleBot3 waffle 模型如下图所示:

在这里插入图片描述

4.1.3 TurtleBot3 waffle_pi

export TURTLEBOT3_MODEL=waffle_pi

TurtleBot3 waffle_pi 模型如下图所示:

在这里插入图片描述

4.1.3 便捷设置

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

# 打开.bashrc文件
sudo gedit ~/.bashrc

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

4.2 模拟世界环境

4.2.1 空白环境

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

TurtleBot3 空白环境如下图所示:

在这里插入图片描述

4.2.2 TurtleBot3默认世界

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

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

在这里插入图片描述

4.2.3 TurtleBot3房屋环境

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

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

TurtleBot3 房屋环境如下图所示:

在这里插入图片描述

4.3 Gazebo启动失败原因

4.3.1 环境变量未自动加载

  • 默认情况下,Gazebo 的环境变量(如路径设置等)可能没有在系统启动时加载,可以手动加载,也可类似4.1.3 便捷设置。
# 终端输入
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节点。

# 启动teleoperation节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

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

在这里插入图片描述

5.2 自主避障操作

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

# 启动自主避障节点
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch

5.3 使用RViz可视化数据

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

# 启动RViz
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

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

在这里插入图片描述


小结

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

欢迎大家评论留言!!!


友情提示:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

供应链管理、一件代发系统功能及源码分享 PHP+Mysql

随着电商行业的不断发展,传统的库存管理模式已经逐渐无法满足市场需求。越来越多的企业选择“一件代发”模式,即商家不需要自己储备商品库存,而是将订单直接转给供应商,由供应商直接进行发货。这种方式极大地降低了企业的运营成本…

5G CPE:为什么活动会场与商铺的网络成为最新选择

在快节奏的现代社会中,无论是举办一场盛大的活动还是经营一家繁忙的商铺,稳定的网络连接都是不可或缺的基石。然而,面对复杂的布线难题或高昂的商业宽带费用,许多场所往往陷入两难境地。幸运的是,5G CPE(Cu…

python怎么安装numpy

1、在python官网https://pypi.python.org/pypi/numpy中找到安装的python版本对应的numpy版本。 例如: python版本是: 下载的对应numpy版本是: 2、将numpy下载到python的安装目录下的scripts文件夹中; 3、然后在cmd中执行以下命…

Qt主线程把数据发给子线程,主线程会阻塞吗

演示&#xff1a; #include <QCoreApplication> #include <QThread> #include <QObject> #include <QDebug>// 子线程类 class Worker : public QObject {Q_OBJECT public slots:void processData(int data) {qDebug() << "Processing dat…

OSG开发笔记(三十一):OSG中LOD层次细节模型介绍和使用

​若该文为原创文章&#xff0c;未经允许不得转载 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/143697554 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 长沙红胖子Qt…

在Linux上部署(MySQL Redis Elasticsearch等)各类软件

实战章节&#xff1a;在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c…

thinkphp6 --数据库操作 增删改查

一、数据库连接配置 如果是本地测试&#xff0c;它会优先读取 .env 配置&#xff0c;然后再读取 database.php 的配置&#xff1b; 如果禁用了 .env 配置&#xff0c;则会读取数据库连接的默认配置&#xff1a; # .env文件&#xff0c;部署服务器&#xff0c;请禁用我 我们可以…

探索 HTML 和 CSS 实现的 3D旋转相册

效果演示 这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果&#xff0c;每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画&#xff0c;实现了一个动态的旋转展示效果 HTML <div class"wrapper"><div class"inner" style"-…

什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性

什么是 OpenGL ES OpenGL ES 是一种为嵌入式系统和移动设备设计的3D图形API(应用程序编程接口)。它是标准 OpenGL 3D 图形库的一个子集,专门为资源受限的环境(如手机、平板电脑、游戏机和其他便携式设备)进行了优化。 由于其在移动设备上的广泛适用性,OpenGL ES是学习移…

【GPTs】Get Simpsonized:一键变身趣味辛普森角色

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Get Simpsonized主要功能适用场景优点缺点使用方式 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 指令保护和安全规则&…

JS 实现游戏流畅移动与按键立即响应

AWSD 按键移动 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box1 {width: 400px;height: 400px;background: yellowgreen;margin: 0 auto;position: relative;}.box2 {width: 50px;height:…

安全见闻-泷羽sec课程笔记

编程语言 C语言&#xff1a;一种通用的、面向过程的编程语言&#xff0c;广泛应用于系统软件和嵌入式开发。 C:在C语言基础上发展而来&#xff0c;支持面向对象编程&#xff0c;常用于尊戏开发、高性能计算等领域。 Java:一种广泛使用的面问对象编程语言&#xff0c;具有跨平台…

vue跳转传参

path 跳转只能使用 query 传参 ,name 跳转都可以 params &#xff1a;获取来自动态路由的参数 query &#xff1a;获取来自 search 部分的参数

Android 最新的AndroidStudio引入依赖失败如何解决?如:Failed to resolve:xxxx

错误信息&#xff1a; 在引入依赖时报错&#xff1a;Failed to resolve: xxx.xxxx:1.1.0 解决方案&#xff1a; 需要修改maven库的代理&#xff0c;否则就需要翻墙编译 新的AndroidStudio版本比较坑&#xff0c;修改代理的位置发生了变化&#xff1a; 最新变化&#xff1a;…

Mysql每日一题(行程与用户,困难※)

今天给大家分享一个截止到目前位置&#xff0c;我遇到最难的一道mysql题目&#xff0c;非常建议大家亲手做一遍 完整代码如下&#xff0c;这道题的主要难点是它有两个外键&#xff0c;以前没遇到过&#xff0c;我也没当回事&#xff0c;分享一下错误经验哈 当时我写的where判断…

深度学习知识点5-马尔可夫链

马尔科夫链的思想&#xff1a;过去所有的信息都已经被保存到了现在的状态&#xff0c;基于现在就可以预测未来。 The future is independent of the past given the present 马尔可夫链属于随机过程课程&#xff08;使用统计模型一些事物的过程进行预测和处理&#xff09; 概…

飞凌嵌入式RK3576核心板已适配Android 14系统

在今年3月举办的RKDC2024大会上&#xff0c;飞凌嵌入式FET3576-C核心板作为瑞芯微RK3576处理器的行业首秀方案重磅亮相&#xff0c;并于今年6月率先量产发货&#xff0c;为客户持续稳定地供应&#xff0c;得到了众多合作伙伴的认可。 FET3576-C核心板此前已提供了Linux 6.1.57…

css文字间距撑满横向距离

效果&#xff1a; 代码&#xff1a; 、 text-align:justify;text-align-last: justify;

Dynamo介绍

一、介绍 1、简介 Amazon DynamoDB 是由 AWS 提供的一种完全托管的 NoSQL 数据库服务&#xff0c;适用于高性能、可扩展的应用程序。它设计用于处理大规模的数据存储和高速数据访问&#xff0c;广泛应用于需要低延迟、高吞吐量的场景&#xff0c;如移动应用、电商、游戏后端、…

【Linux】HTTP协议和HTTPS加密

文章目录 HTTP1、概念2、认识URL3、协议格式、请求方法和状态码4、HTTP请求和响应报头5、Cookie和Session HTTPS1、对称和非对称加密2、对称非对称加密安全分析3、证书 HTTP 1、概念 我们在应用层定制协议时&#xff0c;不建议直接发送结构体对象&#xff0c;因为在不同的环境…