通过Gazebo仿真学TurtleBot3(二)——环境搭建

2023-10-30

1. Ubuntu安装

  网络上教如何安装ubuntu的文章很多,在这里就不再花时间详细介绍了,本文使用的是ubuntu16.04 LTS版本。针对是使用物理机双系统还是虚拟机的问题,我建议资源允许的情况下可以都装。物理机的运行速度更快,尤其是针对Gazebo中3D显示部分,如果是物理机加上独立显卡,运行更为流畅,适合跑运算量要求较高的算法或者大场景高复杂度的仿真。而虚拟机则更为方便,尤其是初学者对于linux系统和ROS系统还不太熟悉,经常出现一些异常情况,或者一些误操作,在这种情况下有可能会需要反复重装系统进行尝试和熟悉。虚拟机的快照回退或整体备份等功能,可以加快迭代速度,节省很多时间。虚拟机可能对于实际物理的机器人系统和传感器接口兼容性会有些问题,但是对于通过仿真学习TurtleBot来说还好,起码适用于初学者尽快熟悉系统、快速迭代。
  当然在虚拟机上搭建学习环境,对于物理计算机的性能还是有一定要求的,最好使用较好的CPU,搭配较大内存,同时配合固态SSD硬盘,这样才能保证相对流畅的使用。笔者使用的笔记本配置i7处理器16g内存和SSD硬盘,在虚拟机下跑ubuntu+ROS还是获得了较为满意的性能。如果没有高性能机器,感觉还可以拿出一台配有独立显卡的旧机器(性能不用太高,一般的独立显卡就可以)专门跑Gazebo仿真器,另一台常用电脑来跑ROS里的机器人控制代码。毕竟ROS支持分布式,而谁家又没有台旧电脑呢。
  ubuntu系统安装好后,还要安装一些常用的软件包,如ssh、git、中文输入法等等,同时很重要的一点就是更改软件服务器地址为最近的镜像服务器地址,这样可以在后期大量软件安装时获得最快的速度,节省大量的时间。

2. ROS安装:

  本文使用的ROS是Kinetic版本,具体安装方法见ROS官方wiki指导。安装时建议选择Desktop-Full Install方式,全桌面版本除ROS内核外还包含了常用的仿真器、软件包和驱动等,适合初学者使用。

初始化rosdep依赖管理

  ROS安装完后记得要初始化rosdep依赖项管理工具,便于后期针对ROS系统中各种软件package包的依赖项管理和安装。

$ sudo rosdep init
$ rosdep update

ROS环境配置

  ROS安装还需要进行环境配置,用于自动添加相应的ROS环境变量在当前bash进程中。一般建议将环境配置添加到~/.bashrc文件当中,以便打开命令终端时自动启用。

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

虚拟机显示配置

  在虚拟机环境下运行Gazebo会有些问题,主要是虚拟机的显卡硬件加速设置引起的。要想正常使用Gazebo,需要通过如下设置关闭硬件加速。

$ echo " export SVGA_VGPU10=0" >> ~/.bashrc
$ source ~/.bashrc

  还有一种方法是在虚拟机设置中关闭3D加速,实测效果不理想,3D显示速度很慢,不建议使用。

系统更新

  ROS安装完毕后,重启ubuntu有可能会无法进入系统,给出如下提示。
这里写图片描述
  这个问题可以通过系统更新加以解决,方法是在这个提示界面下按Ctl+Alt+F1,以命令模式登录系统,输入:

$ sudo apt-get update
$ sudo apt-get upgrade
$ reboot

  重启后又可以正常登录系统了。

3. Turtlebot3安装:

  采用Source模式,将TurtleBot3安装在catkin工程目录catkin_ws中。代码部分分别涵盖了TB3消息包、TB3功能包以及TB3仿真包。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws
$ rosdep install --from-paths src -i -y
$ catkin_make

  注意以上命令第7行,采用rosdep install依赖安装的方式,安装了TB3代码中依赖的各种ROS软件包。rosdep install主要基于软件package包目录下package.xml文件中的依赖项关系来安装依赖项,具体说明见ROS官方wiki。
  catkin_make编译后,还需要将新工程的ROS环境设置加入~/.bashrc文件,命令如下:

$ echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc
$ source ~/.bashrc

  最后还可以根据所选用的TB3机器人是Burger还是Waffle,将其作为环境变量加入~/.bashrc文件,以方便后续使用。否则每次运行程序都需要先输入“export TURTLEBOT3_MODEL=burger”或者“export TURTLEBOT3_MODEL=waffle”。
  命令如下:

$ echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
$ source ~/.bashrc

  最后检查一下环境变量设置是否成功:

$ env | grep TURTLEBOT3

  如显示TURTLEBOT3_MODEL=burger则表示成功。

3. 仿真测试:

简单仿真测试:

$ roslaunch turtlebot3_fake turtlebot3_fake.launch

  这是turtlebot3_simulation里给出的一个简单仿真器,其并没有物理引擎,只是根据速度指令和角速度指令进行积分,给出odom和base_link坐标系之间的tf,无法给出传感器测量数据仿真。运行显示结果如下:
这里写图片描述

Gazebo仿真测试:

$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

  首次打开界面显示要黑一会儿,主要是在下载所需model文件。下载完毕后,显示结果如下所示:
这里写图片描述
  Gazebo仿真器具有物理引擎,除给出机器人的位置姿态以外,还能够给出惯性imu、激光雷达以及相机或RGB-D等传感器仿真数据。因此功能更为丰富。
这里写图片描述

注意:

  针对gazebo和rviz在虚拟机中运行,就像《ROS By Example》中说的那样,开启有时可能会不太稳定而自动退出,可能需要重复试几次。在我的机器上偶尔会进行3次以上的尝试。不过一旦正常打开,运行时一般都正常。

RViz can sometimes be a little finicky about running on different
graphics cards. If you find that RViz aborts during start up, first
just try launching it again. Keep trying a few times if necessary. (On
one of my computers, it is usually the third attempt that works.)

