gazebo
URDF
Unified Robot Description Format,统一机器人描述格式,简称为URDF。ROS中的urdf功能包包含一个URDF的C++解析器,URDF文件使用XML格式描述机器人模型。
语法规范
该软件包包含许多机器人模型,传感器,场景等的XML规范。每个XML规范都有一种或多种语言的相应解析器:urdf语法规范。基础部分可以参考官方教程:tutorials-wiki
结构
各个功能包与组件之间的关系.
属性标签
如何写一个基础的urdf模型不在这里展开。
如示例link1,一个最简单的link需要什么,name,如果还希望显示,就加入<visual>
,在仿真中为了模拟真实碰撞,加入<collision>
,最后是<inertial>
惯量,通过质量、质心、惯性矩阵模拟真实物体的运动状况。其中需要注意的,惯量标签是必不可少的,<origin>
标签都是相对于标签基坐标本身。
<!-- Base Link -->
<link name="link1">
<collision>
<origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
<geometry>
<box size="${width} ${width} ${height1}"/>
</geometry>
</collision>
<visual>
<origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
<geometry>
<box size="${width} ${width} ${height1}"/>
</geometry>
<material name="orange"/>
</visual>
<inertial>
<origin xyz="0 0 1" rpy="0 0 0"/>
<mass value="1"/>
<inertia
ixx="1.0" ixy="0.0" ixz="0.0"
iyy="1.0" iyz="0.0"
izz="1.0"/>
</inertial>
</link>
<geometry>
示例中使用<box>
,也可以使用其他现有基础形状,对于复杂模型可以使用现有模型加载,如stl、dae等类型的3D模型文件,不同类型的有不同使用属性,在碰撞模型中需要考虑模型复杂程度,避免模型过于复杂,物理引擎计算困难,解决方法可以使用模型处理软件简化模型。惯性参数可以在SolidWorks等软件中获取。
<geometry>
<mesh filename="package://caster_description/mesh/caster_body_part_v2.stl" />
</geometry>
对于joint需要添加的属性很少,一般会设置阻尼和摩擦。damping旋转阻尼,friction静摩擦,例如万向轮中垂直摩擦设置damping,limit标签也是经常使用的标签,关节位置,力,速度都可以控制。
<joint name="support_wheel_body_joint" type="continuous">
<origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
<parent link="base_link" />
<child link="link1" />
<axis xyz="0 0 1" />
<dynamics damping="0.01" friction="0.0"/>
<limi