文章目录
Gazebo能够以编程方式或通过GUI将模型动态加载到仿真中。 模型在您下载或创建后存在于您的计算机上。 本教程介绍Gazebo的模型目录结构,以及模型目录中的必要文件。
概述
Gazebo中的模型定义具有动态、运动学和视觉特性的物理图元。 此外,一个模型可能有一个或多个插件,这些插件会影响模型的行为。 一个模型可以代表任何东西,从简单的形状到复杂的机器人;甚至连地面都是一个模型。
Gazebo 依靠一个数据库来存储和维护可用于仿真的模型。 模型数据库是社区支持的资源,欢迎上传您创建的模型或维护你使用的模型。
1. 模型数据库存储库
模型数据库是在Bitbucket
平台上,你可以通过这个链接访问:https://bitbucket.org/osrf/gazebo_models。
您可以使用以下命令克隆存储库:
hg clone https://bitbucket.org/osrf/gazebo_models
2. 模型数据库的结构
模型数据库必须遵守特定的目录和文件结构。 模型数据库的根目录包含每个模型的一个目录,以及一个包含有关模型数据库信息的database.config
文件。 每个模型目录还包含一个模型.config
文件,其中包含有关模型的元数据。 模型目录还包含模型的SDF以及所有材质、网格和插件。
结构如下(在本例中,数据库只有一个称为model_1
的模型):
- Database
- database.config : 有关数据库的元数据。 它自动从
CMakeLists.txt
填充; - model_1 :
model_1
的目录;- model.config :
model_1
的元数据; - model.sdf : 模型的SDF描述;
- model.sdf.erb : Ruby嵌入式SDF模型描述;
- meshes : 所有COLLADA和STL文件的目录;
- materials : 只应包含纹理
textures
和脚本scripts
子目录的目录;- textures : 图像文件(jpg、png等)的目录;
- scripts : OGRE素材脚本的目录;
- model.config :
- plugins: 插件源文件和头文件的目录;
- database.config : 有关数据库的元数据。 它自动从
2.1 插件目录
这是一个可选目录,其中包含模型的所有插件。
2.2 Meshes 目录
这是一个可选目录,其中包含该模型的所有COLLADA和/或STL文件。
2.3 Material 目录
这是一个可选目录,其中包含模型的所有纹理、图像和OGRE脚本。 纹理图像必须放在纹理子目录中,OGRE脚本文件必须放在scripts
目录中。
2.4 数据库配置 Database Config
这是model数据库根目录中的database.config
文件。 该文件包含模型的许可信息、数据库的名称和所有有效模型的列表。
注意:仅联机存储库需要database.config
文件。 本地计算机上充满模型的目录不需要database.config文件。
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>
- <name>
数据库的名称。这是 GUI 和其他工具使用的名称。 - <license>
数据库中模型的许可证。我们强烈推荐Creative Commons Attribution 3.0 Unported
许可证。 - <models>
数据库中所有模型URI的列表。 - <uri>
模型的URI,格式为为file://model_directory_name
2.5 模型配置 Model Config
每个模型在模型的根目录中必须有一个模型.config
文件,该文件包含有关模型的元数据信息。
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>[email protected]</email>
</author>
<description>
A description of the model
</description>
</model>
-
<name> (必要组件)
模型的名字。
-**<version> ** (必要组件)
模型版本。
注意:这不是模型使用的sdf版本。这些信息保存在model.sdf文件中。 -
<sdf> (必要组件)
描述此模型的SDF或URDF文件的名称。version属性指示文件使用的SDF版本,而URDFs不需要它。可以使用多个元素来支持多个sdf版本。 -
<author> (必要组件)
- <name> (必要组件)
模型作者的名字。 - <email> (必要组件)
模型作者的邮箱。
- <name> (必要组件)
-
<description> (必要组件)
模型描述应包括:- 这是什么模型 (如:机器人、桌子、茶杯)
- 插件的用途是什么(模型的功能)
-
<depend> (可选组件)
此模型的所有依赖项。这通常指向其他型号。- <model> (可选组件)
- <uri> (必要组件)
模型依赖项的URI。 - <version> (必要组件)
模型的版本;
- <uri> (必要组件)
- <model> (可选组件)
2.6 模型 SDF
每个模型都需要一个model.sdf
文件,该文件包含模型的仿真器描述格式。 您可以在SDF网站
上找到更多信息。
2.7 模型 SDF.ERB
标准SDF文件,可以包含嵌入的Ruby代码。 此选项用于使用嵌入的Ruby代码
模板以编程方式生成SDF文件。 请注意,ruby转换应该手动完成(erb model.sdf.erb>model.sdf
),并且最终的model.sdf
文件必须与model.sdf.erb
一起上传(此处仅供参考)。
gazebo_model存储库中提供了sdf.erb
文件的示例(其中一些使用了不推荐使用的后缀.rsdf
)。 一个简单的ERB文件是flocking.world.erb,它使用一个简单的循环。