参考资料:
(1)ROS官方wiki:http://wiki.ros.org/
(2)TurtleBot3电子手册:
http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过Gazebo仿真学TurtleBot3(二)——环境搭建 的相关文章

  • Ubuntu Linux 中从剪贴板复制 R

    我想从 Ubuntu Linux 剪贴板复制到 R Studio 中 我的工作流程包括在 R Studio 和 LibreOffice Calc 之间来回移动 我找到了以下用于写入 Linux X11 剪贴板的代码 但我不知道如何读取它 写
  • 如何在 Ubuntu 上的 Docker 容器内安装自制软件

    当我尝试install https docs brew sh Homebrew on Linux installUbuntu 18 04 上的自制程序 Dockerfile FROM ubuntu 18 04 RUN apt get upd
  • 如何在 php5/ubuntu 中安装 pspell?

    我正在尝试在 Ubuntu 中安装适用于 PHP 5 的 pspell 我已经安装了运行 pspell 所需的 aspell 库 如图所示here http www php net manual en pspell requirements
  • GPG 依赖于熵生成

    尝试生成 GPG 密钥 使用 gpg gen key 时 它可能会在发出消息后挂起 没有足够的随机字节可用 请做一些其他的工作来给予 操作系统有机会收集更多熵 还需要 278 个字节 gpg GnuPG 1 4 16 Ubuntu 14 0
  • tomcat.conf 位于哪里?

    我找不到我的tomcat conf 我看过 etc tomcat6 但它不在那里 也不在 usr share tomcat6 我在哪里可以找到tomcat conf在 Linux Ubuntu 中 Try sudo updatedb loc
  • 在 /usr 下找不到 libmysqlclient。在 Ubuntu 12.4 上从源代码构建 PHP 5.2

    我试图建立PHP 5 2 17从源头开始Ubuntu 12 4 64bit使用此配置 configure prefix opt php5 2 with config file path opt php5 2 with mysql 但我不断收
  • git:哈希自动完成

    Is there any chance to configure git to autocomplete the hashes when pressing TAB Edit 请注意 这个问题不是关于自动完成 但关于哈希自动完成 请参阅我对
  • 在 ubuntu 上使用 Kurento 安装错误

    我已经浏览了 Stackoverflow 上的所有 Kurento 问题 之前似乎没有出现过这个错误 我已经根据安装指南安装了 Kurento 媒体服务器和 java 客户端示例 我正在运行媒体服务器 当我去运行客户端应用程序时 问题就出现
  • Boost 更新失败,现在不确定我拥有哪个版本

    在 Ubuntu 22 04 上运行此命令以获得 Boost 1 82 sudo add apt repository ppa mhier libboost latest sudo apt update sudo apt install l
  • 在 Sublime Text 3 中,我可以将 do 文件的选择发送到 Stata 吗?

    This SO question https stackoverflow com questions 18361667 is there a command line editor that highlights the stata syn
  • 节点命令不起作用[重复]

    这个问题在这里已经有答案了 我正在使用 ubuntu 14 04 当我在终端上使用 node hello js 命令时 没有任何反应 我使用 sudo apt get 命令安装了软件包 我不知道出了什么问题 没有错误消息或任何东西 我搜索了
  • 在 ubuntu 10 64 位上安装 java 时出错

    EDIT 我添加此注释是为了解释为什么我将这个问题保留在这里 我添加了 Android 作为关键字 我想知道其他人是否尝试过下载代码以及如何解决此问题 我担心如果我问 Ubuntu 他们会建议我使用 OpenJDK 但问题是 有人使用该 S
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 限制 SFTP 用户只能访问主目录

    我正在尝试在 EC2 ubuntu 服务器上设置客户端 SFTP 空间 访问权限仅限于该用户的主目录 关于此的其他主题只有大约六千个 而且我在其他选项卡中打开了其中的大多数主题 这看起来很简单 我已经搞定了 sudo groupadd lo
  • 与黄金链接器链接的二进制文件运行速度更快吗?

    使用 GEANT4 大型 Monte Carlo C 模拟框架 大量共享库 运行模拟代码 使用黄金链接器和基于标准 BFD 的链接器编译并链接 GEANT 和我的应用程序 看起来黄金跑得更快一点 1 47 vs 1 51 有人可以阐明造成差
  • Ubuntu OpenCV 无法编译

    我正在尝试使用以下命令编译 OpenCV 3 2 1 cmake DCMAKE BUILD TYPE Release DBUILD SHARED LIBS OFF DCMAKE INSTALL PREFIX usr local DOPENC
  • Cuda 6.5 找不到 - libGLU。 (在 ubuntu 14.04 64 位上)

    我已经在我的ubuntu上安装了cuda 6 5 我的显卡是 GTX titan 当我想要制作 cuda 样本之一时 模拟 粒子 我收到这条消息 gt gt gt WARNING libGLU so not found refer to C
  • 如何永久清除 linux/ubuntu 终端或 bash 中的所有历史记录? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当您在 Linux 终端中使用向上键时 可以再次使用之前的命令 很棒的功能 但是 我开始使用命令中的敏感详细信息将 mysql 记录到 mysql 中
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • 代码::块 - 警告:GDB:无法设置控制终端:不允许操作

    我已经通过官方存储库在 Ubuntu 14 04 中安装了 Code Blocks 13 12 当我编译时 一切正常 但是当我调试时 shell 中会显示以下消息 警告 GDB 无法设置控制终端 操作不正确 允许的 程序执行到断点 但当我执

