SDF 模型的范围从简单的形状到复杂的机器人。它指的是
links/链接:链接包含模型某个身体的物理属性。链接可以是一个轮子,也可以是关节链中的一个链节。每个链接可能包含许多碰撞和视觉元素。为了改进性能和稳定性,请试着减少模型中的链接数量。
例如,一个桌子模型可以由5个通过关节连接的链接(其中4个链接为腿,1个链接为桌面)组成。但是,这会过于复杂,特别是由于关节永远不会移动。相反地,应该用1个链接和5个碰撞元素来创建该桌子。
joints/关节:一个关节会连接两个链接。关节中会建立父链接-子链接关系以及其他参数,例如旋转轴和关节极限。
collision/碰撞:碰撞元素封装了用于碰撞检测的几何体。碰撞可以是简单的形状(首选),也可以是三角形网格(这会消耗更多资源)。一个链接可以包含多个碰撞元素。
visuals/视觉:视觉元素用于可视化链接的各个部分。一个链接可以包含0个或更多视觉元素。
Inertial/惯性:惯性元素描述了链节的动力学特性,例如质量和旋转惯性矩阵。
sensors/传感器:传感器从仿真世界采集数据以供插件使用。一个链接可能包含0个或多个传感器。
right/灯光:灯光元素描述了连接到某个链接的光源。一个链接可能包含0个或更多的灯光。
plugins/插件:插件是第三方创建的、用于控制模型的共享库。
此步骤包括收集构建您的模型所需的所有必要3D网格文件。Gazebo提供了一组简单的形状:盒子(长方体)、球体和圆柱体。如果您的模型需要更复杂的东西,则请继续阅读以下内容。
网格来自许多地方。Google的3D仓库是3D模型的一个优秀存储库。或者,您可能已经具有必要的网格文件。最后,您还可以使用3D建模软件(如Blender或Sketchup)制作自己的网格。
Gazebo要求网格文件的格式为STL,Collada或OBJ,其中Collada和OBJ是首选格式。
使用3D建模软件移动每个网格,以使其中心点位于原点上。这样会大大简化Gazebo中模型的安放
Collada和OBJ文件格式允许您将材质附加到网格上。使用这个机制可以改善网格的视觉外观
请让网格尽可能简单。如果想将网格用作碰撞元素,则尤其如此。通常的做法是将少边的多边形网格用于碰撞元素,而将更多边的多边形网格用于视觉元素。一个甚至更好的做法就是使用内置形状之一(盒子、球体、圆柱体)作为碰撞元素
开始时创建一个非常简单的模型文件,或者复制一个现有的模型文件。这里的关键是从您知道可以正常运行的模型文件开始,或者可以很容易地进行调试。
下面要制作的是一个非常初级的、最小的盒子模型文件,只有一个单位尺寸的盒子形状作为碰撞几何体,且具有单位惯性的相同单位盒子视觉元素。
请用以下命令创建box.sdf模型文件:
gedit box.sdf
- <sdf version="1.4">
- <model name="my_model">
- <pose>0 0 0.5 0 0 0pose>
- <static>truestatic>
- <link name="link">
- <inertial>
- <mass>1.0mass>
- <inertia>
- <ixx>0.083ixx>
- <ixy>0.0ixy>
- <ixz>0.0ixz>
- <iyy>0.083iyy>
- <iyz>0.0iyz>
- <izz>0.083izz>
- inertia>
- inertial>
- <collision name="collision">
- <geometry>
- <box>
- <size>1 1 1size>
- box>
- geometry>
- collision>
- <visual name="visual">
- <geometry>
- <box>
- <size>1 1 1size>
- box>
- geometry>
- visual>
- link>
- model>
- sdf>
请注意,Box几何体的原点位于盒子的几何中心,因此,为了使盒子的底部与地面齐平,添加了一个属性值为 0 0 0.5 0 0 0 pose>的原点位置元素以将该盒子提高到地平面上。
上面的示例将简单盒子模型设置为静态,从而使模型不可移动。在模型创建期间,该特性很有用。在创建完模型后,如果想要该模型可移动,则请将标签设置为false。
有了一个可以正常运行的.sdf文件后,再慢慢开始增加更多更复杂的要素。
在添加更多更复杂的要素时,建议按以下顺序添加:
添加一个链接
设置碰撞元素
设置视觉元素
设置惯性属性
回到#1,直到添加了所有链接
添加所有关节(如果有的话)
添加所有插件(如果有的话)
每新添加一个新的要素,请使用图形客户端加载该模型以确保您的模型是正确的。但是,仅有box.sdf文件不足以将模型加载到图形客户端中。
您还必须正确设置您的模型目录,而如何正确设置模型目录将在下一教程“制作移动机器人”中学到。
参考: