ROS教程

这是小弟的学习笔记,有错求请拍,多指教,谢谢

三 机器人仿真软件Gazebo介绍

Gazebo功能

1.构建机器人运动仿真模型

在Gazebo里,提供了最基础的三个物体,球体,圆柱体,立方体,利用这三个物体以及它们的伸缩变换或者旋转变换,可以设计一个最简单的机器人三维仿真模型。更加地,Gazebo提供了CAD,Blender等各种2D,3D设计软件的接口,可以导入这些图纸让Gazebo的机器人模型更加真实,这些之后会详细介绍。同时,Gazebo提供了机器人的运动仿真,通过Model Editor下的plugin,来添加我们需要验证的算法文件,就可以在Gazebo里对机器人的运动进行仿真

2.构建现实世界各种场景的仿真模型

Gazebo可以建立一个用来测试机器人的仿真场景,通过添加物体库,放入垃圾箱,雪糕桶,甚至是人偶等物体来模仿现实世界,还可以通过Building Editor,添加2D的房屋设计图,在设计图基础上构建出3D的房屋

3.构建传感器仿真模型

Gazebo拥有一个很强大的传感器模型库,包括camera,depth camera,laser,imu等机器人常用的传感器,并且已经有模拟库,已经可以直接使用,也可以自己从0创建一个新的传感器,添加它的具体参数,甚至还可以添加传感器噪声模型,让传感器更加真实

4.为机器人模型添加现实世界的物理性质

Gazebo里有force,physics的选项,可以为机器人添加例如重力,阻力等,Gazebo有一个很接近真实的物理仿真引擎,要记得一般的地面是没有阻力的,和现实世界有区别

Gazebo安装

1.注意

如果是安装了full版本的ROS,是不需要再安装Gazebo的,检查自己是否安装了Gazebo的方法:
1)在搜索栏输入“Gazebo”查找;
2)通过命令行查找$ dpkg -l|grep gazebo,可以查找Gazebo是否已经安装,并且查看版本号,建议安装最新版本

如果安装了旧版本的Gazebo,应该先卸载再安装新版本,现在最新版本是Gazebo8,可以通过Gazebo官网查看最新版本Gazebo8

卸载旧版本Gazebo的方法:
1)通过Ubuntu软件管理中心卸载

2)命令行方法
查找与Gazebo相关的软件包
$ dpkg --get-selections | grep gazebo

在不记得软件具体名称以及它的各个附带软件时,可以通过该命令来查找

卸载命令$ sudo apt-get remove gazebo7
但是要把与之相关的软件,附加项都卸载,比较麻烦,可以通过autoremove一次性卸载所有相关的软件
$ sudo apt-get autoremove gazebo7

2.安装Gazebo的方法

1)通过安装脚本来安装
从官网的教程来看,通过sh脚本来安装是最方便的,脚本是linux系统里一个比较方便的工具,就像ROS里的launch文件一样,sh文件启动后,会自动执行脚本设定好的工作,下边是官网推荐的通过脚本安装的具体步骤:
点击下载安装脚本 install.sh脚本下载地址
通常来说,下载的文件会放在文件目录~/home/下载/ 下,通过命令行
$ cd 下载 进入文件夹目录
运行脚本文件$ sh gazebo8_install.sh 有时需要管理员权限,则加上sudo 即可

2)注意,不建议完全照搬官网的安装步骤,因为下载脚本文件的文件夹有区别

参考网址
Gazebo/tutorials/1

Gazebo界面与操作

1.界面

1)初始界面

2)创建模型界面
将鼠标移至左上角,会看到有Edit选项

点击Model Editor选项

模型界面

节点/关节创建界面

参考网址
Gazebo/tutorials/2

2.操作

鼠标操作方法,这里用了Gazebo官网的图,一般常用的就是“shift+鼠标左键”转换视角,“鼠标左键”平移视角,“滚轮”缩放大小

键盘的快捷键有很多,值得自己去发掘,但要谨记,在创建模型的时候,“ctrl+z”的撤回键是不能用的,所以每次操作完成之后,最好按以下“esc”键退出当前操作至选择物体模式,这样会避免误点

用Gazebo创建第一个机器人模型

1.机器人模型在Gazebo中需要的结构

我们可以在“Model Editor”界面下看到

一个模型的创建,主要包括里四个方面:
“Models”指的是从模型库添加的模型,是已经构建好的物体,具有一定功能和外观的,例如传感器,房屋,车体,车轮等
“Model Plugins”指的是关于目前正在创建的模型的一些功能描述信息
“Links”指当前通过球体/圆柱/立方体创建的物体
“Joints”指各个物体之间的连接关节

2.创建步骤

