ROS中的URDF


ROS中的URDF

什么是URDF

  • Unified Robot Description Format,统一机器人描述格式,简称为URDF;

  • ROS中一个非常重要的机器人模型描述格式;

  • URDF文件使用XML格式描述机器人模型;

  • ROS中的urdf功能包包含一个URDF的C++解析器。

URDF标签说明

作用:

  • 描述机器人某个刚体部分的外观和物理属性;
  • 尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。

子标签:

  • <visual>:描述机器人link部分的外观参数;
  • <inertial>:描述link的惯性参数;
  • <collision>:描述link的碰撞属性。

<joint>

作用:

  • 描述机器人关节的运动学和动力学属性;
  • 包括关节运动的位置和速度限制;
  • 根据关节运动的形式,可以将其分为六种类型。
关节类型 描述
continuous 旋转关节,可以围绕单轴无限旋转
revolute 旋转关节,类似于continuous,但有旋转的角度限制
prismatic 滑动关节,沿某一轴线移动的关节,带有位置极限
planar 平面关节,允许在平面正交方向上平移或者旋转
floating 浮动关节,允许进行平移、旋转运动
fixed 固定关节,不允许运动的特殊关节

子标签:

  • <calibration>:关节的参考位置,用来校准关节的绝对位置;
  • <dynamics>:描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到;
  • <limit>:描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等;
  • <mimic>:描述该关节与已有关节的关系;
  • <safety_controller>:描述安全控制器参数。

<robot>

  • 完整机器人模型的最顶层标签;
  • <link>和<joint>标签都必须包含在<robot>标签内。

一个完整的机器人模型,由一系列<link>和<joint>组成。

URDF建模优化

URDF建模存在的问题:

  1. 模型冗长,重复内容过多;
  2. 参数修改麻烦,不便于二次开发;
  3. 没有参数计算的功能。

URDF模型的进化版本——xacro模型文件

  • 精简模型代码
    • 创建宏定义
    • 文件包含
  • 提供可编程接口
    • 常量
    • 变量
    • 数学计算
    • 条件语句

常量的定义和使用

常量定义:

<sacro:property name="M_PI" value="3.14159"/>

常量使用:

<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>

数学计算

数学计算:

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpx="0 0 0"/>

注意:所有的数学运算都会转换成浮点数进行,以保证运算精度。

宏定义

宏定义:

<sacro:macro name="name" params="A B C">
    ......
</sacro:macros>

宏调用:

<name A="A_value" B="B_value" C="C_value"/>

文件包含

文件包含:

<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro"/>

模型显示

方法一:将xacro文件转换成URDF文件后显示

rosrun xacro xacro.py mbot.xacro>mbot.urdf

方法二:直接调用xacro文件解析器

<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'"/>
<param name="robot_description" command="$(arg model)"/>
roslaunch mbot_description display_mbot_base_xacro.launch

相关学习资料:http://wiki.ros.org/urdf/Tutorials


文章作者: Immortalqx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Immortalqx !
评论
  目录