本文介绍: 注意:Ĉx、Ĉy、Ĉz 相对于 L̂x、L̂y、L̂z 的方向由 标签中的 rpy 值指定。它们定义的几何形状的组合构成了刚体(link)的可视化表示。所有自由度都被锁定。表示从 Lo(刚体坐标系原点)到 Co(刚体质量中心)的位置矢量为 x L̂x + y L̂y + z L̂z,其中 L̂x、L̂y、L̂z 为链接框架 L 的正交单位矢量。固定在质心坐标系 C 中的单位向量Ĉx、Ĉy、Ĉz 相对于 Co(刚体质心)的惯性矩 ixx、iyy、izz 和惯性积 ixy、ixz、iyz。

系列文章目录

 


前言

英文 中文
link 刚体
joint 关节
frame 坐标系
identity element 单位元(加法为 0)

 


 

一、robot

1.1 <robot> 元素

机器人描述文件的根元素必须是 robot ,所有其他元素都必须封装在其中。

1.2 元素

 

1.3 属性

name

主文件必须有 name 属性。在包含文件中,name 属性是可选的。如果在附加的包含文件中指定了属性名称,其值必须与主文件中的相同。

1.4 示例

<robot name="pr2">
  <!-- pr2 robot links and joints and more -->
</robot>

二、link

2.1 <link> 元素

link 元素描述了一个具有惯量(inertia)、视觉特征(visual features)和碰撞属性(collision properties)的刚体(rigid body)。

下面是一个 link 元素的示例:

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

a4d87862e1e7417baddde536f0e163a0.png

2.2 属性

name(必需)

刚体(link)本身的名称。

2.3 元素

2.3.1 <inertial>(可选:如果未指定,默认质量为零,惯量为零)

刚体(link)的质量、质心位置和中心惯量特性。

2.3.1.1 <origin>(可选:如未指定,默认为单位元)

 这个姿态(平移、旋转)描述了刚体(link)的质心坐标系(center of mass frame) C 相对于刚体(link)坐标系 L 的位置和方向。

xyz(可选:默认为 0 向量)

表示从 Lo(刚体坐标系原点)到 Co(刚体质量中心)的位置矢量为 x L̂x + y L̂y + z L̂z,其中 L̂x、L̂y、L̂z 为链接框架 L 的正交单位矢量。

rpy(可选:如果未指定,默认为单位元)

表示质心坐标系 C 的单位矢量 Ĉx、Ĉy、Ĉz 相对于刚体坐标系 L 的方向,是以弧度为单位的欧拉旋转序列 (r p y)。注意: Ĉx、Ĉy、Ĉz 不需要与刚体的惯性主轴对齐。

2.3.1.2 <mass>

 刚体的质量由该元素的 value 属性表示

2.3.1.3 <inertia>

固定在质心坐标系 C 中的单位向量Ĉx、Ĉy、Ĉz 相对于 Co(刚体质心)的惯性矩 ixx、iyy、izz 和惯性积 ixy、ixz、iyz。

注意:Ĉx、Ĉy、Ĉz 相对于 L̂x、L̂y、L̂z 的方向由 <origin> 标签中的 rpy 值指定。一些原始形状的属性 ixx、ixy、ixz、iyy、iyz、izz 在这里。URDF 假定惯性积为负值(更多信息,请参阅有关使用 CAD 工具的 MathWorks 文档)。要避免与惯性积负号约定相关的兼容性问题,最简单的方法是将Ĉx、Ĉy、Ĉz 与主惯性方向对齐,使所有惯性积为零。

2.3.2 <visual>(可选)

刚体(link)的可视化属性。该元素用于指定对象的形状(方框、圆柱等),以便实现可视化。注意:同一刚体(link)可存在多个 <visual> 标记实例。它们定义的几何形状的组合构成了刚体(link)的可视化表示。 

2.3.2.1 name(可选)

指定刚体几何体部分的名称。这对引用刚体几何图形的特定的位非常有用。

2.3.2.2 <origin>(可选:如未指定,默认为单位元) 

 visual 元素相对于刚体参照系的参照系。

xyz(可选:默认为 0 向量)

表示 x、y、z 偏移量。

rpy(可选:如果未指定,默认为单位元)

表示以弧度为单位的固定轴滚动角、俯仰角和偏航角。

2.3.2.3 <geometry>

视觉对象的形状。可以是以下形状之一:

<box>

size 属性包含方框的三个边长。方框的原点位于其中心。

<cylinder>

指定半径和长度。圆柱体的原点位于其中心。

fd90fece05264d2d8102374edbcd2cc5.png

<sphere>

指定半径。球体的原点位于其中心。

2.3.2.4 <mesh>

由文件名和可选的缩放比例指定的 trimesh 元素,缩放比例用于缩放网格的轴对齐包围盒。任何几何体格式都可接受,但具体应用的兼容性取决于实施情况。为获得最佳纹理和颜色支持,推荐使用 Collada .dae 文件格式。网格文件不会在引用同一模型的机器之间传输。它必须是本地文件。在文件名前加上 package://<packageagename>/<path>,使网格文件的路径相对于软件包 <packageagename>。

2.3.2.5 <material>

视觉元素的材质。可以在 “link “对象之外的顶层 “robot “元素中指定材质元素。在 link 元素中,您可以通过名称来引用材料。

name

材料名称

<color>

rgba 材料的颜色,由代表红/绿/蓝/阿尔法的四个数字组成,每个数字的范围为 [0,1]。

<texture>

材料的纹理由文件名指定

 2.3.4 <collision>

刚体的碰撞属性。请注意,这可能与刚体的视觉属性不同,例如,为了减少计算时间,通常会使用更简单的碰撞模型。注意:同一刚体可以存在多个 <collision> 标记实例。它们定义的几何体的组合构成了刚体的碰撞表示。

2.3.4.1 name

指定刚体几何体部分的名称。这对引用刚体几何图形的特定的位非常有用。

2.3.4.2 <origin>

 碰撞元素相对于刚体参照系的参照系。

xyz(可选:默认为 0 向量)

表示 x、y、z 偏移量。

rpy(可选:如果未指定,默认为单位元)

表示以弧度为单位的固定轴滚动角、俯仰角和偏航角。

2.3.4.3 <geometry>

参见上述视觉元素中的几何描述。 

2.4 推荐的网格分辨率

在使用 ROS 运动规划软件包进行碰撞检测时,建议在 URDF 中添加的碰撞网格每个链接的面数越少越好(最好少于 1000 个)。如果可能,我们鼓励使用其他基元近似网格。

2.5 多碰撞体

会议决定,URDF 不应支持多组碰撞体,尽管有时会有这方面的应用。URDF 仅用于表示机器人的实际属性,而不是用于控制器碰撞检查等外部用途的碰撞。在 URDF 中,<visual> 元素应尽可能与真实机器人保持一致,而 <collision> 元素则应与真实机器人接近,尽管网格中的三角形数量要少得多。

如果您确实需要更粗粒度、更大尺寸的碰撞几何图形来进行碰撞检查和控制器等操作,您可以将这些网格/几何图形移动到自定义 XML 元素中。例如,如果您的控制器需要一些特殊的粗糙碰撞检查几何体,您可以在 <collision> 元素后添加 <collision_checking> 标签:

  <link name="torso">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://robot_description/meshes/base_link.DAE"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
      <geometry>
        <mesh filename="package://robot_description/meshes/base_link_simple.DAE"/>
      </geometry>
    </collision>
    <collision_checking>
      <origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
      <geometry>
        <cylinder length="0.7" radius="0.27"/>
      </geometry>
    </collision_checking>
    <inertial>
      ...
    </inertial>
  </link>  

 URDF 将忽略这些自定义元素,如 “collision_checking”,而您的特定程序可以自行解析 XML 来获取这些信息。

三、Joint

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

 

b500d9f8daba46a7807ab86b016ce27e.png

 

3.2 属性

关节元素有两个属性:

name(必填)

指定接头的唯一名称

type(必填)

指定关节类型,其中类型可以是以下之一:
revolute – 沿轴线旋转的铰链接头,其范围由上下限指定。

continuous – 一种绕轴旋转的连续铰链接头,没有上下限。

prismatic – 沿轴线滑动的滑动接头,其范围受上下限的限制。

fixed – 这不是真正意义上的关节,因为它不能移动。所有自由度都被锁定。这种关节不需要 <axis>、<calibration>、<dynamics>、<limits> 或 <safety_controller>。

floating – 这种关节允许所有 6 个自由度的运动。

planar – 这种关节允许在垂直于轴的平面内运动。

3.3 元素

joint 元素包含以下元素:

3.3.1 <origin> (可选:如果未指定,默认为 identity)

