ROS——浅识gazebo 仿真

概要

仿真/模拟(Simulation),泛指基于实验或训练的目的,将原本的系统、事务或流程,建立一个模型以表征其关键特性(Key Characteristics)或者行为/功能,予以系统化与公式化,以便对关键特征做出模拟。本篇文章主要对gazebo物理环境仿真作简单的了解。

一、gazebo 仿真特点

gazebo是一款功能强大的三维物理仿真平台

  • 具有强大的物理引擎;
  • 高质量的图形渲染;
  • 方便的编程与图形接口;
  • 开源免费

azebo中的机器人模型与rviz使用的模型相同,但是需要在模型中加入机器人和周围环境的物理属性,例如质量、摩擦系数、弹性系数等。机器人的传感器信息也可以通过插件的形式加入仿真环境,以可视化的方式进行显示。

其典型应用场景包括:

  • 测试机器人算法;
  • 机器人设计
  • 现实场景下的回溯测试

gazebo是一款优秀的开源物理仿真环境,它具备如下特点:
动力学仿真:支持多种高性能的物理引擎,例如ODE、Bullet、SimBody、DART等。
三维可视化环境:支持显示逼真的三维环境,包括光线、纹理、影子。
传感器仿真:支持传感器数据的仿真,同时可以仿真传感器噪声。
**可扩展插件:**用户可以定制化开发插件,扩展gazebo的功能,满足个性化的需求。
多种机器人模型:官方提供PR2、Pioneer2 DX、TurtleBot等机器人模型,当然也可以使用自己创建的机器人模型。
TCP/IP传输:gazebo可以实现远程仿真,后台仿真和前台显示通过网络通信。
云仿真:gazebo仿真可以在Amazon、Softlayer等云端运行,也可以在自己搭建的云服务器上运行。
终端工具:用户可以使用gazebo提供的命令行工具在终端实现仿真控制。

gazebo的社区维护非常积极,2013年以来几乎每年都会有较大的版本变化,如下图所示,可以看到gazebo的版本迭代,以及近几个ROS版本对应的gazebo版本。
在这里插入图片描述

gazebo的版本变化虽然较大,但是兼容性保持的比较好,indigo中2.2版本的机器人仿真模型,在Kinetic的7.0版本中运行依然不会有问题。

二、安装&运行gazebo

与rviz一样,如果已经安装了桌面完整版的ROS,那么可以直接跳过这一步,否则,请使用以下命令进行安装:

sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

安装完成后,在终端中使用如下命令启动ROS和gazebo:

roscore
rosrun gazebo_ros gazebo

在这里插入图片描述
在这里插入图片描述
出现如图报错,输入下面指令

export SVGA_VGPU10=0

在这里插入图片描述
此后就可以了。
gazebo启动成功后的界面如下图所示:
在这里插入图片描述
主界面中主要包含以下几个部分:

3D视图区
工具栏
模型列表
模型属性项
时间显示区

三、检验成功连接

验证gazebo是否与ROS系统成功连接,可以查看ROS的话题列表,如果连接成功,应该可以看到gazebo发布/订阅的如下话题列表:

rostopic list

在这里插入图片描述
gazebo提供的服务列表

rosservice list

在这里插入图片描述

四、构建仿真环境

在仿真之前,需要构建一个仿真环境。gazebo中有两种创建仿真环境的方法

1、直接插入模型

在gazebo左侧的模型列表中,有一个insert选项,罗列了所有可使用的模型。选择需要使用的模型,放置在主显示区中,就可以在仿真环境中添加机器人和外部物体等仿真实例:
在这里插入图片描述

模型的加载需要连接国外网站,为了保证模型顺利加载,可以提前将模型文件下载并放置到本地路径~/.gazebo/models下,模型文件的下载地址:
https://bitbucket.org/osrf/gazebo_models/downloads/.

2、Building Editor

第二种方法是使用gazebo提供的Building Editor工具手动绘制地图。
在gazebo菜单栏中选择Edit --> Building Editor,可以打开Building Editor界面。选择左侧的绘制选项,然后在上侧窗口中使用鼠标绘制,下侧窗口中即可实时显示绘制的仿真环境。
在这里插入图片描述

模型建立完成后就可以加载机器人模型并进行仿真了.

五、总结与参考资料

1、总结

本篇文章主要是对gazebo的一个简单介绍,以及简单的物理环境搭配。

2、参考资料

ROS技术点滴 —— Gazebo物理仿真平台.
VMware: vmw_ioctl_command error 无效的参数.

猜你喜欢

转载自blog.csdn.net/QWERTYzxw/article/details/115019603
今日推荐