随机推荐

  • Operator ‘+‘ cannot be applied to ‘java.lang.String‘, ‘void‘的解决方法

    刚开始报下图错 是因为我在另一个类中定义有返回值void的方法 如图二 一个想要调用另一个的方法 且是字符串的类型的需要将void换成string 并将输出语句换成return 如图 记得最后一行的分号去掉
  • python循环写入excel中的不同sheet_python实现跨excel的工作表sheet之间的复制方法

    python 将test1的Sheet1通过 跨文件 复制到test2的Sheet2里面 包括谷歌没有能搜出这种问题答案 我们贴出代码 我们加载openpyxl这个包来解决 from openpyxl import load workboo
  • Java项目数据脱敏常用技术及Jasypt实战

    数据脱敏在Java项目中是一项非常重要的任务 它可以保护敏感数据 同时符合法规和隐私保护要求 在本篇博客中 我们将介绍数据脱敏的概念以及在Java项目中常用的开源框架和工具的实战应用 什么是数据脱敏 数据脱敏是指将敏感数据进行处理 使其在保
  • styled-components的配置和使用

    在react中 正常的给组件引入css文件 该css文件会直接作用于全局 使用styled components可以有效控制好css作用域 1 安装 yarn add styled components 2 配置并设置全局样式 新建一个js
  • Java实现CNN

    Java实现CNN 算法介绍 CNN的优势 卷积操作 池化操作 网络结构 训练过程 前向传播 反向传播 代码实现 数据模型类Dataset 矩阵尺寸类Size 核心操作类MathUtils Operator OperatorOnTwo接口下
  • 零基础学习Vue: 第21课 Vue 单向数据流父组件的属性值子组件如何更改:

    零基础学习Vue 第21课 Vue定义子组件template的常见3种写法 单向数据流原理 子组件不能直接修改父组件中传递的数据 如需间接改变父组件传递的数据 解决方法 可以在子组件data选项中存储父组件传递的数据之后修改子组件中的数据
  • 解决httpServletRequest.getParameter获取不到参数

    用httpServletRequest getParameter接收post请求参数 发送端content Type必须设置为application x www form urlencoded 否则会接收不到 RequestMapping
  • go语言各种hash哈希算法使用汇总(超详细代码)

    目录 前言 一 首先以md4为例 一 16进制字符串的md4 二 字符串的md4 三 16进制字符串 字符串封装 二 md4 md5 sha1 ripemd160 sha256 sha512 一 导包 二 单个使用 三 md4 md5 sh
  • 使用jsoup选择器来查找元素

    一 用途 使用jsoup解析网页 抓取手机型号和系统信息 二 获取方式 例子 获取终端制造商链接列表 return public List
  • 话题作文汇总

    一 前言 在备考的过程中 研读和学习了多篇英语话题作文 在此将其记录下来 以便加深印象 二 作文列表 Public Role Model s Rights Internet Kills Conversation Generation Gap
  • form表单的对象

    这个是关于表单 表单在HTML中是很重要的一个部分 关于表单的使用 里面的属性和方法不算很多 这里就介绍一下表单的信息 用法 document forms 是一个数组 包含了文档中所有的表单
  • Python学习之------retry(异常重试)

    在做数据抓取的时候 经常遇到由于网络问题导致的程序保存 先前只是记录了错误内容 并对错误内容进行后期处理 原先的流程 def crawl page url pass def log error url pass url try crawl
  • cocos2dx opengl入门系列四-显示图片

    运行环境 mac 10 12 2 xcode Version 8 2 1 cocos2dx x 3 13 1 代码 新建cocos2dx项目 具体操作官网有教程 新建好后 新建Test cpp 代码如下 Test cpp Texture C
  • Shell脚本编程--grep命令详解

    grep简介 grep global search regular expression RE and print out the line 全面搜索正则表达式并把行打印出来 是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹配的
  • window服务器端口短时间使用完导致oracle监听报错

    接到操作人员反馈系统无法登陆 然后连接到服务器 引用服务器检查服务的cpu 内存 磁盘资源都正常 从应用服务器远程数据库服务器发现不能远程 从应用服务器连接数据库连接报TNS超时 怀疑是数据库服务器的问题 从阿里云的控制台连接到数据库服务器
  • 二叉树学习笔记之B树、B+树、B*树

    动态查找树主要有二叉查找树 Binary Search Tree 平衡二叉查找树 Balanced Binary Search Tree 红黑树 Red Black Tree 都是典型的二叉查找树结构 查找的时间复杂度 O log2 N 与
  • Recyclerview列表item设置成等宽高的正方形,通过计算宽度动态赋值

    首先是效果图 然后是关键代码 onBindViewHolder 给Item元素赋值 Override public void onBindViewHolder ViewHolder holder int position 获取内容layou
  • hdu 1028 Ignatius and the Princess III

    Problem acm split hdu edu cn showproblem php pid 1028 Reference 母函数 Generating function 详解 TankyWoo ACM 母函数专题 Meaning 将一
  • 代码审查领域所面临的瓶颈分析

    代码审查是检查代码中存在缺陷的重要手段 通常分为两阶段进行 一个阶段在代码解析阶段进行 主要应用词法分析 语法分析以及控制流分析等技术检测同数据传递无关的代码缺陷 另外一个阶段是在代码解析后进行 主要应用数据相关路径遍历等技术检测同数据相关
  • 通过Gazebo仿真学TurtleBot3(二)——环境搭建

    1 Ubuntu安装 网络上教如何安装ubuntu的文章很多 在这里就不再花时间详细介绍了 本文使用的是ubuntu16 04 LTS版本 针对是使用物理机双系统还是虚拟机的问题 我建议资源允许的情况下可以都装 物理机的运行速度更快 尤其是