对于刚踏入机器人领域的开发者来说,想要让机器人在仿真环境里动起来、在可视化工具里'显形',第一步就是要给机器人写一份'数字说明书'——这就是 URDF 的核心作用。URDF(Unified Robot Description Format),即统一机器人描述格式,是 ROS(包括 ROS2)中专门用于描述机器人几何形状、运动学特性、动力学属性的 XML 格式文件。可以说,没有 URDF,机器人就只是一堆没有'身份'的零件。
一、URDF 到底是什么?能做什么?
1. 核心定位:机器人的'数字孪生说明书'
你可以把 URDF 想象成一份给计算机看的机器人说明书,里面写清楚了:
- 机器人由哪些零件组成:比如底座、机械臂关节、车轮,这些零件在 URDF 里被称为连杆(link);
- 零件之间如何连接:比如哪个关节能旋转、哪个关节是固定的,这些连接关系被称为关节(joint);
- 每个零件长什么样、有多重:比如底座是立方体还是圆柱体、质量多少、会不会和其他零件碰撞;
- 零件的运动规则:比如旋转关节能转多大角度、移动关节能伸多长。
2. URDF 的四大核心功能
对于 ROS2 开发者来说,掌握 URDF 就是掌握了机器人开发的'入门钥匙',它主要支撑四大场景:
| 功能场景 | 具体作用 | 直观感受 |
|---|---|---|
| 可视化展示 | 在 RViz2 中显示机器人的 3D 模型 | 能'看见'自己设计的机器人长什么样 |
| 运动学计算 | 为机器人正逆运动学求解提供参数 | 告诉计算机'关节转 10 度,末端会到哪里' |
| 仿真驱动 | 为 Gazebo 仿真环境提供物理属性 | 让机器人在仿真里'跑起来''动起来' |
| 路径规划 | 为 MoveIt2 等规划器提供几何约束 | 让机器人知道'怎么动才不会撞到自己' |
小提醒:URDF 有一个局限性——只支持树形结构的机器人,简单说就是机器人的零件不能'闭环'(比如并联机器人)。如果要做闭环机器人,后续需要结合 SRDF(语义机器人描述格式)扩展,这是后话,入门阶段先掌握 URDF 即可。
二、URDF 的基本结构:XML 格式的'零件清单'
URDF 是纯 XML 文件,后缀名通常为 .urdf,其核心结构就像一棵'树':根节点是 <robot>,下面挂着若干 <link>(连杆)和 <joint>(关节),再辅以 <material>(材质)等辅助节点。
1. 根节点:<robot>
所有 URDF 内容都必须包裹在 <robot> 标签内,name 属性用来定义机器人的名称(比如 my_first_robot),这个名称要唯一,是机器人的'身份证号'。
最基础的 URDF 骨架:
<?xml version="1.0"?>
<!-- 根节点:定义机器人名称 -->
<robot =>

