URDF 和SDFormat是具有重叠元素但作用范围不同的XML机器人描述格式。 URDF 是许多用于单个机器人链路和关节的ROS工具的核心。 SDFormat可以描述模型、灯光、传感器、插件、物理以及完整的仿真世界。
这两种格式都无法保证物理真实度。视觉几何、碰撞几何和惯性几何可能存在分歧;帧语义可能通过转换而改变;传感器速率和噪声可能不真实。选择一种真实源策略,检查每个工具消耗的生成模型。
本指南应与 TF2 坐标系指南 及 虚拟调试指南结合使用。分别验证结构、框架、物理和传感器。
根据消费者和验证范围选择
列出每个消费者: robot_state_publisher、运动学、规划、可视化、控制、模拟器、世界编辑器和资产管道。记录每个用户接受的格式和版本。一个通用文件可以积累工具专用扩展,单个用户无法一致解读。
定义哪些行为必须与物理机器人相匹配。运动学规划可能需要关节和碰撞几何;控制器测试需要传输和接口;仿真可能需要惯性、摩擦、接触、传感器噪声和世界条件。

URDF 以一棵运动树为中心
URDF 描述通过关节连接的链路,通常存储视觉、碰撞和惯性属性。其树结构与robot_state_publisher及许多ROS工具保持一致。 Xacro增加了可重用生成功能,但属于预处理语言,而非运行时机器人模型。
ROS 2 URDF教程解释了生态系统。归档渲染得很 URDF,因为宏、参数和包路径决定了实际被消耗的文件。
| 需求 | URDF 力量 | SDFormat 强度 | 验证 |
|---|---|---|---|
| ROS运动树 | 广泛的工具支持 | 可能需要转换 | 关节与框架测试 |
| 模拟世界 | 需要延展 | 本土世界结构 | 生成与环境测试 |
| 多型号 | 外部发射逻辑 | 世界模型与嵌套模型 | 恒等与态态测试 |
| 传感器与物理 | 工具专用标签 | 富含本地元素 | 速率、噪声与接触测试 |
| 单源生成 | Xacro 或模板 | 模板或生成 | 差分生成的伪影 |
SDFormat 包含世界和物理上下文
SDFormat描述模型,也可以描述包含重力、物理引擎设置、灯光、道路、地形、插件和多个实体的世界。这使得它适合超越单一机器人的可复现模拟场景。
SDFormat规范有版本限制。记录规范版本和模拟器发布。有效文件仍可能依赖模拟器专用插件行为,且这些行为不具备移植性。
审计的视觉、碰撞和惯性属性分别
视觉几何影响外观;碰撞几何影响接触和规划;惯性属性影响动力学。重复使用一个详细网格对三者可能速度缓慢且物理不准确。一个视觉正确的模型可能包含零或不合理的惯性。
检查质量、质心和惯性张量是否对称且物理值正。将碰撞范围与真实机器人进行比较,验证简化形状不会产生不可能的间隙或接触。