1)进入“Model Editor”模型编辑界面
2)创建车体
通过基础图形来创建一个简单的二轮差分运动模型

拖拽一个圆柱体到面板中,并双击圆柱体,打开“Link Inspector”编辑物体属性

点击“Visual”和“Collision”,修改Geometry,把半径和厚度改成自己需要的大小,本模型将厚度改成0.1m,保持半径大小不变

“Visual”是该物体的外观
“Collision”是物体的实际性质,在仿真引擎中调用的参数

因为作为车体底盘,所以尽量把第一块模型的x,y,z坐标调整至坐标轴上,方便以后对于其他物体的调整。在“Link”标签中,滑动到最低,会看到有一个“Pose”标签,这个就是调整物体的坐标还有偏转角度的
因为要配合车轮的位置,所以在这个时候应该根据车轮的半径,来确定底盘的z坐标。车轮拟定半径0.2m,所以底盘的z坐标也调整至0.2m,可以方便以后的工作

谨记,所有的长度,坐标,都是根据物体中心或中线来确定的

3)创建支柱
按照上边的步骤添加圆柱,并修改参数。半径为0.02m,厚度为0.4m

复制出4根支柱,暂时放在任意位置

4)创建顶层板
复制第二步创建的车体底盘,暂时放在任意位置

5)连接部件
点击顶部的“Joint”,打开节点编辑器,点击父物体,再点击子物体,即可创建一个节点。
父物体是带动子物体运动的,所以应该以底盘为父级,支柱为子级

6)调整节点属性
“Joint types”:一般常用的有Fixed,Revolute,Ball,分别是固定连接,可以旋转的,球体多方向转动(类似万向轮)。支柱属于固定连接,所以选择Fixed

“Align links”:使用“Align links”选项可以快速调整两个零件的位置关系,三个按钮分别是左贴合,归中,右贴合,“Reverse”是在贴合后更改内外关系的,调整子物体的哪个面与父物体接触,如果想支柱在底盘内,则不要勾选Reverse,勾选了的话支柱会在底盘外  

留意黄色框,试一下改变每一个轴的Reverse选项

7)重复操作,按照关节类型为Fixed的方法,连接剩下的零件
注意,要把顶层板和四个支柱都连接在一起,其实Fixed的作用就相当于螺丝,把零件连接在一起,只有这样才能保证仿真的真实性

8)创建车轮
二轮差分模型有两个主动轮加上一到两个万向轮
车轮依然是简单的圆柱体,但这一次要把圆柱体转个90度,90度=1.5707 rad

更改半径,厚度

9)连接车轮和车体
黄色框是值得注意的地方,滚动的车轮要选择可选转的关节类型“Revolute”,并且调节可旋转的轴,物体将绕着有小黄圆圈标记的轴旋转

重复该步骤创建另一边的车轮,留意车轮是否着地。通过目测是十分困难的,最好是写下每个零件的半径,厚度等参数,通过计算得出车轮是否着地

10)创建万向轮
在简易模型里,我们可以直接用球体来代替万向轮, 其实在现实生活中,万向轮大多也是球体
尝试一下计算,看看球体万向轮的半径要多大,才能让球体紧贴地面,并且着地时高度不超过底盘?

答案是 :底盘的Z坐标/2  

一定要注意,“VIsual”和“Collision”都要更改

11)连接万向轮
有时使用“Align links”不能让万向轮着地,这个时候可以再调整它与父物体的相关位置
不建议一开始就使用Pose来调整,调整物体位置时“Align links”会更加直观方便

重复建立一个万向轮模型

3.添加传感器

1)寻找合适的库

http://gazebosim.org/models/是官方的模型库,打开并找到深度摄像头“Depth camera”,拖拽到面板中。最好直接拖拽到红色的轴线上

2)安装传感器
在安装传感器到车体上的时候并不能用Align links快速调整位置的方法,需要自己手动移动,望大神指导如何准确移动。这个时候要很小心,因为容易误点了其他零件导致不必要的移动
把深度摄像头移动到车顶,然后用Fixed类型的节点让车体与摄像头连接

3)配置Plugin
参考了Gazebo官网的教程,我们在Model标签下,找到Plugin的add按钮,打开并填写

“Plugin name”一定是独立的,不能出现重复,这个可以自己定义
“Filename”是链接文件的名称,一般是链接一些动态库,有关动态库的笔记之后学到了再写
因为libFollowerPlugin.so动态库并没有要求输入什么参数,所以“Innerxml”不需要填写

4.保存并退出

将鼠标移动到左上角,点击“FIle”,进行保存和退出操作

5.在World界面进行仿真

在机器人前边放置一个立方体,然后点击下方的开始按键,看到机器人朝着方块运动,证明模型创建成功

参考网址
Gazebo/tutorials/3