1.什么是URDF模型?
- Unified Robot Description Format,统一机器人描述格式;
- ROS中一个非常重要的机器人模型描述格式;
- 可以解析URDF文件中适用XML格式描述的机器人模型,xml能够方便地使用标签、属性来描述模型当中的相关信息;
- ros同时也提供URDF文件的C++解析器,能够在代码当中调用模型当中的一些信息。
一个机器人拆开的话大致上可以分为两个部分,一个是连杆、两个连杆(link)之间通过关节(joint)来连接。
link的话主要是设置连杆部分的尺寸、颜色、形状等等。Collision一般都画成矩阵,会比椭圆方便点,计算起来运算量也会比较小。
joint的话主要是连接两个关节。关节可以分为六种:无限旋转关节(如小车车轮等)、有旋转角度极限关节(手臂关节)、滑动关节(在某一个坐标系上可以滑动的关节)、平面关节、浮动关节、固定关节。用的最多的还是旋转关节。
还有一些其他的参数,想关节的参考位置,阻尼(物理仿真引擎里面会有),mimic描述关节与已有关节之间的关系等。
整个的机器人模型是可以采用link和joint来描述的,但是整个的标签都得在根标签(robot)里面。根标签里面指定机器人的名字是什么:
2.创建一个机器人功能包
在工作空间的src目录下面打开终端,输入以下命令:
catkin_create_pkg mbot_description urdf xacro
后面还跟了两个功能包,urdf是用于解析整个模型。后面还有一个xacro功能包。
创建成功之后里面有两个文件cmakelists.txt和package.xml。
我们需要在里面创建几个文件夹:
urdf:存放机器人模型的URDF或xacro文件。
meshes:存放URDF中引用的模型渲染文件。
launch:保存相关启动文件。
config:保存rviz的配置文件。
第一行表示的是参数的名字,然后定义文件位置。
joint_state_publisher:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制。
robot_state_publisher:将机器人各link、joint之间的关系,通过tf的形式,整理成三维姿态信息发布。
然后还有一些文件,都可以在分享的资源里面找到,视频里面对文件的源码都做了解析,这里我就不写了。
我们运行以下命令,就可以看到机器人的模型(模型描述文件在urdf里面):
roslaunch mbot_description display_mbot_base_urdf.launch
得到结果如上图所示。
在urdf目录下面,输入以下命令:
urdf_to_graphiz mbot_with_kinect.urdf