26、ROS2 Gazebo介绍

 

1、Gazebo简介

Gazebo是ROS系统中最为常用的三维物理仿真平台,支持动力学引擎,可以实现高质量的图形渲染,不仅可以模拟机器人及周边环境,还可以加入摩擦力、弹性系数等物理属性。

比如我们要开发一个火星车,那就可以在Gazebo中模拟火星表面的环境,再比如我们做无人机,续航和限飞都导致我们没有办法频繁用实物做实验,此时不妨使用Gazebo先做仿真,等算法开发的差不多了,再部署到实物上来运行。

所以类似Gazebo这样的仿真平台,可以帮助我们验证机器人算法、优化机器人设计、测试机器人场景应用,为机器人开发提供更多可能。

注意:本章节只做了解学习,教程中并未配置该环境,因为这边直接用的真机调试

 

2、安装运行

通过命令apt进行安装

然后通过一下命令可以运行

或者下面的命令

运行之后可以看到如下页面:

img

为保证模型顺利加载,请将离线模型下载并放置到~/.gazebo/models路径下,下载链接如下:https://github.com/osrf/gazebo_models

 

3、gazebo启动节点与服务

1、查看节点

正确返回:/gazebo 2、查看节点的对外提供的服务:

可以看出如下的结果:

出去最后几个常规的服务,我们只注意前三个特殊的服务:

4、创建工作空间及功能包

创建一个gazebo_demo的文件夹,在其中创建一个src文件,然后在src文件夹中创建我们的功能包myrobot(以c++为例)。

进入到myrobot的目录下,创建launch、urdf文件夹,修改CMakeLists.txt文件,这一步骤和rviz中类似。在urdf文件夹下创建一个demo01_base.urdf文件,这个文件就是一个简单的演示文件,只有一个基础的立方体。

这里和以前的文件不同的是加入了collision和intertial属性,都属于物理相关参数,这个就不做讨论。

 

5、编写launch文件

launch文件的编写,launch文件主要启动两个部分,启动Gazebo文件,然后将机器人模型加载到Gazebo中。

这个命令就是启动Gazebo的,就是一个启动命令,并没有特别复杂的地方,下面是加载模型的命令:

这个命令注意后面两个参数-entity是模型文件中的名字,-file是通过urdf文件加载参数,后面我们还可以看到通过topic话题加载模型的。完整的启动文件如下:

启动之后可以看到如下的Gazebo模型:

img

可以看到红色的模型,因为最后加上了Gazebo的标签设置。

 

6、Ignition:下一代Gazebo

随着技术的进步,Gazebo仿真平台也在不断迭代,新一代的Gazebo命名为Ignition,从渲染效果和仿真流畅度上都有较大的变化,我们不妨也来试一下。

运行成功后,会打开Ignition的仿真界面和Rviz上位机,我们可以看到RGBD相机仿真后发布的图像数据。

image-20220528151350359

image-20220528151358409