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

三 机器人仿真软件Gazebo介绍相关推荐

  1. 使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)

    参考链接:https://github.com/bunchofcoders/basic_bocbot 本文为使用ROS 2和Gazebo9搭建仿真机器人详细指南. 确保已按如下说明安装ROS和Gaze ...

  2. 【ROS仿真实战】获取机器人在gazebo位置真值的三种方法(三)

    文章目录 前言 一. 使用ROS tf库 二. 使用Gazebo Model Plugin 三. 使用libgazebo_ros_p3d插件 四.总结 前言 在ROS和Gazebo中,获取机器人的位置 ...

  3. 机器人三星云顶之弈_云顶之弈机器人玩法介绍

    云顶之弈机器人玩法介绍,机器人作为一位强力的控制往往会在意想不到的时候左右战局,许多玩家还不知道机器人该怎么用,下面就让小编给大家解读一下机器人的用法. 云顶之弈机器人玩法介绍: 小技巧: 在云顶之弈 ...

  4. V-rep机器人仿真软件使用的学习笔记

    本博客同时发布于个人主页:www.doctorsrn.cn 本博客续:V-rep机器人仿真软件使用的学习笔记-续 相关博客:V-rep中机械臂惯性参数的获取方法 前言 这篇博客主要是记录自己学习和使用 ...

  5. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例

    强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...

  6. UR机器人装箱姿态_关于人机协作机器人UR的介绍

    原标题:关于人机协作机器人UR的介绍 在这几年,各大工业机器人制造商,目前都热衷与人机协作,ABB的"玉米",FANUC的"绿手臂",KUKA的"伊娃 ...

  7. ROS中阶笔记(四):机器人仿真—Gazebo物理仿真环境搭建(重点)

    ROS中阶笔记(四):机器人仿真-Gazebo物理仿真环境搭建(重点) 文章目录 1 ros_control 1.1 ros_control安装 2 Gazebo仿真步骤(重点) 2.1 配置物理仿真 ...

  8. 法拉克机器人自动怎么调_FANUC机器人程序自动启动介绍汇总.ppt

    FANUC机器人程序自动启动介绍汇总 程序启动条件及时序介绍 上海发那科机器人有限公司 2012.9.20 自动运行方式的定义 第一部分 程序启动类型 所需启动的机器人程序可以使用外部控制设备如PLC ...

  9. 小米机器人虚拟墙设置_扫地机器人虚拟墙介绍及怎样设置

    原标题:扫地机器人虚拟墙介绍及怎样设置 现在高端的智能吸尘器产品都配备了虚拟墙功能,能够有效正确指挥扫地机工作.那么,对于我们在日常使用中该如何使用虚拟墙呢? 什么是虚拟墙? 很多人购买产品的时候对虚 ...

  10. 部分仿真软件对比介绍

    本文转载在我的微信公众号:古德曼汽车工业.公众号文章都会知识星球.知乎进行转载,请有兴趣的朋友可以关注我的微信公众号 原文地址:部分仿真软件对比介绍 首先来说下为什么会有这个体裁,由于思想在长期的工作 ...

最新文章

  1. 【视频】vue组件之slot插槽
  2. 最简单的 ABAP XSLT 程序的一个例子
  3. c 语言开发一个四则运算器,C++实现四则运算器(无括号)
  4. Bootstrap--导航栏样式编辑
  5. 为什么薄膜干涉的厚度要很小_薄膜干涉的膜为什么不能太厚?
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生考勤管理系统
  7. bzoj 4289 TAX —— 点边转化
  8. git 版本控制库的用法及其介绍
  9. Bootstrap FileInput.js + springmvc uploadFile
  10. spss无法连接到本地计算机,通过远程连接打开SPSS产品时,收到许可证错误信息。从本地打开同一产品时没有错误。...
  11. arm-linux 交叉编译toolchain
  12. 图层php,ps图层怎么用
  13. 蒙圣光:2018年IT行业的八大趋势
  14. Python 构建 Random Forest 和 XGBoost
  15. Java开发-日期与时间戳转换封装工具类
  16. android wifi传图片,「教程」将Mac电脑上的照片无线传到安卓手机上
  17. 节能降耗 | AIRIOT智慧电力综合管理解决方案
  18. NETDMIS5.0三个面基准建立坐标系2023
  19. 计算机应用基础差错解释,计算机应用基础名词解释:差错
  20. cannot bind non-const lvalue reference of type ‘xxx‘ to an rvalue of type ‘xxx‘

热门文章

  1. [全新大碟]周杰倫 - 魔杰座
  2. js网页特效动画(筋斗云案例)
  3. ES6.x版本单机三节点配置discovery.zen.ping.unicast.hosts 错误
  4. 悼念王选:伟大发明家和失意企业家间的孤独者
  5. SD卡无法识别的问题解决 ”mmc0: error -110 whilst initialising SD card”
  6. Docker存储驱动之Btrfs简介
  7. 算法系列:Reservoir Sampling
  8. hello ,酷狗音乐产品体验报告
  9. FTP显示文件的修改时间与实际时间不一致
  10. zbbz cnk2