一、概述
Gazebo 能够以编程方式或通过 GUI 将模型动态加载到仿真中。 在您下载或创建模型之后,模型就存在于您的计算机上。 本教程描述了 Gazebo 的模型目录结构,以及模型目录中的必要文件。
Gazebo 中的模型定义了具有动态、运动学和视觉属性的物理实体。 此外,一个模型可能有一个或多个插件,这些插件会影响模型的行为。 一个模型可以代表任何东西,从简单的形状到复杂的机器人; 连地面都是模型。
Gazebo 依靠数据库来存储和维护可在模拟中使用的模型。 模型数据库是社区支持的资源,因此请上传和维护您创建和使用的模型。
二、模型数据库存储库
模型数据库是在此处找到的 GitHub 存储库。您可以使用以下方法克隆存储库:
git clone https://github.com/osrf/gazebo_models
三、模型数据库结构
模型数据库必须遵循特定的目录和文件结构。 模型数据库的根目录包含每个模型的一个目录,以及一个包含模型数据库信息的 database.config 文件。 每个模型目录还有一个 model.config 文件,其中包含有关模型的元数据。 模型目录还包含模型的 SDF 以及任何材料、网格和插件。
结构如下(在此示例中,数据库只有一个模型,称为 model_1):
数据库
- database.config :关于数据库的元数据。 现在从 CMakeLists.txt 自动填充
- model_1 :model_1 的目录
- model.config : 关于 model_1 的元数据
- model.sdf : 模型的 SDF 描述
- model.sdf.erb : Ruby 嵌入式 SDF 模型描述
- 网格:所有 COLLADA 和 STL 文件的目录
- material : 一个应该只包含纹理和脚本子目录的目录
- textures :图像文件(jpg、png 等)的目录。
- scripts : OGRE 材料脚本的目录
- plugins:插件源和头文件的目录
插件目录
这是一个可选目录,其中包含模型的所有插件。
网格目录
这是一个可选目录,其中包含模型的所有 COLLADA 和/或 STL 文件。
材料目录
这是一个可选目录,其中包含模型的所有纹理、图像和 OGRE 脚本。 纹理图像必须放在textures 子目录中,而OGRE 脚本文件必须放在scripts 目录中。
数据库配置
这是模型数据库根目录中的 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
四、模型配置
每个模型都必须在模型的根目录中有一个 model.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>name@email.address</email>
</author>
<description>
A description of the model
</description>
</model>
<name> 必需 ,模型的名称。
<version> 必需,此模型的版本。
注意:这不是模型使用的 sdf 版本。 该信息保存在 model.sdf 文件中。
<sdf> 必需,描述此模型的 SDF 或 URDF 文件的名称。 version 属性指示文件使用的 SDF 版本,对于 URDF 不是必需的。 可以使用多个 <sdf> 元素来支持多个 SDF 版本。
<author> 必填
<name> 必需,模型作者的姓名。
<email> 必需,作者的电子邮件地址。
<description> 必填,模型描述应包括:
模型是什么(例如,机器人、桌子、杯子)
插件的作用(模型的功能)
<dependence> 可选,此模型的所有依赖项。 这通常是其他模型。
<model> 可选
<uri> 必需,模型依赖的 URI。
<version> 必需,模型的版本
五 模型文件说明
模型的 SDF
每个模型都需要一个包含模型模拟器描述格式的 model.sdf 文件。 您可以在 SDF 网站上找到更多信息。
模型 SDF.ERB
标准 SDF 文件,可以包含嵌入的 ruby 代码。 此选项用于使用嵌入式 Ruby 代码模板以编程方式生成 SDF 文件。 请注意,ruby 转换应手动完成(erb model.sdf.erb > model.sdf),并且最终的model.sdf 文件必须与model.sdf.erb 一起上传(此文件仅供参考)。