什么是URDF格式

AI解读 5小时前 硕雀
6 0

URDFUnified Robot Description Format统一机器人描述格式)概述

URDF 是一种基于 XML文件格式,专门用于在 ROS机器人操作系统)生态中描述机器人的几何结构、运动学、动力学以及视觉/碰撞属性。它把机器人抽象为链接(link)‍和关节(joint)‍的树状层级,配合惯性、材质、传感器等信息,为仿真、可视化和控制提供统一的数据来源。


1. 主要组成元素

元素 作用 常见子标签
<robot> 文件根节点,定义机器人名称 -
<link> 描述刚体部件(单个连杆) <visual>(外观)、<collision>(碰撞体)、<inertial>(质量、惯性)
<joint> 描述两个 link 之间的运动约束 <parent><child><origin><axis><limit><dynamics>
<visual> 机器人在 RViz 等可视化工具中的外观 <geometry>(box、cylinder、mesh 等)、<material>
<collision> 碰撞检测使用的简化几何体 同 <visual> 的 <geometry>
<inertial> 质量、质心、惯性张量 <mass><origin><inertia>
<transmission>(可选) 关联关节与驱动器(motor) <type><actuator><joint>
<sensor>(可选) 描述附加的传感器信息 <camera><laser> 等

单位约定:长度使用米(m),角度使用弧度(rad),质量使用千克(kg)。


2. 文件结构示例(简化)

<robot name="tiny_robot">
  <!-- 链接 1 -->
  <link name="base_link">
    <visual>
      <geometry>
        <box size="0.5 0.5 0.1"/>
      </geometry>
      <material name="gray"/>
    </visual>
    <collision>
      <geometry>
        <box size="0.5 0.5 0.1"/>
      </geometry>
    </collision>
    <inertial>
      <mass value="5.0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.1" ixy="0" ixz="0"
               iyy="0.1" iyz="0" izz="0.1"/>
    </inertial>
  </link>

  <!-- 关节 1:base_link 与 arm_link 之间的旋转关节 -->
  <joint name="shoulder_joint" type="revolute">
    <parent link="base_link"/>
    <child link="arm_link"/>
    <origin xyz="0 0 0.05" rpy="0 0 0"/>
    <axis xyz="0 0 1"/>
    <limit effort="10" velocity="1.0"
           lower="-1.57" upper="1.57"/>
  </joint>

  <!-- 链接 2 -->
  <link name="arm_link">
    <visual>
      <geometry>
        <cylinder radius="0.05" length="0.4"/>
      </geometry>
      <material name="blue"/>
    </visual>
    <!-- 省略 collision、inertial -->
  </link>
</robot>

该示例展示了 机器人根节点 → 两个 link → 一个 revolute 关节 的基本结构,涵盖了视觉、碰撞和惯性信息。


3. 常用配套工具

工具 功能 说明
Xacro XML 宏预处理器,简化重复代码 通过变量、宏生成可复用的 URDF,提升可维护性
robot_state_publisher 根据 URDF 自动发布 TF 变换 让 ROS 中的其他节点能够获取每个 link 的位姿
rviz / Gazebo 可视化与仿真 读取 URDF 渲染机器人模型,或在 Gazebo 中进行物理仿真
urdf_parser_py Python 解析库 便于在脚本中读取、修改 URDF 内容

4. URDF 的优势与局限

优势

  • 统一标准:在 ROS 生态内被广泛接受,几乎所有工具链(RViz、MoveIt、Gazebo)均直接支持。
  • 可读性强:基于 XML,结构清晰,易于手工编辑和版本管理。
  • 模块化:通过 <link><joint> 的层次化组织,可灵活描述从单臂到全身机器人的各种结构。

局限

  • 仅支持树形结构:不支持闭环(闭链)机器人,需要额外的 SRDF 或 URDF with fixed joints 进行补偿。
  • 几何表达有限:复杂曲面只能通过外部 mesh(STL/DAE)文件引用,内部不提供高级 CAD 功能。
  • 缺少动力学细节:如弹簧、阻尼等高级动力学参数只能在 transmission 或自定义插件中实现。

5. 应用场景

  1. 机器人建模:在研发阶段快速搭建模型,供仿真和可视化使用。
  2. 运动规划:MoveIt! 读取 URDF 生成运动学链,计算逆运动学、路径规划。
  3. 真实机器人部署:通过 robot_state_publisher 将 URDF 中的结构映射到实际硬件的 TF 树,实现感知与控制的统一坐标系。
  4. 跨平台共享:研究团队可通过 URDF 文件共享机器人结构,降低重复建模成本。

6. 参考资源

  • 官方 ROS Wiki(URDF XML 规范)
  • 阿里云技术文章对 URDF 结构的系统阐述
  • CSDN 最新教程对 URDF 各标签的详细解释
  • Delft University 公开课 PPT(结构化概览)
  • ROS2 官方文档对 URDF 与 Xacro 的结合使用

总结:URDF 是 ROS 生态中描述机器人形态与运动学的核心 XML 格式。它通过层次化的 <link> 与 <joint> 定义机器人结构,并配合视觉、碰撞、惯性等子标签提供完整的仿真与控制信息。配合 Xacro、robot_state_publisher 等工具,URDF 能实现从概念模型到真实机器人系统的无缝衔接。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!