目录
一、模型结构与要求
gazebo可以通过GUI或者编程方式动态的加载模型。
Gazebo中的模型定义了具有动态、运动学和视觉属性的物理实体。另外,一个模型可能有一个或多个插件,这些插件会影响模型的行为。
模型可以代表任何东西,从简单的形状到复杂的机器人;甚至地面也是一个模型。
可以通过一下方式下载模型数据库:
git clone https://github.com/osrf/gazebo_models
1.模型数据库结构
为了更好的管理以及设计,模型数据库必须遵循特定的目录和文件结构。
数据库的结构如下所示(仅有一个model_1的情况下):

模型数据库的根目录包含两部分:(1)一个保存数据库信息的database.config配置文件;(2)所有模块的目录;
在每个模块的目录之下也包含一个model.config,内部是关于每个model的meta-data(应该翻译成元数据吧,我理解的就是原始数据吧)。
同时模型的目录下还包含模型、任何材质和插件的SDF文件。
以下是针对上述根目录包含的两部分,分别就具体内容进行说明:
(1)database 配置
注意编辑这里采用gedit,如果采用gvim编辑config与sdf可能存在gazebo不识别模型的情况。
database.config的格式如下:
<?xml version='1.0'?>
<database>
<name>name_of_this_database</name>
<license>Creative Commons Attribution 3.0 Unported</license>
<models>
<uri>file://model_directory</uri>
</models>
</database>
database.config包含了数据库名字、模型的license信息,以及一个有效模型的列表。
(2)模型配置
每个模块必须在其根目录包含一个模型的配置文件
model.config的格式如下所示:
<?xml version="1.0"?>
<model>
<name>My Model Name</name>
<version>1.0</version>
<sdf version='1.5'>model.sdf</sdf>
<author>
<name>My name</name>
<email>name@email.address</email>
</author>
<description>
A description of the model
</description>
</model>
关于name、version、author这几项参数此处不解释,相信大家也能明白。
sdf参数,需要填入sdf文件,这里的sdf文件可以是网上下载的也可以是自己编辑的,description则是对于该模型的描述;
二、设计一个模型
SDF模型可以从简单的形状到复杂的机器人。其本质上就是连接(link),关节(joint)、碰撞对象、视觉效果和插件的集合。
1.SDF模型组成
sdf的模型组成主要包括links、joints、plugins,其中links又包括collision、visual、inertial、sensor、light。
(1)links
是一个模型的实体的物理特性,links可以是一个车轮、一个链环。每个link又可能包含可视化与碰撞部分。
因为碰撞检测的计算量非常大,甚至占到整个机器人控制中的90%以上,所以往往会通过简化模型的方式来降低碰撞检测的运算量。
所以才会有碰撞模型与可视化模型,可视化模型一般就是实际的模型外观,而碰撞模型则尽量采用规则的形状,力求简单。
(2)joints
joint是连接两个link的节点,也就是关节,关节参数主要包括子节点、父节点、旋转轴以及关节角限制。
(3)plugins
插件是由第三方创建的库
2.构建一个模型
gazebo到这里才开始涉及到实际的东西,终于可以动手操作一些东西了!
gazebo提供一些简单的例如长方体、球、圆柱基本的模型,在不满足设计要求的情况下,也可以通过绘图软件自己设计。
gazebo需要的模型文件的格式包括:STL,Collada,OBJ
产生一个简单的SDF文件:
<?xml version='1.0'?>
<sdf version="1.4">
<model name="my_model">
<pose>0 0 0.5 0 0 0</pose>
<static>true</static>
<link na

本文介绍如何使用Gazebo创建机器人模型,包括模型结构、SDF文件编写及构建差动驱动机器人等关键技术。
最低0.47元/天 解锁文章
1698

被折叠的 条评论
为什么被折叠?



