🤖 roboto_origin_03 Wiki
首页 / 硬件 / 连杆惯性参数与质量属性

本文档深入解析 Atom01(V1.0)与 Roboto Origin(V2.0)人形机器人 URDF 模型中各连杆的质量、质心(COM)与惯性张量(Inertia Tensor)数据,揭示两版模型在动力学属性上的关键差异,并指出 V1.0 惯性数据中存在的一个对仿真精度有显著影响的参考系偏差问题。阅读本文前,建议先熟悉 URDF 模型的拓扑结构与关节配置,以便理解惯性参数在运动链中的传递关系。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.csv

数据生成方法与坐标系约定

两版 URDF 的惯性参数均源自 SolidWorks 的 "SolidWorks to URDF Exporter" 插件导出流程。在 SolidWorks 装配体中,通过为每个零件或子装配体指定材料密度(PLA/碳纤维/铝合金等),软件自动计算质量、质心位置与关于质心的惯性张量。导出后的 URDF 中,每个连杆的 <inertial> 块包含三个核心要素:<origin> 定义了以连杆本体坐标系为参考的质心位姿(仅含平移,无旋转,即 rpy="0 0 0"),<mass> 给出连杆总质量(单位 kg),<inertia> 则以 3×3 对称矩阵的独立分量(ixx, ixy, ixz, iyy, iyz, izz,单位 kg·m²)描述质心处的转动惯量。V1.0 额外提供了一个 CSV 表格文件,记录了与 URDF 同名连杆的原始导出数据,但需注意该 CSV 中的质量与惯量数值显著低于同版本 URDF,推测其仅涵盖纯机械结构(不含电机、轴承与紧固件),而 URDF XML 经过后续整合,包含了完整装配体的质量属性。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.csv

核心发现:V1.0 惯性张量的参考系偏差

通过对 V1.0 与 V2.0 对应连杆的惯性参数进行逐层比对,可以发现一个对动力学仿真至关重要的系统性差异:V1.0 URDF 中大量连杆的惯性张量并非关于质心(COM)计算,而是关于连杆本体原点(Link Origin)计算的。这导致其 <inertia> 数值被人为放大,其增量恰好符合平行轴定理(Parallel Axis Theorem)的预测。以 torso_link 为例,V2.0 的 ixx 为 0.0690 kg·m²,而 V1.0 为 0.1415 kg·m²;两者之差约 0.0725,恰好等于 V1.0 质量 7.656 kg 乘以质心 Z 向偏移 0.096 m 的平方(7.656 × 0.096² ≈ 0.0706)。同样的规律在 left_thigh_pitch_link(V1.0 Ixx 0.1120 vs V2.0 0.0202,差值 ≈ 2.347 × 0.198² ≈ 0.0921)、left_knee_linkleft_arm_yaw_link 等连杆上均得到验证。这意味着若直接将 V1.0 URDF 导入 Pinocchio、RBDL 或 MuJoCo 等动力学引擎,连杆的等效转动惯量会被显著高估,进而导致接触力、关节力矩与角加速度的仿真结果出现系统性偏差。V2.0 已修正此问题,其惯性张量严格遵循 URDF 规范——定义在由 <origin> 指定的质心坐标系中。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

以下 Mermaid 图示阐明了 URDF 中三个关键坐标系的关系,以及 V1.0 与 V2.0 在惯性张量参考系选择上的本质区别。

graph LR
    subgraph 连杆本体帧 Link Frame
        O[Link Origin<br/>本体原点]
    end
    subgraph 惯性帧 Inertial Frame
        C[COM<br/>质心]
    end
    subgraph 惯性张量定义
        V2[I_about_COM<br/>V2.0 正确]
        V1[I_about_Origin<br/>V1.0 偏差]
    end
    O -- origin xyz --> C
    C -- 正确做法 --> V2
    O -- 错误做法 --> V1
    style V1 fill:#faa,stroke:#f66
    style V2 fill:#afa,stroke:#6f6

关键连杆参数对比

以下表格按身体部位汇总了 V1.0 与 V2.0 中代表性连杆的质量、质心位置与主惯性矩。为控制篇幅,对角惯量 ixx/iyy/izz 保留六位有效数字,交叉项因数值极小且对整体动力学影响有限而省略展示。

基座与躯干

连杆 版本 质量 (kg) 质心 X (m) 质心 Y (m) 质心 Z (m) ixx (kg·m²) iyy (kg·m²) izz (kg·m²)
base_link V1.0 5.380 -0.048747 -0.000095 -0.011341 0.028035 0.026061 0.037746
base_link V2.0 5.513 -0.047008 -0.000002 -0.008628 0.030526 0.015362 0.030062
torso_link V1.0 7.656 -0.002312 -0.000092 0.096196 0.141497 0.128902 0.039837
torso_link V2.0 7.582 -0.002348 -0.000005 0.098445 0.069041 0.056795 0.038886

基座质量在两版之间几乎持平(约 5.5 kg),但 V2.0 的 iyy 显著降低,表明其腰部结构在前后方向的质量分布更贴近质心。躯干的 ixxiyy 差异最为刺眼:V1.0 的数值约为 V2.0 的两倍有余,这正是平行轴定理偏差的直接体现。若将 V2.0 的躯干惯量通过平行轴定理平移至本体原点,可得到约 0.139 kg·m²,与 V1.0 的 0.141 kg·m² 高度吻合。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

下肢关键连杆(左腿)

连杆 版本 质量 (kg) 质心 Z (m) ixx (kg·m²) iyy (kg·m²) izz (kg·m²)
left_thigh_yaw_link V1.0 1.702 -0.057289 0.007321 0.009036 0.003309
left_thigh_yaw_link V2.0 1.718 -0.056123 0.003198 0.002441 0.002517
left_thigh_pitch_link V1.0 2.347 -0.198455 0.111978 0.112313 0.002432
left_thigh_pitch_link V2.0 2.346 -0.198581 0.020190 0.021588 0.003029
left_knee_link V1.0 1.790 -0.145540 0.050390 0.049871 0.001463
left_knee_link V2.0 1.702 -0.152083 0.010135 0.009820 0.001101
left_ankle_roll_link V1.0 0.320 -0.029605 0.000402 0.000892 0.000655
left_ankle_roll_link V2.0 0.335 -0.029086 0.000134 0.000543 0.000589

下肢是偏差最集中的区域。大腿俯仰连杆(thigh_pitch_link)与膝关节连杆(knee_link)的 ixx/iyy 在 V1.0 中达到了 V2.0 的 5 倍以上,而 ankle 连杆因质心接近本体原点,平行轴效应较弱,偏差相对较小。值得注意的是,left_ankle_pitch_link 在两版中采用了完全一致的简化参数(质量 0.084 kg,对角惯量 8.63×10⁻⁶ kg·m²),说明该连杆为几何占位符,其惯性由设计者手工设定而非 SolidWorks 导出。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

上肢关键连杆(左臂)

连杆 版本 质量 (kg) 质心 Z (m) ixx (kg·m²) iyy (kg·m²) izz (kg·m²)
left_arm_pitch_link V1.0 0.481 0.000138 0.001385 0.000124 0.001420
left_arm_pitch_link V2.0 0.473 0.000000 0.000156 0.000082 0.000189
left_arm_yaw_link V1.0 1.150 -0.105785 0.019242 0.019207 0.000403
left_arm_yaw_link V2.0 1.153 -0.106159 0.006196 0.006158 0.000331
left_elbow_yaw_link V1.0 0.680 0.000032 0.000281 0.003260 0.003262
left_elbow_yaw_link V2.0 0.681 -0.000020 0.000245 0.001326 0.001326

上肢的轻量化改进在 V2.0 中体现得尤为明显。left_arm_pitch_linkixx 从 0.001385 骤降至 0.000156(降幅约 89%),说明 V2.0 对手臂根部结构进行了大幅减重与质量集中化设计。left_elbow_yaw_linkiyyizz 也缩减至 V1.0 的 40% 左右,这意味着末端执行器在偏航方向的等效转动惯量显著降低,有利于提升手臂响应速度与降低肘关节电机的负载。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

质量分布与对称性分析

