SRDF 文件详解与使用方法
SRDF 文件详解与使用方法
1. 什么是 SRDF 文件
SRDF 全称 Semantic Robot Description Format,是 ROS(Robot Operating System)生态中用于描述机器人语义信息的文件格式。
与 URDF(Unified Robot Description Format)不同,URDF 主要描述机器人的物理结构与几何模型(如关节、连杆、材质、视觉模型等),SRDF 则补充了机器人在物理结构之外的高层语义信息,例如:
- 哪些关节/连杆属于一个“规划组”
- 哪些连杆在运动规划中需要避免碰撞
- 默认的关节配置(姿态)
- 虚拟关节与参考坐标系
- 特定动作组(end effector)
- Disabled collisions 列表
SRDF 文件通常与 URDF 文件配套使用,尤其在 MoveIt! 等运动规划框架中,SRDF 是必需的。
2. SRDF 文件的结构
SRDF 文件是 XML 格式,常见的标签包括:
2.1 <group>
定义机器人上的一个规划组(Planning Group),比如机械臂的 6 个关节组成一个组。
主要属性与子标签:
<group name="arm"><joint name="joint1"/><joint name="joint2"/>...
</group>
2.2 <group_state>
为某个规划组定义一个默认状态(预设姿态),方便调用预设位置。
<group_state name="home" group="arm"><joint name="joint1" value="0"/><joint name="joint2" value="1.57"/>
</group_state>
2.3 <virtual_joint>
绑定机器人坐标系到外部参考系(如世界坐标系),常用于移动机器人或机械臂的底座定位。
<virtual_joint name="world_joint" type="fixed" parent_frame="world" child_link="base_link"/>
2.4 <end_effector>
定义末端执行器及其关联的规划组。
<end_effector name="gripper" parent_link="wrist_link" group="gripper_group"/>
2.5 <disable_collisions>
定义在运动规划中可以忽略的碰撞检查对,提升效率。
<disable_collisions link1="linkA" link2="linkB" reason="Adjacent"/>
3. SRDF 文件的生成方法
3.1 手工编写
你可以直接用文本编辑器编写 SRDF 文件,但需要仔细与 URDF 的关节、连杆命名一致,否则会出错。
3.2 使用 MoveIt Setup Assistant
这是官方推荐的方式:
- 安装 MoveIt! 和相关依赖。
- 运行
roslaunch moveit_setup_assistant setup_assistant.launch
- 导入 URDF 文件。
- 在 GUI 中配置规划组、末端执行器、默认姿态等。
- 保存生成的 SRDF 文件。
4. SRDF 文件的使用方式
-
与 URDF 一起加载
在启动 MoveIt! 或其他上层控制系统时,URDF 提供物理模型,SRDF 提供语义模型,二者一起构成立体的机器人描述。 -
运动规划
MoveIt! 在解析 SRDF 文件后会:- 确定规划组的关节范围
- 使用
disable_collisions
列表加速碰撞检测 - 根据
group_state
提供快速姿态切换
-
虚拟关节处理
如果机器人并非固定在世界坐标系,比如 AGV 搭载机械臂,可以使用 SRDF 的virtual_joint
定义运动基准。
5. SRDF 文件常见问题与注意事项
-
命名一致性
所有关节与连杆名称必须与 URDF 中完全一致(大小写敏感)。 -
碰撞优化
不要过度使用disable_collisions
,会降低规划的安全性。 -
版本兼容
ROS 不同版本中 SRDF 格式基本保持一致,但一些标签可能会扩展。
6. 总结
SRDF 是机器人语义描述的重要文件,配合 URDF,可让上层运动规划、控制和仿真更高效。掌握 SRDF 的结构和生成方法,能更好地定制机器人在复杂任务中的行为。