URDF
为了制作模拟器,首先了解下什么是URDF
什么是URDF? Unified Robot Description Format——统一机器人描述格式。
参考文献
1. ROS urdf教程:http://wiki.ros.org/urdf/Tutorials
2. 《Learning ROS for Robostic Programming》
URDF基本语法
统一机器人描述格式URDF,其实就是为了能够抽象描述一个机器人的硬件。而且URDF是基于XML的,所以阅读起来应该非常容易。
(图一)

第一版
在URDF语言中,机器人都会由各个部件(Link)通过关节(Joint)连接而成。而这里的关键就是描述部件和关节之间的关系。
在这个简单的小车模型中,一共有5个部件: 车身 + 4个轮子。 4个关节: 每个轮子一个。
于是,我们得到了最初了URDF版本 01_car_skeleton.urdf
- <robot name="test_robot">
- <link name="base_link" />
- <link name="wheel_1" />
- <link name="wheel_2" />
- <link name="wheel_3" />
- <link name="wheel_4" />
-
-
- <joint name="joint_base_wheel1" type="fixed">
- <parent link="base_link"/>
- <child link="wheel_1"/>
- </joint>
-
-
- <joint name="joint_base_wheel2" type="fixed">
- <parent link="base_link"/>
- <child link="wheel_2"/>
- </joint>
-
-
- <joint name="joint_base_wheel3" type="fixed">
- <parent link="base_link"/>
- <child link="wheel_3"/>
- </joint>
-
-
- <joint name="joint_base_wheel4" type="fixed">
- <parent link="base_link"/>
- <child link="wheel_4"/>
- </joint>
- </robot>
用<link> tag描述各个部件,<joint> tag描述各个关节。用<parent>和<child>描述关节连接的部件。
只要描述了Link和Joint之间的关系,我们很容易就能构建机器人的框架。
我们可以用如下命令来检查urdf文件是否有语法问题。
- check_urdf 01_skeleton.urdf
只要得到如下结果就表明语法没问题。
- robot name is: test_robot
- ---------- Successfully Parsed XML ---------------
- root Link: base_link has 4 child(ren)
- child(1): wheel_1
- child(2): wheel_2
- child(3): wheel_3
- child(4): wheel_4
但请注意这虽然描述了各个部件之间的关系,但仍是一个不完整的URDF,无法在模拟器中显示。
第二版
<visual>tag用来描述模块的视觉效果。
<geometry>tag 用来描述模块的形状和大小。
<origin>tag用来描述模块的位置。
加上模块大小之后的小车文件如下所示。02_visual.urdf
- <robot name="test_robot">
- <link name="base_link">
- <visual>
- <geometry>
- <box size="0.2 .3 .1"/>
- </geometry>
- <origin rpy="0 0 0" xyz="0 0 0.05"/>
- </visual>
- </link>
-
- <