将全机 24 个连杆的质量按身体区域聚合,可得两版模型的总质量与分布特征。单腿(6 连杆)在 V1.0 中约为 7.95 kg,V2.0 约为 7.85 kg;单臂(5 连杆)在 V1.0 约为 2.52 kg,V2.0 约为 2.48 kg。全机总质量两版基本持平,均约为 33.7–34.0 kg。这意味着 V2.0 的机械优化并非单纯追求减重,而是通过重新分配材料、引入镂空结构与优化电机支架布局,将质量向关节驱动轴线集中,从而降低了等效转动惯量。

身体区域 V1.0 质量 (kg) V2.0 质量 (kg) 变化趋势
基座 (base_link) 5.38 5.51 基本持平
躯干 (torso_link) 7.66 7.58 基本持平
单腿 (6 连杆) ~7.95 ~7.85 略降
单臂 (5 连杆) ~2.52 ~2.48 略降
整机合计 ~34.0 ~33.7 基本持平

对称性方面,V2.0 展现出严格的左右镜像一致性:左腿与右腿、左臂与右臂的同名连杆在质量与质心坐标上完全对称(Y 坐标取反),交叉惯量项 ixy/iyz 也呈精确的符号镜像。V1.0 则存在轻微的不对称,例如 left_thigh_yaw_link 质量为 1.702 kg,而 right_thigh_yaw_link 为 1.686 kg;左臂与右臂的 arm_roll_linkelbow_pitch_link 质量也存在约 2% 的差异。这种不对称源于 V1.0 的 SolidWorks 装配体中左右件可能使用了略微不同的简化模型或材料赋值,而 V2.0 通过标准化的参数化建模消除了此类不一致。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

对仿真与控制的动力学影响

惯性参数的偏差与优化对后续算法开发有多方面的实际影响。首先,基于 V1.0 URDF 的动力学仿真会系统性地高估关节所需力矩。以单腿摆动相为例,大腿俯仰连杆的等效转动惯量若被高估 5 倍,根据 τ = Iα,在相同角加速度指令下,仿真输出的关节力矩需求将远超实际电机能力(80 N·m),导致控制器在实机部署时出现力矩饱和与跟踪误差。其次,V2.0 中手臂惯量的显著降低直接改善了上肢的敏捷性,对于需要快速摆臂维持平衡的双足行走控制(Angular Momentum Regulation)而言,更低的臂部惯量意味着更小的 torso 反作用力矩,从而降低了腰部电机的补偿负担。

此外,V2.0 基座 base_linkiyy 从 0.0261 降至 0.0154(降幅 41%),表明骨盆结构在俯仰方向的集中质量更少。这一变化对线性倒立摆(LIPM)模型的质心高度估计与角动量计算具有直接影响:在推导全身动力学模型时,建议以 V2.0 参数为基准重新标定质心轨迹规划中的惯性耦合项。

Sources: roboto_origin.urdf, Atom01_urdf.urdf, roboto_origin.urdf

读取与使用建议

对于计划在 PyBullet、MuJoCo、Drake 或 ROS2/Gazebo 中加载本 URDF 的高级开发者,建议遵循以下原则以充分利用惯性数据并规避潜在陷阱。

第一,优先使用 V2.0 URDF 进行任何新的动力学仿真或控制算法开发。V2.0 不仅修正了 V1.0 的参考系偏差,还在碰撞体简化(大腿与小腿的包围盒、手臂的圆柱体近似)上提供了更合理的几何代理,可直接用于接触动力学仿真。第二,若因历史原因必须基于 V1.0 开展工作,应对存在大质心偏移的连杆(如 thigh_pitch_linkknee_linkarm_yaw_linktorso_link)手动修正惯性张量:利用平行轴定理,将 V1.0 的惯性值减去 m·d²(其中 d 为质心到本体原点的欧氏距离),得到关于质心的真实惯量后再填入 URDF。第三,在读取 URDF 时,务必确认所使用的解析器(如 urdfdomyourdfpypinocchio::urdf)对 <inertial> 块的语义实现符合 ROS/URDF 官方规范,即 <origin> 描述的是惯性坐标系(质心坐标系)相对于连杆本体的位姿,而 <inertia> 必须定义在该惯性坐标系中。

Sources: Atom01_urdf.urdf, roboto_origin.urdf, roboto_origin.urdf

后续阅读建议

掌握连杆的惯性参数与质量属性后,建议继续深入以下主题,以形成从几何模型到动力学控制的完整知识闭环: