URDF

Unified Robot Description Format 统一机器人描述格式

基于 XML 的机器人结构描述语言: 有向无环刚体树(Rigid Body Tree) 一个 link 只能有一个 parent joint,描述了:

1. 基本组成

声明信息+两种关键组件

1.1 声明信息

第一部分是xml的声明信息
第二部分是机器人的声明,通过robot标签就可以声明一个机器人模型

unknown
robot
 ├── link (节点)
 └── joint (边)

xml
<?xml version="1.0"?>
<robot name="robot_name">
	<link></link>
	<joint></joint>
</robot>

1.2 两种关键组件

Link:机器人的各个部件
Joint:机器人关节, Link 和 Link 之间的连接部分,用于连接两个机器人部件

一个完整的 <link> 通常包含:

xml
<link name="link1">
  <visual>	</visual>     <!-- 可视模型 -->
  <collision>	</collision> <!-- 碰撞模型 -->
  <inertial>	</inertial>  <!-- 惯性参数 -->
</link>

2.1 visual 外观模型

<visual> 用于定义连杆的可视化属性,即连杆在仿真环境或可视化界面中呈现的外观。

2.2 collision 碰撞模型

<collision> 用于定义连杆的碰撞属性,在仿真中用于碰撞检测,确保机器人在运动过程中不会与其他物体或自身发生不合理的穿透。

XML
<collision>
  <geometry>
    <box size="0.48 0.18 0.08"/>
  </geometry>
</collision>

2.3 inertial 动力学核心

<inertial> 用于定义连杆的惯性属性,这些属性对于机器人动力学仿真和控制算法的准确性非常重要,它决定了连杆在受到力和力矩作用时的运动响应。

XML
<inertial>
  <origin xyz="0 0 0" rpy="0 0 0"/>
  <mass value="2.5"/>
  <inertia
    ixx="0.01" ixy="0" ixz="0"
    iyy="0.02" iyz="0"
    izz="0.03"/>
</inertial>

3. Joint

定义:child link 坐标系相对于 parent link 坐标系的变换与运动约束

XML
<joint name="joint1" type="revolute">

  <parent link="base_link"/>
  <child link="link1"/>

  <origin xyz="0 0 0.1" rpy="0 0 0"/>
  <axis xyz="0 0 1"/>

</joint>

用于连接两个机器人部件,

type 关节类型

类型 含义
fixed 固定 不允许运动的特殊关节
revolute 有限角度旋转 旋转关节,绕单轴旋转, 角度有上下限, 比如舵机 0-180
continuous 无限旋转 旋转关节,可以绕单轴无限旋转, 比如自行车的前后轮
prismatic 直线移动 ,沿某一轴线移动的关节,有位置极限
planar 平面内运动 平面关节
floating 6 DOF 浮动关节,允许进行、平移、旋转

origin 零位时的刚体变换
axis 自由度方向定义
limit 可达空间与物理约束

txt
x:前
y:左
z:上
r = roll  (滚转)
p = pitch (俯仰)
y = yaw   (偏航)

4. 可视化相关文件

URDF(Unified Robot Description Format)是 ROS 生态中用于描述机器人运动学与结构拓扑的模型描述文件格式,本质是 XML。

URDF 用来描述机器人“是什么样的、怎么连起来、怎么动”,而不是“长得多精细”。

.STL

STL(Stereolithography)是三角网格几何模型格式,与机器人无关,是通用的 3D 模型格式。

主要特征

.DAE

DAE(COLLADA)是一种富几何 + 语义的 3D 模型交换格式
DAE 用来描述“外形 + 材质 + 层级关系”。

主要特征

在 URDF 中的角色

.Xacro

Xacro(XML Macros)不是模型格式,而是URDF 的“元语言 / 预处理器”

解决 URDF 的三大痛点:

主要能力

可视化网站

https://unlinearity.github.io/URDF-Visualizer/

https://gkjohnson.github.io/urdf-loaders/javascript/example/bundle/
https://xinlang2019.github.io/urdf_visualizer/
https://viewer.robotsfan.com/