机器人建模与仿真(一)——统一机器人描述格式——URDF
总述
URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中一个非常重要的机器人模型描述格式,ROS同时也提供URDF文件的C++解析器,可以解析URDF文件中使用XML格式描述的机器人模型。
在使用URDF文件构建机器人模型之前,要了解URDF文件中常用的XML标签。
1、< link >标签
< link >标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。
机器人的link结构一般如图所示,其基本的URDF描述语法如下:
<link name="my_link">
<inertial>
<origin xyz="0 0 0.5" rpy="0 0 0"/>
<mass value="1"/>
<inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="1 1 1" />
</geometry>
<material name="Cyan">
<color rgba="0 1.0 1.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder radius="1" length="0.5"/>
</geometry>
</collision>
</link>
包括3个子标签
< inertial >:描述link的惯性参数,主要用到机器人动力学的运算部分;
< visual >:描述机器人link部分的外观参数, 尺寸、颜色、形状等的外观信息;
< collision >:描述link的碰撞属性;
link还有一个比较关键的部分,就是坐标系
Link origin 是起始坐标,整个link创建的时候都是相对 Link origin坐标系创建的;
2、< joint >标签
< joint >标签就是用来连接两个具体的link部分的;描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制。根据关节的运动形式,可以将其分为六种类型。
与人的关节一样,机器人关节的主要作用是连接两个刚体link,这两个link分别称为parent link和child link,如图所示。
蓝色关节表示出一个运动的轴,蓝色关节是可以围绕蓝色的轴旋转的,也就是child这个link是可以围绕joint上下旋转。
joint是连接两个link,需要分一个主次关系,主关节是parent link,子关节是child link, 在xml形式的描述中这个两个 link是必须存在的。
< joint >标签的描述语法如下:
<joint name="my_joint" type="floating">
<origin xyz="0 0 1" rpy="0 0 3.1416"/>
<parent link="link1"/>
<child link="link2"/>
<calibration rising="0.0"/>
<dynamics damping="0.0" friction="0.0"/>
<limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
<safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
</joint>
其中必须指定joint的parent link和child link,还可以设置关节的其他属性。
子标签:
< calibration >:关节的参考位置,用来校准关节的绝对位置;
< dynamics >:描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到;
< limit >:描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等;
< mimic >:描述该关节与已有关节的关系;
<safety_controller>:描述安全控制器参数。保护机器人关节的运动;
3、< robot >标签
< robot >是完整机器人模型的最顶层标签, < link >和< joint >标签都必须包含在< robot > 标签内。如图所示,一个完整的机器人模型由一系列< link >和< joint >组成。
< robot >标签内可以设置机器人的名称,其基本语法如下:
<robot name="pr2">
<link> ... </link>
<link> ... </link>
<link> ... </link>
<joint> .... </joint>
<joint> .... </joint>
<joint> .... </joint>
</robot>
4、< gazebo>标签
< gazebo >标签用于描述机器人模型在Gazebo中仿真所需要的参数,包括机器人材料的属性、gazebo插件等。该标签不是机器人模型必需的部分,只有在Gazebo仿真时才需加入。
该标签的基本语法如下:
<gazebo reference="link_1">
<material>Gz=azebo/Black</material>
</gazebo>