URDF文件

URDF

简介

  • Unified Robot Description Format,统一机器人描述格式,简称为URDF
  • ROS中的urdf功能包包含一个URDF的C++解析器,URDF文件使用XML格式描述机器人模型

解析

<robot>

介绍

  • 完整机器人模型的最顶层标签
  • <link><joint>标签都必须包含在<robot>标签内
  • 一个完整的机器人模型,由一系列<link><joint>组成

img

例子:

<robot name="robot_name">
    <link>......</link>
    <link>......</link>
    
    <joint>......</joint>
    <joint>......</joint>
</robot>

属性

  • name(必需):link的名字

介绍

  • urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如:机器人底座、轮子、激光雷达、摄像头...每一个部件都对应一个 link, 在 link 标签内,可以设计该部件的形状(shape)、尺寸(size)、颜色(color)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等一系列属性

img

子标签

  • <visual>:描述机器人link部分的外观参数
    • <geometry>:可视化对象的形状
      • box:矩形
      • cylinder:圆柱体
      • sphere:球体
      • mesh:网格,纹理(更为复杂的模型)
    • <origin>:设置偏移量与倾斜弧度
    • <material>:可视化组件的材料
      • color:颜色
    • <texture>:材料属性(纹理)
  • <inertial>:描述link的惯性参数
    • <origin>:定义连杆质心坐标
    • <mass>:连杆的质量
    • <inertia>:惯性张量
  • <collision>:描述link的碰撞属性
    • <origin>:碰撞组件的参考坐标系相对于连杆坐标系的参考坐标系
    • <geometry>:与上述geometry元素描述相同

例子:

<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>

<joint>

介绍

  • urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性,还可以指定关节运动的安全极限,机器人的两个部件(分别称之为 parent link 与 child link)以"关节"的形式相连接,不同的关节有不同的运动形式::旋转、滑动、固定、旋转速度、旋转角度限制等等,比如:安装在底座上的轮子可以360度旋转,而摄像头则可能是完全固定在底座上
  • joint标签对应的数据在模型中是不可见的

img

属性

  • <name>(必需):指定joint的名字(唯一的)
  • type(必需):指定joint的类型,有下列几种:
关节类型 描述
continuous 旋转关节,可以绕单轴无限旋转
revolute 旋转关节,类似于 continues,但是有旋转角度限制
prismatic 滑动关节,可以沿着一个轴滑动,有最大值和最小值限制
planer 平面关节,允许在平面正交方向上平移或旋转
floating 浮动关节,允许进行平移、旋转运动
fixed 这不是一个实际的关节,因为它无法运动,所有的自由度都被锁定。这种类型的关节不需要指定轴、动力学特征、标度和最大值最小值限制

子标签

  • <parent>:parent link的名字是一个强制的属性,是这个link在机器人结构树中的名字。 可以理解为parent是主体,child是固定在主体上的配件
  • <child>:child link的名字,是这个link在机器人结构树中的名字
  • <origin>:从parent link到child link的变换,joint位于child link的原点
  • <calibration>:关节的参考位置,用来校准关节的绝对位置
    • rising:当joint正向运动时,参考点会触发一个上升沿
    • falling:当joint正向运动时,参考点会触发一个下降沿
  • <axis>:设置围绕哪个关节轴运动
  • <dynamics>:描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到
    • damping:joint的阻尼值
    • friction:joint的摩擦力值
  • <limit>:描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等
    • lower:指定joint运动范围下界的属性,连续型的joint忽略该属性
    • upper:指定joint运动范围上界的属性,连续型的joint忽略该属性
    • effort:该属性指定了joint运行时的最大的力
    • velocity:该属性指定了joint运行时的最大的速度
  • <mimic>:指定该joint来模仿已存在的joint
    • joint:需要模仿的joint的名字
    • multiplier:指定上述公式中的乘数因子
    • offset:指定上述公式中的偏移项,默认值为0
  • <safety_controller>:描述安全控制器参数
    • soft_lower_limit:该属性指定了joint安全控制边界的下界,是joint安全控制的起始限制点,默认为0
    • soft_upper_limit:该属性指定了joint安全控制边界的上界,是joint安全控制的起始限制点,默认为0
    • k_position:本属性用于说明位置和速度之间的关系
    • k_velocity:本属性用于说明力和速度之间的关系

例子:

 <joint name="my_joint" type="floating">
    <origin xyz="0 0 1" rpy="0 0 3.1416"/>
    <parent link="link1"/>
    <child link="link2"/>

    <axis xyz="0 0 1" />
    <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>
posted @ 2021-11-15 23:32  TNTksals  阅读(740)  评论(0编辑  收藏  举报