记一笔
Gazebo 有一个自己的模型存储仓库,里面已经有了大量的默认模型,而且有一个活跃的社区。
https://bitbucket.org/osrf/gazebo_models/src/default/
在Gazebo中的模型定义了完整的动力学,运动学,以及可视化的实体。可以有一个或多个插件。模型可以代表任何东西,包含地面和复杂的机器人。
模型数据库的结构
一个模型数据库(Model Database Structure)必须要遵守一个特定的目录结构,Database.config,以及各个模型的根目录,如下:
- Database 模型数据库的根目录
- database.config 描述模型的元数据,这个现在都是被CMake自动填充的
- model_subdirectory 模型的根目录,可以有多个
- model.config 模型的元数据
- model.sdf 模型的SDF描述文件
- model.sdf.erb 模型的Ruby嵌入式(embedded)描述文件
- meshes 所有COLLADA和STL文件的描述 (可选)
- materials 包含材质和脚本 (可选)
- textures 材质:存放图片文件(JPG,PNG,等图片格式)
- scripts OGRE脚本的目录
- plugins 插件和头文件的目录(可选)
模型数据库配置
database.config在模型的根目录中,是一个存储信息用的XML文件,这个文件包含模型的许可证信息,模型数据库的名称,以及有效模型的列表,这个文件只有使用在线仓库的时候才被需要,本地的数据库仓库不需要这个文件
这个文件的格式如下:
<?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>
数据库的许可证. -
<models>
列出数据库模型中所有的URL.- <uri>
模型的URL,例如: file://model_directory_name
- <uri>
模型配置
每个模型都的根目录下必须要有一个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> 必须
模型的版本.
Note: 这个不是模型的sdf文件的版本. -
<sdf> 必须
描述这个模型的SDF或者URDF文件的名称。version属性决定了模型使用哪个版本的SDF文件,并且是否要求URDF文件,多个元素可以被用来支持多个版本的sdf文件. -
<author> 必须
-
<name> 必须
作者的名字. -
<emai> 必须
作者的邮箱.
-
-
<description> 必须
模型的描述文件应该包含:
这个模型是啥 (e.g., robot, table, cup)
插件实干啥的 (functionality of the model) -
<depend> 可选
这个模型依赖的模型,通常都是其他模型.-
<model> 可选
-
<uri> 必须
依赖模型的URL. -
<version> 必须
模型的版本.
-
-
模型的SDF的文件
注:SDF(Simulator Description Format)
每个模型需要一个model.sdf文件,这个文件中需要包含模型的模拟器描述格式。
SDF模型的详解
模型的SDF.ERB文件
标准的SDF文件可以嵌入RUBY的代码。这个选项被用来程序化的生成SDF文件。