URDF统一机器人建模语言

使用XML定义一个简单的URDF模型

URDF的组成

  • 声明信息
    1. xml的声明信息
    2. 机器人的声明,通过一个robot标签可以声明一个机器人模型
1
2
3
4
5
6
<?xml version="1.0"?> 
<robot name="fishbot">
<link></link>
<joint></joint>
......
</robot>
  • 两种关键组件(Joint&Link)
    • 我们把轮子,支撑轮子,IMU和雷达部件称为机器人的Link
    • link和link之间的连接部分称之为Joint关节

Link介绍

  • 通过link标签即可声明一个link,属性name指定部件名字
    1
    2
    3
    <link name="base_link">

    </link>
  • 通过vislual子标签就可以声明出来机器人的visual形状
    1
    2
    3
    4
    5
    6
    7
    8
    <link name="base_link">
    <visual>
    <origin xyz="0 0 0.0" rpy="0 0 0"/>
    <geometry>
    <cylinder length="0.12" radius="0.10"/>
    </geometry>
    </visual>
    </link>

Joint介绍

  • joint为机器人关节,机器人关节用于连接两个机器人部件,主要写明父子关系

    • 父子之间的连接类型,包括是否固定的,可以旋转的等

    • 父部件名字

    • 子部件名字

    • 父子之间相对位置

    • 父子之间的旋转轴,绕哪个轴转

    • 比如我们再建立一个雷达部件laser_link,然后将laser_link固定到base_link

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
	<robot name="fishbot">

<!-- base link -->
<link name="base_link">
<visual>
<origin xyz="0 0 0.0" rpy="0 0 0"/>
<geometry>
<cylinder length="0.12" radius="0.10"/>
</geometry>
</visual>
</link>

<!-- laser link -->
<link name="laser_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder length="0.02" radius="0.02"/>
</geometry>
<material name="black">
<color rgba="0.0 0.0 0.0 0.5" />
</material>
</visual>
</link>

<!-- laser joint -->
<joint name="laser_joint" type="fixed">
<parent link="base_link" />
<child link="laser_link" />
<origin xyz="0 0 0.075" />
</joint>

</robot>