URDF模型
URDF模型用于反映机器人各个组件之间的位置关系,包括车体、驱动轮、相机、激光雷达等,是ROS的robot_state_publisher用来给机器人发布tf关系的。
URDF模型使用xml格式编写,可以使用网格模型网格对象(STL或Collada)、简单的方体或圆柱体等组件。
URDF描述文件
以下用一个实例来描述URDF文件的构成。
我们先写一个link作为基础:
01-myrobot.urdf
<?xml version="1.0"?>
<robot name="myrobot">
<link name="link_1">
<visual>
<geometry>
<cylinder length="0.6" radius="0.1"/>
</geometry>
</visual>
</link>
</robot>
第一行:声明xml格式,以及版本号
第二行:<robot>
标签定义了机器人的name:myrobot
第三行:<link>
标签定义了link的name:link_1
第四行:<visual>
标签定义link的可视化属性其包括:geometry、origin、material三个属性
第五行:<geometry>
标签定义link的几何属性,可以是cylinder、box等,还可以是STL文件
第六行:<cylinder>
定义了link为圆柱体
我们再定义两个link、一个joint:joint描述的是两个joint之间的连接关系。
02-myrobot.urdf
<?xml version="1.0"?>
<robot name='myrobot'>
<link name="link_1">
<visual>
<geometry>
<cylinder length="0.6" radius="0.1"/>
</geometry>
</visual>
</link>
<link name="link_2">
<visual>
<geometry>
<box size="0.6 0.1 0.2"/>
</geometry>
<origin rpy="0 1.57075" xyz="0 0 -0.3"/>
</visual>
</link>
<joint name="joint_1" type="fixed">
<parent link="link_1"/>
<child link="link_2"/>
<origin rpy="0 0 0" xyz="0 -0.22 0.25"/>
<axis xyz="0 0 0"/>
</joint>
</robot>
第十五行:<origin>
标签定义了link_2的方向与位置
第十八行:<joint>
标签定义了joint的name:joint_1,类型fixed
第十九行:<parent>
标签指定了joint的父link
第十九行:<child>
标签指定了joint的子link
第二十行:<origin>
标签定义了两个link之间的位置关系
第二十一行:<axis>
标签定义了两个link之间的旋转轴,一般joint属性为continuous需要定义旋转轴
简单了解了URDF描述文件的写法后,在这里编写一个简易的四轮小车模型并在rviz中显示。
03-myrobot.urdf
<?xml version="1.0"?>
<?xml version="1.0"?>
<robot name="myroobt">
<link name="base_link">
<visual>
<geometry>
<box size="0.6 0.4 0.2"/>
</geometry