URDF
URDF 全称Universal Robot Description Format, 是ROS中使用的一种描述机器人的通用文件格式。
也是MoveIt 生成配置包的基础要素。
相关资料
- ROS官方Wiki URDF ROS Wiki Page
- ROS官方教程 URDF Tutorials
- 如果有机器人的三维模型文件,Solidwork插件可以帮助快速的生成URDF文件 SOLIDWORKS URDF Plugin
这里是一篇很详细的教程 OPENARM - Solidworks生成URDF
官方给出了很多机器人的URDF例子,可以参考URDF Examples
要点
以下提出一些MoveIt生成配置包所需的URDF文件的一些要点。
- 特殊字符
关节名称不能含有以下特殊字符
- [ ] ( )
- 安全限值
URDF中可以为关节设置安全限值Safety Limits ,可以通过添加safety controller来设置关节运动控制的限制。
以下Panda机器人head pan joint中的一个safety controller
<safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-2.857" soft_upper_limit="2.857"/>
这里给关键添加了一个软限位,soft_lower_limit和soft_upper_limit, 在具体控制这个关节运动的时候MoveIt会将关节实际物理的硬限位(根据URDF描述得到)和这里定义的软限位比较,取小。
注意:
如果soft_lower_limit和soft_upper_limit值设为0.0,则关节将无法运动。
- 碰撞检测
MoveIt会通过URDF中给的link的三维模型(mesh标签)来检测碰撞。在URDF中,对于一个link可以配置2个mesh元素,一个是在visual元素下,另一个在collision元素下。碰撞检测会利用collision元素下的mesh,visual中的mesh只是用于Rviz可视化。
<link name="${arm_id}_link0">
<visual>
<geometry>
<mesh filename="package://${description_pkg}/meshes/visual/link0.dae"/>
</geometry>
</visual>
<collision>
<geometry>
<mesh filename="package://${description_pkg}/meshes/collision/link0.stl"/>
</geometry>
</collision>
</link>
为了提高碰撞检测的效率,可以将collision中的mesh分辨率适当降低(减小3D模型三角面的数量),从而减少计算量。而对于visual中的mesh,可以使用较高的分辨率,从而提高模型显示的质量 (更好看一点)。
- 检查URDF
ROS提供了一个检查URDF语法的工具 http://wiki.ros.org/urdf#Verification
安装工具
sudo apt-get install liburdfdom-tools
执行检查
check_urdf pr2.urdf
如果一切正常,将会有如下显示:
robot name is: pr2
---------- Successfully Parsed XML ---------------
root Link: base_footprint has 1 child(ren)
child(1): base_link
child(1): base_laser_link
child(2): bl_caster_rotation_link
child(1): bl_caster_l_wheel_link
child(2): bl_caster_r_wheel_link
child(3): br_caster_rotation_link
child(1): br_caster_l_wheel_link
child(2): br_caster_r_wheel_link
child(4): fl_caster_rotation_link
child(1): fl_caster_l_wheel_link
child(2): fl_caster_r_wheel_link
child(5): fr_caster_rotation_link
child(1): fr_caster_l_wheel_link
child(2): fr_caster_r_wheel_link
child(6): torso_lift_link
child(1): head_pan_link
child(1): head_tilt_link
child(1): head_plate_frame
child(1): sensor_mount_link
child(1): double_stereo_link
child(1): narrow_stereo_link
网友评论