这是从父刚体(link)到子刚体(link)的转换。如上图所示,关节点位于子刚体(link)的原点。

xyz(可选:默认为零向量)

代表 x、y、z 偏移量。所有位置的单位都是米。

rpy(可选:默认为零向量)

代表绕固定轴的旋转:首先绕 x 轴旋转,然后绕 y 轴旋转,最后绕 z 轴旋转。

3.3.2 <parent>(必填)

带有强制属性的父刚体(link)名称:

link

该刚体(link)在机器人树结构中的父刚体(link)名称。

3.3.3 <child>(必填)

带有强制属性的子刚体(link)名称:

link

作为子刚体(link)的刚体(link)名称。

3.3.4 <axis>(可选:默认为(1,0,0)

关节坐标系中指定的关节轴。对于旋转关节,这是旋转轴;对于棱柱关节,这是平移轴;对于平面关节,这是表面法线。轴在关节参考坐标系中指定。固定关节和浮动关节不使用轴字段。

xyz(必填)

代表矢量的(x、y、z)分量。矢量应进行归一化处理。

3.3.5 <calinration>(可选)

关节的参考位置,用于校准关节的绝对位置。

rising(可选)

当关节向正方向移动时,该参考位置将触发一个上升沿。

falling(可选)

当关节向正方向移动时,该参考位置将触发下降沿。

3.3.6 <dynamics>(可选)

指定关节物理属性的元素。这些值用于指定关节的建模属性,对仿真特别有用。

damping(可选,默认为 0)

关节的物理阻尼值(对于棱柱关节,单位为牛顿-秒/米[N∙s/m];对于旋转关节,单位为牛顿-米-秒/弧度[N∙m∙s/rad])。

friction(可选,默认为 0)

关节的物理静摩擦力值(对于棱柱形关节,单位为牛顿[N];对于反卷形关节,单位为牛顿-米[N∙m])。

3.3.7 <limit>(仅外旋式和棱柱式接头需要)

元素可包含以下属性:

lower (可选,默认为 0)

指定关节下限的属性(对于旋转关节,单位为弧度;对于棱柱关节,单位为米)。如果关节是连续的,则省略。

upper (可选,默认为 0)

指定关节上限的属性(对于旋转关节以弧度为单位,对于棱柱关节以米为单位)。如果关节是连续的,则省略。

effort(必填)

用于执行最大关节力的属性(|applied effort| < |effort|)。请参阅安全限制。

velocity(必填)

用于执行最大关节速度的属性(对于旋转关节,单位为弧度/秒 [rad/s];对于棱柱关节,单位为米/秒 [m/s])。请参阅安全限制。

3.3.8 <mimic>(可选)(ROS Groovy 的新功能,参见问题)

该标签用于指定已定义的关节模仿另一个现有关节。该关节的值可计算为:value = multiplier * other_joint_value + offset。

预期和可选属性:

joint(必填)

指定要模仿的关节名称。

multiplier(可选)

指定上述公式中的乘法因子。

offset(可选)

指定在上述公式中添加的偏移量。默认值为 0(外旋关节为弧度,棱柱关节为米)

<safety_controller>(可选)

元素可包含以下属性:

soft_lower_limit (可选,默认为 0)

指定安全控制器开始限制关节位置的下关节边界的属性。该限制必须大于关节下限(见上文)。更多详情,请参阅安全限制。

soft_upper_limit (可选,默认为 0)

指定接头上限边界的属性,安全控制器从此处开始限制接头位置。该限制必须小于关节上限(见上文)。详情请参阅安全限制。

k_position(可选,默认为 0)

指定位置和速度限制之间关系的属性。详情请参阅安全限值。

k_velocity (必填)

指定力度和速度限制之间关系的属性。详情请参阅安全限制。

四、model

统一机器人描述格式(URDF)是一种描述机器人的 XML 规范。我们试图尽可能保持该规范的通用性,但该规范显然无法描述所有机器人。目前的主要限制是只能表示树形结构,排除了所有并联机器人。此外,本规范假定机器人由通过关节连接的刚性连接组成;不支持柔性元素。规范包括

  • 机器人的运动学和动力学描述
  • 机器人的可视化表示
  • 机器人的碰撞模型

7674dc91573f403ab4e166a8c427771e.png

 

机器人的描述由一组刚体(link)元素和一组将刚体(link)连接在一起的关节元素组成。因此,典型的机器人描述是这样的

<?xml version="1.0"?>
<?xml-model href="https://raw.githubusercontent.com/ros/urdfdom/master/xsd/urdf.xsd" ?>
<robot name="pr2" xmlns="http://www.ros.org">
  <link> ... </link>
  <link> ... </link>
  <link> ... </link>

  <joint>  ....  </joint>
  <joint>  ....  </joint>
  <joint>  ....  </joint>
</robot>

可以看到,URDF 格式的根元素是 <robot> 元素。

 

五、常见几何体的惯量矩阵

描述 图形 惯量张量矩
实心球,半径为r,质量为m 2fb687efb6d04b66a1839b567ddb09eb.png eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%7B%5Cfrac%7B2%7D%7B5%7D%7Dm%20r%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B2%7D%7B5%7D%7Dm%20r%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B2%7D%7B5%7D%7Dm%20r%5E%7B2%7D%7D%7D%5Cend%7Barray%7D%5Cright%5D%24
空心球,半径为r,质量为m b33aa01c623740c78e62fbaf0e5a9018.png

eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%7B%5Cfrac%7B2%7D%7B3%7D%7Dm%20r%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B2%7D%7B3%7D%7Dm%20r%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B2%7D%7B3%7D%7Dm%20r%5E%7B2%7D%7D%7D%5Cend%7Barray%7D%5Cright%5D%24

实心椭球,半轴为abc,质量为m ae7ac3571e374e0a94861e3c26e0fab0.png eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%7B%5Cfrac%7B1%7D%7B5%7D%7Dm%20%28b%5E2&plus;c%5E2%29%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B1%7D%7B5%7D%7Dm%20%28a%5E2&plus;c%5E2%29%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%7B%5Cfrac%7B1%7D%7B5%7D%7Dm%20%28a%5E2&plus;b%5E2%29%7D%7D%5Cend%7Barray%7D%5Cright%5D%24
圆锥,半径为r,高为h,质量为m 5f35188658e0481d8041fa9c66a82175.png  
实心长方体,高为h,宽为w,长为d,质量为m aa4ec8e31e1345afa346ac40dfdf3e18.png  
端点绕y轴旋转的细棒,长为l,质量为m 142afb96803d4dff914b5bf78edbdca0.png

eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%5Cfrac%7B1%7D%7B3%7Dm%20l%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%5Cfrac%7B1%7D%7B3%7Dm%20l%5E%7B2%7D%7D%7D%5Cend%7Barray%7D%5Cright%5D%24

中心绕y轴旋转的细棒,长为l,质量为m c336a327739748c6be8047de8be9daaa.png

eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%20l%5E%7B2%7D%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%20l%5E%7B2%7D%7D%7D%5Cend%7Barray%7D%5Cright%5D%24

实心圆柱,半径为r,高为h,质量为m 48bd58eba64d4fe9b60a2be925a59fac.png

eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%283r%5E%7B2%7D&plus;h%5E%7B2%7D%29%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%283r%5E%7B2%7D&plus;h%5E%7B2%7D%29%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B0%7D%7D%26%7B%7B%5Cfrac%7B1%7D%7B2%7Dm%20r%5E%7B2%7D%7D%7D%5Cend%7Barray%7D%5Cright%5D%24

两端开通的厚圆柱,内半径为r1,外半径为r2,高为h,质量为m f448542a3fb8408b9be40e87d7f669ea.png eq?%24I%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bc%20c%20c%7D%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%283%28r_%7B1%7D%5E%7B2%7D&plus;r_%7B2%7D%5E%7B2%7D%29&plus;h%5E%7B2%7D%29%7D%7D%26%7B%7B0%7D%7D%26%7B%7B0%7D%7D%5C%5C%20%7B%7B0%7D%7D%26%7B%7B%5Cfrac%7B1%7D%7B12%7Dm%283%28r_%7B1%7D%5E%7B2%7D&plus;r_%7B2%7D%5E%7B2%7D%29&plus;h%5E%7B2%7D%29%7D%7D%260%5C%5C%200%26%200%26%7B%7B%5Cfrac%7B1%7D%7B2%7Dm%28%7Br_%7B1%7D%5E%7B2%7D&plus;r_%7B2%7D%5E%7B2%7D%7D%29%7D%7D%5Cend%7Barray%7D%5Cright%5D%24

 

原文地址:https://blog.csdn.net/weixin_46300916/article/details/135255539

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_52208.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注