Gazebo 学习笔记之构建一个Robot 1:模型目录的结构和要求

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素材脚本的目录;
    • plugins: 插件源文件和头文件的目录;

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> (必要组件)
      模型作者的邮箱。
  • <description> (必要组件)
    模型描述应包括:

    • 这是什么模型 (如:机器人、桌子、茶杯)
    • 插件的用途是什么(模型的功能)
  • <depend> (可选组件)
    此模型的所有依赖项。这通常指向其他型号。

    • <model> (可选组件)
      • <uri> (必要组件)
        模型依赖项的URI。
      • <version> (必要组件)
        模型的版本;

2.6 模型 SDF

每个模型都需要一个model.sdf文件,该文件包含模型的仿真器描述格式。 您可以在SDF网站
上找到更多信息。

2.7 模型 SDF.ERB

标准SDF文件,可以包含嵌入的Ruby代码。 此选项用于使用嵌入的Ruby代码
模板以编程方式生成SDF文件。 请注意,ruby转换应该手动完成(erb model.sdf.erb&gt;model.sdf),并且最终的model.sdf文件必须与model.sdf.erb一起上传(此处仅供参考)。

gazebo_model存储库中提供了sdf.erb文件的示例(其中一些使用了不推荐使用的后缀.rsdf)。 一个简单的ERB文件是flocking.world.erb,它使用一个简单的循环。

发布了45 篇原创文章 · 获赞 1 · 访问量 2419

猜你喜欢

转载自blog.csdn.net/amnesiagreen/article/details/105741034