ROS之urdf 1

URDF  玩虚拟机的时候用得着, 因为它可以用来在rviz跟gazebo里面用xml定义出一个虚拟的机器人, 全称为Universal Robot Discription Format, 记住这个, 就不会老记成urdf/udrf, 傻傻分不清楚了..

这里有很多别人的urdf:

http://wiki.ros.org/urdf/Examples

xml是如何对模型, 传感器, 关节之类进行编码的呢?

首先模型

http://wiki.ros.org/urdf/XML/model

如上图, 一个机器人, 根儿是Link1, 通过关节1, 2 连接Link3, Link2, 然后Link3通过关节2连接Link4.

格式基本上是这样:

<robot name="pr2">
  <link> ... </link>
  <link> ... </link>
  <link> ... </link>

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

 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>

 

结合上面的图, 看看下面的实例:

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

 先不管惯性跟碰撞, 先看看有关visual的部分, 就是外貌啊.. : )

xyz就是xyz, 没啥可解释的, rpy, 这个...听着很污啊, 其实是roll, pitch, yaw, 中文只有一个字形容这三个状态, 就是滚, 但是英语里面分为向前滚, 向侧面滚, 跟就地旋转三个词, 厉害吧, 其实科学点说, 是前倾角, 侧倾角, 偏航角, 玩过G-Sensor的就是熟悉这个了.

origin就是相对frame的起始位置

geometry就是外形, 如果是个立方体, 就是直接用box, size...不用说了吧.

还有类似的: cylinder(圆柱), sphear(球体)

meterial就是刷漆, 刷什么颜色的漆, 或者贴图.

当你导入类似dae, stl的结构文件的时候, 就需要制定导入的文件, 用mesh:

<geometry>
     <mesh filename="package://carModel/meshes/l_finger.dae"/>
</geometry>
原文地址:https://www.cnblogs.com/Montauk/p/6911658.html