1.URDF定义
标准机器人描述(URDF)是种用于描述机器人机器结构、关节、自由度等的XML格式文件。
2.创建一个URDF文件
下面创建一个简单的四轮驱动小车模型
(1)首先创建一个机器人建模功能包:
cd ~/catkin_ws/src
catkin_create_pkg testbot_description urdf xacro
返回 catkin_ws 编译功能包
cd ..
catkin_make
(2)进入 testbot_description 文件夹,建一个名为 urdf 的文件夹,在urdf文件夹内,建名为: my_robot.urdf 的文件
3.创建树结构
打开 my_robot.urdf 输入如下内容:
<robot name="test_robot">
<link name="link1" />
<link name="link2" />
<link name="link3" />
<link name="link4" />
<joint name="joint1" type="continuous">
<parent link="link1"/>
<child link="link2"/>
</joint>
<joint name="joint2" type="continuous">
<parent link="link1"/>
<child link="link3"/>
</joint>
<joint name="joint3" type="continuous">
<parent link="link3"/>
<child link="link4"/>
</joint>
</robot>
进入~/catkin_ws/src/testbot_description/urdf,查看书写的语法和配置是否正确:
check_urdf my_robot.urdf
可以看到如下输出,和上图的关系一样:
4.添加关节空间位置
打开 my_robot.urdf增加如下内容:
<robot name="test_robot">
<link name="link1" />
<link name="link2" />
<link name="link3" />
<link name="link4" />
<joint name="joint1" type="continuous">
<parent link="link1"/>
<child link="link2"/>
<origin xyz="5 3 0" rpy="0 0 0" />
</joint>
<joint name="joint2" type="continuous">
<parent link="link1"/>
<child link="link3"/>
<origin xyz="-2 5 0" rpy="0 0 1.57" />
</joint>
<joint name="joint3" type="continuous">
<parent link="link3"/>
<child link="link4"/>
<origin xyz="5 0 0" rpy="0 0 -1.57" />
</joint>
</robot>
只是加了3行,我们以第2个"joint2"为例:
<origin xyz="-2 5 0" rpy="0 0 1.57" />
joint2在y方向与link1偏移5,在负x方向与link1偏移2,它围绕z轴旋转90度。
5.添加关节的旋转轴
打开 my_robot.urdf 增加如下内容:
<robot name="test_robot">
<link name="link1" />
<link name="link2" />
<link name="link3" />
<link name="link4" />
<joint name="joint1" type="continuous">
<parent link="link1"/>
<child link="link2"/>
<origin xyz="5 3 0" rpy="0 0 0" />
<axis xyz="-0.9 0.15 0" />
</joint>
<joint name="joint2" type="continuous">
<parent link="link1"/>
<child link="link3"/>
<origin xyz="-2 5 0" rpy="0 0 1.57" />
<axis xyz="-0.707 0.707 0" />
</joint>
<joint name="joint3" type="continuous">
<parent link="link3"/>
<child link="link4"/>
<origin xyz="5 0 0" rpy="0 0 -1.57" />
<axis xyz="0.707 -0.707 0" />
</joint>
</robot>
只是加了3行
<axis xyz="0 1 0" /> 表示joint绕y轴正方向旋转
<axis xyz="-0.707 0.707 0" /> 表示joint1围绕以x、y轴旋转
6.如果你想以图形方式来查看
进入~/catkin_ws/src/testbot_description/urdf
urdf_to_graphiz my_robot.urdf
在此目录下会生成一个PDF文件,打开如下: