Ubuntu20.04下Turtlebot3机器人仿真
前言
首先,参考了以下链接,感谢这位博主详细的分享,如有需要请直接移步。
传送门:Click
关于Gazebo物理仿真平台与Rviz可视化工具,urdf
和xacro
这里不再多做介绍。本文主要讲解如何利用开源Turtlebot3机器人模型和Gmapping算法,基于自己在Gazebo上building editor上构建的地图进行仿真实验。 后续考虑利用在此基础上进一步提升。
1、实验环境
Ros-Noetic
Gazebo 11
2、Turtlebot3功能包准备
urtlebot3功能包中继承了了TurtleBot3的机器人文件、SLAM和导航功能包、遥控功能包和bringup功能包等,另一个功能包turtlebot3_simulations中包含了更丰富的仿真文件(如一些rviz和gazebo的launch文件)。后面将从这两个包中复制出我们需要的文件来集成,并进行仿真。
turtlebot3包下载地址:https://github.com/ROBOTIS-GIT/turtlebot3
turtlebot3_simulations包下载地址:https://github.com/ROBOTIS-GIT/turtlebot3_simulations
turtlebot3 wiki简介:http://wiki.ros.org/turtlebot3
主要是两种型号:Burger 和 Waffle Pi
![]() |
![]() |
下面是关于他们的主要规格列表(略),主要参考其传感器:
![]() |
可以看到Waffle Pi传感器主要包括机械激光传感器(采样频率5hz以上)、树莓派摄像头模组 v2.1和三轴陀螺仪和三轴加速度计的IMU。
3、创建workspace和功能包
相关命令如下:
mkdir -p catkin_turtlebot3/src
cd ~/catkin_turtlebot3/src
catkin_init_workspace
catkin_create_pkg turtlebot3_sim_test urdf xacro gazebo_ros ##添加urdf xacro gazebo_ros依赖
在turtlebot3_sim_test功能包下创建urdf
(存储urdf模型文件)、meshes
(存储模型渲染文件)、worlds
(存储gazebo仿真环境文件)、models
(用来存储gazebo仿真环境配置文件)、rviz
(用来存储rviz环境下机器人配置文件)、launch
(用来存储启动文件)文件夹。
将上面github项目中clone下来的文件:
1、turtlebot3项目中turtlebot3_description/urdf目录下turtlebot3_waffle_pi.urdf.xacro
文件拷贝到turtlebot3_sim_test功能包下urdf文件夹中;turtlebot3_description/meshes文件夹下所有文件
拷贝到turtlebot3_sim_test功能包下meshes文件夹中。
2、turtlebot3_simulations 项目中turtlebot3_gazebo/worlds目录下turtlebot3_house.world
、turtlebot3_world.world
两文件到turtlebot3_sim_test的world
文件夹;turtlebot3_gazebo/models/文件夹下turtlebot3_house
和turtlebot3_world
两个文件夹拷贝到turtlebot3_sim_test的models文件夹下。
3、rviz和launch的配置文件后续再写
完成后turtlebot3_sim_test功能包目录如下:
4、在Rviz可视化工具下加载出机器人模型
在turtlebot3_sim_test/launch文件夹下添加turtlebot3_sim_rviz.launch文件。
<launch><arg name="model" default="waffle_pi" /><!-- 在参数服务器载入xacro文件 --><param name="robot_description" command="$(find xacro)/xacro $(find turtlebot3_sim_test)/urdf/turtlebot3_$(arg model).urdf.xacro" /><!-- 启动rviz --><node name="rviz" pkg="rviz" type="rviz" /><!-- 启动机器人状态和关节状态发布节点 --><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" /><node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" /></launch>
注意载入xacro文件路径写法,这里加载了turtlebot3_waffle_pi.urdf.xacro
文件。
保存之后我们可以编译功能包。如果你的工作空间还有其他功能包,我们选择单独编译,相关代码如下:
cd ~/catkin_turtlebot3
catkin_make -DCATKIN_WHITELIST_PACKAGES="turtlebot3_sim_test"
source devel/setup.bash ##每新开终端都需要source,可以考虑把这个写入.bashrc中
之后,运行rviz的launch文件可以加载出机器人的模型
$ roslaunch turtlebot3_sim_test turtlebot3_sim_rviz.launch
初始加载没有调整好接收数据,Rviz没有数据
右上角map改成base_link,同时,右下角Add中添加RobotModel,机器人就可以正常显示出来了。加上TF可以显示机器人上存在的不同坐标系(包括不同传感器、左右轮等)。
因为每次运行该机器人模型的launch文件时,Rviz会自动处于一种初始化状态,这时我们可以将配置信息保存,这样下次运行launch就不需要再重新配置。配置信息主要保存在turtlebot3_sim_test功能包下rviz
文件夹中。点击右上角file->save config as,然后取一个文件名称,这里命名为turtlebot3_pi。
这个时候还没有结束,因为要修改launch文件中自动加载该配置文件,所以需要修改功能包下launch文件夹中turtlebot3_sim_rviz.lanch
。
将启动rviz的代码修改如下:
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find turtlebot3_sim_test)/rviz/turtlebot3_pi.rviz" />
## 注意这里的turtlebot3_pi.rviz以自己命名为准
5、在Gazebo中加载出机器人模型(非自定义仿真环境)
首先,我们需要修改turtlebot3_sim_test下的package.xml文件。因为原项目文件turtlebot3_house.world默认加载地址为gazebo下的地址(/usr/share/gazebo-11/models),而不是我们功能包下models文件夹中的地址。因此可以在package.xml中加入如下代码:
<gazebo_ros gazebo_model_path="${prefix}/models"/>
同时,在功能包的launch文件夹中加入启动gazebo的launch文件,命名为turtlebot3_sim_gazebo.launch
,内容如下:
<launch><arg name="model" default="waffle_pi"/><arg name="x_pos" default="-2.0"/><arg name="y_pos" default="-0.5"/><arg name="z_pos" default="0.0"/><include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="world_name" value="$(find turtlebot3_sim_test)/worlds/turtlebot3_house.world"/><arg name="paused" value="false"/><arg name="use_sim_time" value="true"/><arg name="gui" value="true"/><arg name="headless" value="false"/><arg name="debug" value="false"/></include><param name="robot_description" command="$(find xacro)/xacro $(find turtlebot3_sim_test)/urdf/turtlebot3_$(arg model).urdf.xacro" /><node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf" args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>
这时,我们可以启动launch文件了,但第一次加载时间较长,注意耐心等待。第二次启动后加载速度很快。终端命令:
$ roslaunch turtlebot3_sim_test turtlebot3_sim_gazebo.launch
新开终端,利用rostopic list查看话题节点如下,通常我们比较关注的包含cmd_vel、tf 和一些传感器信息话题节点
利用rostopic info /cmd_vel查看该话题节点,可以看到gazebo订阅了这一话题节点,这样我们可以终端发布控制信息控制机器人的运动
6、键盘对机器人的控制
ros提供通用键盘控制包来操控机器人的运动。我们先安装相关命令:
sudo apt-get install ros-noetic-teleop-twist-keyboard
完成后可以通过键盘控制机器人运动,终端命令如下(已开gazebo仿真环境)
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
7、利用gazebo、rviz工具及开源Gmapping进行定位和建图
先启动gazebo仿真环境
$ roslaunch turtlebot3_sim_test turtlebot3_sim_gazebo.launch
启动Rviz可视化工具
$ roslaunch turtlebot3_sim_test turtlebot3_sim_rviz.launch
rviz启动以后,我们调整好相关配置。
其中map的topic暂时为空,因为我们还没有运行Gmapping节点,并没有发布地图节点信息。因此,我们需要新开终端运行开源Gmapping节点。在此之前先安装turtlebot3相关的slam算法包ros包,命令如下:
$ sudo apt-get install ros-noetic-turtlebot3-slam
完成之后,运行gamapping算法
roslaunch turtlebot3_slam turtlebot3_gmapping.launch
此时,我们在rviz中调整map接受/map的话题,可以看到gmapping算法已经正常运行
新开终端实现键盘控制机器人,完成初步建图工作。
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
经过一番操作之后,建出地图如图所示……效果有点一言难尽。
关于节点间流转关系,可以用rqt_grap命令查看计算图,后续再将机器人模型移植到自定义地图环境中。
Ubuntu20.04下Turtlebot3机器人仿真相关推荐
- Ubuntu20.04下 PC机对Locobot机器人的ROS远程通讯
写在最前面: 最近参加了机器人导航的项目,前前后后配了好几次的ROS远程通讯,在这里把步骤.遇到的问题.教程什么的都汇总一下. 先明确我们要做的事情--实现在我们自己的PC机(之后简称Moni ...
- 13.在Ubuntu20.04下,chromium无法输入中文以及如何卸载chromium浏览器
因为chromium安装比较简单,所以在Ubuntu20.04下直接安装了chromium,但是最近发现,无法在chromium中输入中文了,经过一顿折腾,最终也没搞定,解决办法就是安装Chrome ...
- U盘在Ubuntu20.04下只能读取文件不能向U盘复制文件
背景 U盘在Ubuntu20.04下只能读取文件不能向该U盘复制文件,该U盘在其余电脑上一点问题不存在. Ubuntu系统插入其余U盘也能正确读取,只对该U盘无法处理. 处理过程 在CSDN中找了许多 ...
- ubuntu20.04下安装qq和微信(最新)
ubuntu20.04下安装qq和微信(最新) 在ubuntu(debian系列)下安装软件,一般可以通过这两种简单的方式: sudo apt install 软件包 或者 sudo dpkg -ℹ ...
- 关于Ubuntu20.04下向日葵远程软件连接中断的解决方法
关于Ubuntu20.04下向日葵远程软件连接中断的解决方法 一.安装并登陆好Ubuntu的向日葵客户端后 二.切换lightdm图形页面 一.安装并登陆好Ubuntu的向日葵客户端后 在终端下运行以 ...
- 【学习mysql】ubuntu20.04下彻底删除mysql8.0
ubuntu20.04下安装mysql8.0配置出错次数到吐血,却熟练了删除mysql的基本操作.记录一下 1.保证mysql进程停止 sudo service mysql stop 2.查看mysq ...
- Ubuntu20.04下安装 R 及 CRAN 软件包(命令行操作)
文章目录 前言 一.R 的安装 1. 确定软件包版本 2. 安装CRAN中的R二进制文件 3. 安装 R 及其依赖项 4. 检查安装情况 二.添加CRAN软件包 1. 添加当前的 R4.1.0 或更高 ...
- LeGO-LOAM:Ubuntu20.04下的编译与运行
LeGO-LOAM在Ubuntu20.04下的编译与运行 一.源码及数据集下载 二.安装gtsam 三.建立ROS工作空间 四.LeGO-LOAM的编译 五.LeGO-LOAM的运行 六.可能会遇到的 ...
- Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】
LeGO-LOAM在Ubuntu20.04下编译和运行的问题 一.OpenCV 版本问题 二.pcl问题 1. C++14环境 2. 报错:'Index' is not a member of 'Ei ...
最新文章
- 蚌埠计算机对口招学生谈谈,蚌埠市865人报名对口高考
- vue 自定义select下拉框样式(div模拟)
- 83. Leetcode 148. 排序链表 (排序)
- linux安装phoenix 5.1.0(对应hbase 2.2.6)
- php程序员可能不了解的编程细节
- 荣耀v20、荣耀20Pro、mate20、Nova5Pro选哪个?
- LeetCode 169 Majority Element 解题报告
- 单片机c语言编程定时,单片机C语言编程定时器的几种表达方式
- 数据结构之数组和列表
- R语言使用ggplot2包使用geom_density()函数绘制分组密度图(填充色配置、半透明填充色、添加均值线)实战(density plot)
- 常见的用户密码加密方式以及破解方法
- b B kb kB kbps KBps 换算
- 基于华为java编程规范的checkstyle.xml以及格式化模版,注释模版
- springBoot学习笔记(6)——@Valid和@Validated的使用
- 毛玻璃效果 php,CSS3打造磨砂玻璃背景效果
- 分享我见到的培训面试和就业的情况(同时给出建议)
- TCP/IP网络编程之多进程服务端(二)
- 湖南省工业职业技术学院 计算机,湖南工业职业技术学院
- revit模型怎么在手机上看_模型的查看和定位-Revit基础教程
- 微信小程序 用户中心界面(一)
热门文章
- 可爱粉红色情人节表白浪漫婚礼相册我们结婚啦PPT模板
- C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)
- 如何从Arxiv预出版网站导出论文到NoteExpress
- linux系统grep用法,linux中grep的用法
- pdf转换为ppt最佳转换方法
- PCB生产工艺流程二:图形电镀工艺流程说明
- linux sort 排序 1 99,Linux操作系统中排序命令Sort的使用方法
- 【毕业设计】自动泊车系统(APS)记录
- linux没有哪个文件类型,Linux系统中不存在以下哪个基本文件类型( )
- 最新用友U8V15.0全产品培训视频教程合集