1. 机器人开发中的"骨架"与"灵魂"
如果把机器人比作一个有生命的个体,那么URDF就是它的骨骼系统,定义了机器人的物理结构和基本运动能力;而SRDF则是它的神经系统,赋予了机器人智能运动的"灵魂"。这种"骨架+灵魂"的组合,构成了ROS机器人开发中最基础也最重要的描述体系。
在实际项目中,我经常遇到刚接触ROS的开发者分不清这两者的关系。举个生活中的例子:URDF就像汽车的底盘和传动系统,决定了车辆能跑多快、能载多重;SRDF则像是车载导航和自动驾驶系统,告诉车辆该走哪条路线、如何避开障碍物。两者缺一不可,但又各司其职。
URDF(统一机器人描述格式)采用XML语法,主要描述三类核心信息:
- 运动学结构:关节类型(旋转/平移/固定)、运动范围、父子连杆关系
- 物理属性:质量、惯性矩阵、重心位置
- 外观模型:用于可视化的3D网格文件和用于碰撞检测的简化几何体
而SRDF(语义机器人描述格式)则在此基础上补充了四大类关键信息:
- 关节分组:将多个关节归类(如"机械臂组"、"夹爪组")
- 预设姿态:定义"home位置"、"运输姿态"等常用状态
- 碰撞排除:标记不需要检测碰撞的连杆对
- 末端执行器:指定工具坐标系和操作空间
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从零搭建机械臂模型实战
2.1 创建基础URDF模型
让我们以Franka Panda机械臂为例,看看如何从头构建一个可用的机器人模型。首先创建panda_arm.urdf文件:
xml复制<?xml version="1.0"?>
<robot name="panda_arm" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- 基础连杆 -->
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.1" radius="0.2"/>
</geometry>
</visual>
<collision>
<geometry>
<cylinder length="0.1" radius="0.2"/>
