本文档深入解析 Atom01 人形机器人 URDF 模型中的连杆层级拓扑与关节配置体系。模型以 base_link 为根节点,向外辐射出双腿(各 6 自由度)、躯干(1 自由度)与双臂(各 5 自由度)三条主运动链,总计 24 个连杆与 23 个旋转关节,构成一个高度对称且功能分化的树形运动学结构。理解连杆命名规则、父子层级与关节轴线布局,是后续进行运动学分析、仿真调优及控制算法开发的基础。
Sources: atom01.urdf
连杆命名规范与层级拓扑
Atom01 的连杆与关节遵循严格的语义化命名约定,格式为 {side}_{body_part}_{dof}_link 与 {side}_{body_part}_{dof}_joint。其中 side 取值为 left/right,body_part 标识身体部位(thigh、knee、ankle、arm、elbow、torso),dof 则表明该关节的运动自由度类型(yaw、roll、pitch)。这种命名方式使得从关节名称即可直接推断其在运动链中的几何位置与功能角色,极大降低了多自由度系统的心理认知负荷。
从拓扑结构看,URDF 采用经典的树形 kinematic chain 设计,base_link 作为唯一根节点,通过显式 <parent>–<child> 关系向下延伸。以下是模型的完整连杆层级示意图:
graph TD
A[base_link] --> B[left_thigh_yaw_link]
B --> C[left_thigh_roll_link]
C --> D[left_thigh_pitch_link]
D --> E[left_knee_link]
E --> F[left_ankle_pitch_link]
F --> G[left_ankle_roll_link]
A --> H[right_thigh_yaw_link]
H --> I[right_thigh_roll_link]
I --> J[right_thigh_pitch_link]
J --> K[right_knee_link]
K --> L[right_ankle_pitch_link]
L --> M[right_ankle_roll_link]
A --> N[torso_link]
N --> O[left_arm_pitch_link]
O --> P[left_arm_roll_link]
P --> Q[left_arm_yaw_link]
Q --> R[left_elbow_pitch_link]
R --> S[left_elbow_yaw_link]
N --> T[right_arm_pitch_link]
T --> U[right_arm_roll_link]
U --> V[right_arm_yaw_link]
V --> W[right_elbow_pitch_link]
W --> X[right_elbow_yaw_link]
在此树形结构中,不存在任何闭环约束,所有运动链均为开链,这意味着正运动学可通过简单的逐连杆坐标变换递推求解。每一条从根到叶的路径代表一个独立的运动学支链,其中左腿与右腿、左臂与右臂分别构成镜像对称的双边结构,而躯干则作为连接上下肢的中央枢纽。
Sources: atom01.urdf
下肢运动链:双腿六自由度架构
每条下肢由 6 个连杆和 6 个旋转关节串联而成,从髋关节到踝关节形成一条完整的六自由度开链。髋关节部分采用了独特的倾斜正交轴设计:偏航关节(thigh_yaw)的旋转轴为 (-0.5, 0, -0.86603),翻滚关节(thigh_roll)的旋转轴为 (0.86603, 0, -0.5),两者位于 XZ 平面内且互相正交(点积为零)。偏航轴从竖直方向向后倾斜约 30°,翻滚轴则近似水平但也带有 30° 的倾角,这种非共轴设计能够在步行周期中提供更自然的腿部外摆运动学特性,同时避免了传统正交三轴髋关节在某些姿态下的奇异构型耦合。
大腿俯仰(thigh_pitch)、膝盖(knee)与脚踝俯仰(ankle_pitch)三个关节的旋转轴均严格对齐 Y 轴 (0, 1, 0),构成下肢的矢状面运动主平面;脚踝翻滚(ankle_roll)则绕 X 轴 (1, 0, 0) 旋转,负责冠状面的足部姿态调整。值得关注的是,左右腿的髋关节偏航与翻滚极限范围呈镜像对称:左腿偏航范围为 [-1, 0.2] 弧度、翻滚为 [-0.2, 1] 弧度,而右腿则恰好互换为偏航 [-0.2, 1]、翻滚 [-1, 0.2],这种非对称限位精确反映了人体左右下肢在关节活动度上的生理差异。
Sources: atom01.urdf, atom01.urdf, atom01.urdf, atom01.urdf, atom01.urdf, atom01.urdf
下肢关节参数总览
| 关节名称 | 父连杆 | 子连杆 | 旋转轴 | 下限 (rad) | 上限 (rad) | 力矩上限 (Nm) | 速度上限 (rad/s) |
|---|---|---|---|---|---|---|---|
| left_thigh_yaw_joint | base_link | left_thigh_yaw_link | (-0.5, 0, -0.86603) | -1.00 | 0.20 | 120 | 25.0 |
| left_thigh_roll_joint | left_thigh_yaw_link | left_thigh_roll_link | (0.86603, 0, -0.5) | -0.20 | 1.00 | 120 | 25.0 |
| left_thigh_pitch_joint | left_thigh_roll_link | left_thigh_pitch_link | (0, 1, 0) | -1.57 | 1.57 | 120 | 25.0 |
| left_knee_joint | left_thigh_pitch_link | left_knee_link | (0, 1, 0) | -0.20 | 2.50 | 120 | 25.0 |
| left_ankle_pitch_joint | left_knee_link | left_ankle_pitch_link | (0, 1, 0) | -0.60 | 0.60 | 27 | 8.0 |
| left_ankle_roll_joint | left_ankle_pitch_link | left_ankle_roll_link | (1, 0, 0) | -0.50 | 0.50 | 27 | 8.0 |
| right_thigh_yaw_joint | base_link | right_thigh_yaw_link | (-0.5, 0, -0.86603) | -0.20 | 1.00 | 120 | 25.0 |
| right_thigh_roll_joint | right_thigh_yaw_link | right_thigh_roll_link | (0.86603, 0, -0.5) | -1.00 | 0.20 | 120 | 25.0 |
| right_thigh_pitch_joint | right_thigh_roll_link | right_thigh_pitch_link | (0, 1, 0) | -1.57 | 1.57 | 120 | 25.0 |
| right_knee_joint | right_thigh_pitch_link | right_knee_link | (0, 1, 0) | -0.20 | 2.50 | 120 | 25.0 |
| right_ankle_pitch_joint | right_knee_link | right_ankle_pitch_link | (0, 1, 0) | -0.60 | 0.60 | 27 | 8.0 |
| right_ankle_roll_joint | right_ankle_pitch_link | right_ankle_roll_link | (1, 0, 0) | -0.50 | 0.50 | 27 | 8.0 |
Sources: atom01.urdf
躯干连接与腰部关节
躯干连杆 torso_link 直接挂载于 base_link 之上,通过单一的 torso_joint 实现绕 Z 轴 (0, 0, 1) 的旋转,即腰部偏航运动。该关节的极限范围设定为 [-3.14, 3.14] 弧度,几乎覆盖了完整的圆周运动,表明模型将腰部设计为一个连续旋转的自由度,用于补偿步行过程中上身与下肢之间的方位角偏差。躯干关节的力矩与速度上限分别为 120 Nm 和 25 rad/s,与大腿主要关节处于同一功率等级,反映出躯干在全身动量传递中的核心作用。在 MJCF 模型中,该关节被归类为 waist_joint_param,与腿部、臂部关节的动力学默认参数区分开来。
Sources: atom01.urdf, atom01.xml
上肢运动链:双臂五自由度架构
每条手臂由 5 个连杆和 5 个旋转关节构成,形成从肩部到腕部的五自由度串联链。肩关节采用俯仰–翻滚–偏航(pitch-roll-yaw)的三轴布局:肩俯仰绕 Y 轴、肩翻滚绕 X 轴、肩偏航绕负 Z 轴 (0, 0, -1);肘部则继续延伸为俯仰–偏航(pitch-yaw)两轴结构,肘俯仰绕 Y 轴、肘偏航绕 X 轴。值得注意的是,肩偏航采用负 Z 轴方向,这使得左右臂在相同控制输入下能够产生对称的内收/外展运动,符合人类上肢的运动直觉。
与下肢类似,左右臂的翻滚关节同样呈现镜像限位:左臂翻滚范围为 [-0.25, 3.14],右臂则为 [-3.14, 0.25]。肩俯仰关节在两侧均支持大幅度后摆(-3.14 rad 接近完全后向折叠),但前向仅限制在 1.57 rad(约 90°),这种非对称设计防止了手臂与躯干在正面方向发生几何干涉。
Sources: atom01.urdf, atom01.urdf, atom01.urdf, atom01.urdf, atom01.urdf
上肢关节参数总览
| 关节名称 | 父连杆 | 子连杆 | 旋转轴 | 下限 (rad) | 上限 (rad) | 力矩上限 (Nm) | 速度上限 (rad/s) |
|---|---|---|---|---|---|---|---|
| left_arm_pitch_joint | torso_link | left_arm_pitch_link | (0, 1, 0) | -3.14 | 1.57 | 27 | 8.0 |
| left_arm_roll_joint | left_arm_pitch_link | left_arm_roll_link | (1, 0, 0) | -0.25 | 3.14 | 27 | 8.0 |
| left_arm_yaw_joint | left_arm_roll_link | left_arm_yaw_link | (0, 0, -1) | -1.57 | 1.57 | 27 | 8.0 |
| left_elbow_pitch_joint | left_arm_yaw_link | left_elbow_pitch_link | (0, 1, 0) | -0.60 | 1.57 | 27 | 8.0 |
| left_elbow_yaw_joint | left_elbow_pitch_link | left_elbow_yaw_link | (1, 0, 0) | -1.57 | 1.57 | 27 | 8.0 |
| right_arm_pitch_joint | torso_link | right_arm_pitch_link | (0, 1, 0) | -3.14 | 1.57 | 27 | 8.0 |
| right_arm_roll_joint | right_arm_pitch_link | right_arm_roll_link | (1, 0, 0) | -3.14 | 0.25 | 27 | 8.0 |
| right_arm_yaw_joint | right_arm_roll_link | right_arm_yaw_link | (0, 0, -1) | -1.57 | 1.57 | 27 | 8.0 |
| right_elbow_pitch_joint | right_arm_yaw_link | right_elbow_pitch_link | (0, 1, 0) | -0.60 | 1.57 | 27 | 8.0 |
| right_elbow_yaw_joint | right_elbow_pitch_link | right_elbow_yaw_link | (1, 0, 0) | -1.57 | 1.57 | 27 | 8.0 |
Sources: atom01.urdf
关节参数分类体系
从驱动力矩与速度极限来看,模型中的 23 个旋转关节可清晰地划分为两个功率等级。高功率等级( effort = 120 Nm,velocity = 25 rad/s )主要分配给支撑全身重量并产生主要推进力的大扭矩关节,包括大腿三自由度关节、膝关节以及躯干关节。低功率等级( effort = 27 Nm,velocity = 8 rad/s )则用于末端姿态微调与小范围运动,涵盖踝关节与全部臂关节。这种分级策略不仅与实际硬件的电机选型相匹配,也在控制层面为不同关节提供了差异化的带宽预期——高功率关节负责粗大的位置/力控制,低功率关节则更适合精细的姿态伺服。
| 关节类别 | 包含关节 | 力矩上限 | 速度上限 | 功能定位 |
|---|---|---|---|---|
| 腿部主关节 | thigh_yaw, thigh_roll, thigh_pitch, knee | 120 Nm | 25 rad/s | 承重与步态推进 |
| 踝部关节 | ankle_pitch, ankle_roll | 27 Nm | 8 rad/s | 足部姿态平衡 |
| 躯干关节 | torso_joint | 120 Nm | 25 rad/s | 上身方位调节 |
| 臂部关节 | arm_pitch, arm_roll, arm_yaw, elbow_pitch, elbow_yaw | 27 Nm | 8 rad/s | 上肢运动与姿态 |
Sources: atom01.urdf
连杆碰撞几何的简化策略
在 URDF 中,大部分连杆的视觉几何(<visual>)均直接使用原始三角网格(STL 文件)以保证外观精度,但碰撞几何(<collision>)的配置则呈现出明显的简化倾向。具体而言,left_thigh_yaw_link、left_thigh_roll_link、left_knee_link 等多个连杆的原生网格碰撞被注释掉,转而采用盒体(box)或圆柱体(cylinder)等凸包 primitive 替代。例如,left_thigh_pitch_link 的碰撞体被简化为尺寸 0.08 × 0.1 × 0.22 的盒体,而臂部连杆则普遍采用半径 0.03 m 的圆柱体进行包络。这种“精细视觉 + 简化碰撞”的双轨策略在保持仿真视觉真实感的同时,显著降低了接触检测的计算复杂度,并有效避免了非凸网格在物理引擎中可能引发的穿透与抖动问题。关于碰撞几何的完整配置策略与选型依据,请参阅 碰撞几何配置策略。
Sources: atom01.urdf, atom01.urdf, atom01.urdf
与 MJCF 模型的结构对应
虽然本文档聚焦于 URDF 的连杆与关节体系,但值得注意的是,MJCF 模型在 worldbody 中完全复现了上述树形层级结构,每个 <body> 的名称与 URDF 的 <link> 名称一一对应。唯一的结构性差异在于,MJCF 为 base_link 显式添加了 floating_base_joint(自由六自由度关节),使机器人能够在仿真世界中悬浮并受重力下落,而 URDF 中的 base_link 本身不包含与世界坐标系的显式连接,其根部固定/浮动关系通常由外部加载器(如 ROS 的 robot_state_publisher 或 Gazebo 的 spawn 逻辑)决定。MJCF 中还通过 class 机制(leg_joint_param、waist_joint_param、arm_joint_param)为不同部位关节批量配置了阻尼、摩擦损耗与电枢参数,这些动力学细节在 URDF 中并未直接体现。URDF 与 MJCF 之间的完整映射关系与差异分析,请参阅 URDF 到 MJCF 的映射与差异。
Sources: atom01.xml, atom01.xml
延伸阅读建议
在掌握连杆与关节的体系架构后,建议按以下顺序继续深入:
- 如需分析各运动链的正逆运动学与整体自由度配置,请参阅 运动学链路与自由度分析。
- 如需了解每个连杆的质量、质心位置与惯性张量参数,请参阅 惯性参数与质量分布。
- 如需深入碰撞体的 primitive 选型逻辑与接触属性,请参阅 碰撞几何配置策略。
- 如需对比 URDF 与 MuJoCo 模型在关节动力学参数上的差异,请参阅 URDF 到 MJCF 的映射与差异。