帧和姿态语义可以通过转换而改变
URDF 关节原点和链接框架定义了树。 SDFormat 支持更丰富的姿态关系和帧语义。转换可能会引入规范连杆(canonical link)、嵌套模型帧或看起来与源不同的解析姿态。
在两种表示中都变换已知的点和轴。检查传感器光学帧、基础帧、工具帧和关节零点。生成在预期位置的模型仍然可以旋转一个传感器或偏移其碰撞几何。
| 测试层 | 比较 | 常见的隐误 | 接受证据 |
|---|---|---|---|
| 结构 | 连杆图与关节图 | 固定关节被丢弃 | 名称与拓扑差异 |
| 框架 | 已知姿势与轴 | 逆姿态或解析姿态 | 变换验证点 |
| 物理 | 质量、惯性与碰撞 | 默认值或无效值 | 动态响应 |
| 传感器 | 速率、噪声、延迟和帧 | 插件默认设置 | 录制作品 |
| 世界 | 重力、摩擦力与位置 | 版本相关设置 | 情景回归 |
使用SDFormat世界来实现可复现的场景
世界应指定影响测试的环境因素:重力、地面、摩擦、光照、模型、初始姿态和物理配置。外部发射脚本可以增加变异性,但其参数和种子必须保留在情景记录中。
将可复用的机器人模型与世界特定位置分离。避免在机器人资产中嵌入一个仓库假设。版本模型和世界独立使用,并对兼容的组合进行回归测试。
验证传感器的行为,而不仅仅是存在
传感器元件可以定义类型、更新率、姿态、噪声以及渲染或物理参数。插件将模拟器数据与ROS连接起来。出现的主题证明的是连接性,而非采样时间、视场、噪声或帧是否与物理设备匹配。
将模拟输出与传感器合同进行比较。测量速率、时间戳、延迟、频率frame_id、距离限制和噪声分布。使用 SDFormat传感器规范 来获取声明版本。
将 Gazebo 扩展视为显式依赖关系
URDF 通常包含材料、摩擦、传感器和插件的凉亭扩展标签。当ROS工具消耗 URDF 且 Gazebo 需要额外数据时,它们非常实用。它们还将源码与特定的转换和模拟器行为耦合。
记录每个扩展,并测试其他 URDF 用户是否安全忽略。尽可能将仅模拟器的配置分组生成。升级后无声忽略的参数可以改变动态,而不会导致XML失效。
检查生成的SDFormat
当Gazebo生成URDF时,转换生成SDFormat表示。固定节点可根据规则减少或保留,扩展映射。生成的输出决定模拟器行为,而非源URDF节点。
使用 Gazebo URDF 生成文档 和转换检查工具来处理已部署版本。差异生成SDFormat是在升级和审查警告后生成的,而不是假设成功生成意味着完全保真。
保持一个语义源和生成目标
一个实用项目可以维护几何体、关节、传感器和标识符的规范参数,然后为其用户生成 URDF 和SDFormat目标。这减少了重复的手动值,同时允许格式特定的功能。
生成器成为可信工具链的一部分。针位版本、测试输出并禁止手工编辑生成文件。当某一格式无法表达某一特征时,应明确记录该偏差,而不是隐藏在未公开的补丁中。
进行结构、框架、物理和传感器回归分析
解析每个生成的模型,比较名称和拓扑结构,验证坐标变换,模拟已知的自由落体或摆锤行为,检查接触点并回放传感器测试。包含模型生成、控制器连接和简短任务场景。
金色截图对外观有用,但不足以应对。存储带有公差的数值基线,并调查每一个转换器警告。更改后的模拟器可能需要有物理依据的有意基线更新。
从委托证据中选择格式
当主要合同是ROS机器人结构且支持的扩展足够时,使用 URDF。当世界、嵌套模型、传感器和模拟器物理是主要时,使用原生SDFormat。许多系统通过受控生成使用这两者。
基于测试范围而非文件扩展名来确定接受度。
评估“URDF 与 SDFormat 在机器人模型与仿真中的比较”时,还应保存模型版本、机器人配置、标定文件、测试日期和全部试验记录。把成功、失败、恢复与人工介入放在同一份数据中,才能区分模型能力、系统接口和现场流程造成的差异。
成本评估除了设备与算力,还要记录数据采集、工程调试、安全措施、维护、停机和人员培训。只有把这些持续投入与单位成功任务的价值比较,才能判断方案是否适合扩大。
上线后仍要持续检查分布变化、传感器漂移、机械磨损和人工接管原因。监测结果应能触发降级、停止与重新验证流程,并为下一轮数据采集和模型更新留下可追溯记录。
- 列出所有消费者版本和支持的格式版本。
- 分别有视觉、碰撞和惯性证据。
- 每次转换后都会有探测帧。
- 用数值测试物理和传感器。
- 版本生成器和生成的伪影一起使用。
常见问题
项目必须只选择 URDF 还是只选择SDFormat?
不是。许多项目保留语义源,生成工具专用的 URDF 和SDFormat生成产物。
URDF能描述传感器吗?
专门针对模拟器的扩展可以添加传感器,但原生支持和可移植性取决于使用工具。
成功的 Gazebo 生成能证明转换是正确的吗?
不会。帧、惯性、碰撞、插件和传感器设置仍然可能出错或被忽略。
robot_state_publisher能直接读取SDFormat吗?
其正常合约为 URDF;为该消费者使用支持的转换或生成 URDF。
模型回归应该先测试什么?
先从链路和关节身份开始,然后是帧、惯性与碰撞行为、传感器以及完整场景。
机器人模型保真度边界
机器人模型是与工具链和测试目的相关的近似值。在使用模拟结果进行操作声明前,先验证生成的生成产物与物理测量结果。