3、动力学模型线性化:如何将动力学方程转化为关于惯性参数的线性回归形式,理解回归矩阵Y(q, qd, qdd)的构造

动力学参数辨识的核心思想,是将机器人动力学方程从“关于运动状态的函数”转化为“关于惯性参数的线性函数”。这一转化过程称为动力学模型线性化,其产物是回归矩阵 Y(q, qd, qdd) 与惯性参数向量 π 的乘积形式。之所以必须完成这一转化,是因为几乎所有实用的参数辨识算法——包括最小二乘法、加权最小二乘法、递推最小二乘法——都要求模型对未知参数呈线性关系。若动力学方程对参数非线性,则辨识问题将退化为非线性优化,不仅计算代价高,而且容易陷入局部极小值,难以保证收敛性与唯一性。因此,线性化是连接动力学理论与参数辨识实践的桥梁,也是整个辨识流程的第一步,其正确性直接决定后续所有辨识结果的可靠性。

动力学模型线性化与回归矩阵构造 标准动力学方程 M(q)q̈ + C(q,q̇)q̇ + G(q) = τ 含摩擦项:+ F_v q̇ + F_c sign(q̇) M, C, G 均为惯性参数的 非线性函数(含 sin/cos 耦合) 重组 线性化核心操作 ① 提取惯性参数(质量、质心、 惯量张量、摩擦系数) ② 将运动学项(q, q̇, q̈)与参数 分离,重组为矩阵-向量乘积 得到 线性回归形式 τ = Y(q, q̇, q̈) · π Y:回归矩阵(n×p) π:惯性参数向量(p×1) 仅与运动状态有关,与参数无关 回归矩阵 Y(q, q̇, q̈) 的维度与结构 Y(q, q̇, q̈) ∈ R^(n × p) n = 关节数(力矩方程数) p = 待辨识惯性参数个数 π ∈ R^(p × 1) [m, m·r_x, m·r_y, m·r_z, I_xx, I_xy, I_xz, I_yy, I_yz, I_zz, F_v, F_c] 关键性质 Y 仅由运动状态决定 π 为常数,不随时间变化 线性化实施流程 步骤1 写出完整动力学方程 步骤2 定义惯性参数向量π 步骤3 逐项提取Y矩阵元素 步骤4 合并同类项/消除冗余 验证 Y·π=τ

3.1 线性化的数学本质与物理含义

动力学模型线性化的数学本质,是将动力学方程中所有关于惯性参数的项重新组织为“运动学函数矩阵 × 参数向量”的形式。以单连杆为例,其动力学方程为:

τ = m·l²·q̈ + m·g·l·cos(q) + F_v·q̇ + F_c·sign(q̇)

其中 m 为连杆质量,l 为质心到关节轴的距离,F_v 为黏性摩擦系数,F_c 为库仑摩擦系数。观察该方程可以发现,虽然 τ 的表达式中包含 q、q̇、q̈ 的复杂函数,但所有惯性参数(m、m·l²、F_v、F_c)都是以一次幂形式出现的。因此可以定义参数向量 π = [m·l², m·g·l, F_v, F_c]ᵀ,则方程改写为:

τ = [q̈, cos(q), q̇, sign(q̇)] · π = Y(q, q̇, q̈) · π

这里的 Y 矩阵就是回归矩阵,其每一列对应一个惯性参数,每一行对应一个关节力矩方程。对于 n 自由度机器人,Y 的维度为 n×p,其中 p 为待辨识参数总数。物理上,Y 矩阵的每一列代表了“当某个惯性参数为单位值时,该参数对关节力矩的贡献模式”。例如,Y 的第一列 [q̈] 表示惯性力矩项,第二列 [cos(q)] 表示重力矩项,第三列 [q̇] 表示黏性摩擦力矩项,第四列 [sign(q̇)] 表示库仑摩擦力矩项。

核心要点:线性化的前提条件是动力学方程中所有惯性参数必须以“一次幂”形式出现。质量、质心位置、惯量张量元素、摩擦系数均满足此条件。若出现参数乘积(如 m·r²),则需将其整体视为一个独立参数,而非拆分为 m 和 r 分别辨识。

3.2 回归矩阵的构造方法与操作流程

对于多自由度机器人,回归矩阵的构造需要系统化的操作流程。以下以六自由度串联机器人为例,给出标准构造步骤:

  1. 建立完整动力学方程:使用牛顿-欧拉递推法或拉格朗日法,写出包含惯性力、科氏力/离心力、重力、摩擦力在内的完整动力学方程。建议使用符号计算工具(如 MATLAB Symbolic、SymPy)辅助推导,避免手算错误。
  2. 定义惯性参数向量:每个连杆 i 包含 10 个惯性参数:质量 m_i、一阶质量矩 m_i·r_ix、m_i·r_iy、m_i·r_iz、惯量张量元素 I_ixx、I_ixy、I_ixz、I_iyy、I_iyz、I_izz。加上每个关节的摩擦参数 F_vi、F_ci,六自由度机器人总参数数为 6×10 + 6×2 = 72 个。
  3. 逐项提取 Y 矩阵元素:将动力学方程中每一项,按照其依赖的惯性参数进行分类。例如,关节 i 的力矩方程中,所有包含 m_1 的项合并为 Y(i,1)·m_1,所有包含 I_2xx 的项合并为 Y(i,7)·I_2xx。实际操作中,可先对每个参数求偏导:Y(i,j) = ∂τ_i/∂π_j。
  4. 合并同类项与消除冗余:由于动力学方程中某些参数可能以固定组合出现(如 m_i·r_ix 与 I_iyz 可能出现在同一项中),需要检查 Y 矩阵的列是否线性相关。若存在线性相关列,则需合并参数,形成“最小惯性参数集”。
  5. 验证线性化正确性:随机选取多组运动状态 (q, q̇, q̈),分别计算原始动力学方程 τ_orig 和线性化形式 Y·π 的数值,对比两者是否一致。若存在偏差,则说明线性化过程中存在符号错误或遗漏项。
步骤 操作内容 输出 常见错误
1 建立完整动力学方程 τ = f(q, q̇, q̈, π) 遗漏科氏力项或重力项
2 定义参数向量 π ∈ R^(p×1) 参数顺序不一致
3 偏导法提取 Y 元素 Y(i,j) = ∂τ_i/∂π_j 偏导计算错误
4 合并冗余参数 最小参数集 π_min 未识别线性相关列
5 数值验证 max|Y·π - τ| < ε 验证数据选取不当

3.3 最小惯性参数集与回归矩阵的秩

在实际辨识中,并非所有 72 个惯性参数都能被独立辨识。由于动力学方程的结构特性,某些参数对关节力矩的贡献完全相同,无法通过外部激励区分。这些参数需要合并为组合参数,形成最小惯性参数集。最小参数集的维度 p_min 通常远小于原始参数维度,对于六自由度机器人,p_min 一般在 30~40 之间。

判断参数是否可辨识的数学工具是回归矩阵的秩。若 Y 矩阵的某一列可以表示为其他列的线性组合,则该列对应的参数不可辨识。具体操作中,可通过以下方法确定最小参数集:

  • 符号消元法:使用符号计算工具,对 Y 矩阵进行高斯消元,找出线性相关的列组合。
  • 数值秩检验:随机生成大量运动状态,构造堆叠的 Y 矩阵,计算其数值秩。若秩小于列数,则存在冗余参数。
  • 物理直觉判断:对于某些关节,若其运动范围受限或与其他关节存在耦合,部分参数可能无法激励。例如,关节 2 和关节 3 平行时,某些惯量参数可能合并。
风险提示:最小参数集的确定必须基于完整的动力学模型。若在辨识过程中遗漏了某个参数合并关系,会导致 Y 矩阵病态,最小二乘解不唯一,辨识结果出现巨大方差。建议在辨识前使用条件数 κ(Y) 评估矩阵健康度,κ 值超过 10⁶ 时需重新检查参数集。

3.4 案例拆解:二连杆平面机器人的线性化全流程

为完整展示线性化过程,以二连杆平面机器人(仅考虑平面运动)为例进行逐步推导。该机器人有两个旋转关节,连杆 1 和连杆 2 的质量分别为 m₁、m₂,质心位置分别为 (r₁, 0) 和 (r₂, 0)(假设质心在连杆中心线上),惯量张量简化为 I₁、I₂(绕关节轴的转动惯量)。

步骤 1:写出动力学方程(使用拉格朗日法):

τ₁ = (m₁·r₁² + m₂·l₁² + m₂·r₂² + 2·m₂·l₁·r₂·cos(q₂) + I₁ + I₂)·q̈₁
     + (m₂·r₂² + m₂·l₁·r₂·cos(q₂) + I₂)·q̈₂
     - 2·m₂·l₁·r₂·sin(q₂)·q̇₁·q̇₂
     - m₂·l₁·r₂·sin(q₂)·q̇₂²
     + (m₁·g·r₁ + m₂·g·l₁)·cos(q₁) + m₂·g·r₂·cos(q₁+q₂)
     + F_v1·q̇₁ + F_c1·sign(q̇₁)

τ₂ = (m₂·r₂² + m₂·l₁·r₂·cos(q₂) + I₂)·q̈₁ + (m₂·r₂² + I₂)·q̈₂
     + m₂·l₁·r₂·sin(q₂)·q̇₁²
     + m₂·g·r₂·cos(q₁+q₂)
     + F_v2·q̇₂ + F_c2·sign(q̇₂)

步骤 2:定义参数向量。观察方程,可定义以下组合参数:

π₁ = m₁·r₁² + m₂·l₁² + I₁
π₂ = m₂·r₂² + I₂
π₃ = m₂·l₁·r₂
π₄ = m₁·g·r₁ + m₂·g·l₁
π₅ = m₂·g·r₂
π₆ = F_v1
π₇ = F_c1
π₈ = F_v2
π₉ = F_c2

步骤 3:构造回归矩阵。将上述参数代入动力学方程,整理为 τ = Y·π 形式:

Y(1,:) = [q̈₁, q̈₁+q̈₂, 2·cos(q₂)·q̈₁ + cos(q₂)·q̈₂ - 2·sin(q₂)·q̇₁·q̇₂ - sin(q₂)·q̇₂²,
          cos(q₁), cos(q₁+q₂), q̇₁, sign(q̇₁), 0, 0]

Y(2,:) = [0, q̈₁+q̈₂, cos(q₂)·q̈₁ + sin(q₂)·q̇₁²,
          0, cos(q₁+q₂), 0, 0, q̇₂, sign(q̇₂)]

步骤 4:验证与讨论。该例中原始参数为 10 个(m₁, r₁, I₁, m₂, r₂, I₂, F_v1, F_c1, F_v2, F_c2),但通过组合合并为 9 个最小参数。m₁ 和 r₁ 无法独立辨识,只能辨识其组合 m₁·r₁² 和 m₁·g·r₁。这说明线性化过程不仅改变了模型形式,还揭示了参数的可辨识性边界。

原始参数 组合参数 物理含义 可辨识性
m₁, r₁, I₁ π₁ = m₁·r₁² + m₂·l₁² + I₁ 连杆1等效转动惯量 仅组合可辨识
m₂, r₂, I₂ π₂ = m₂·r₂² + I₂ 连杆2等效转动惯量 仅组合可辨识
m₂, l₁, r₂ π₃ = m₂·l₁·r₂ 耦合惯量项 可辨识
m₁, r₁, m₂, l₁ π₄ = m₁·g·r₁ + m₂·g·l₁ 连杆1重力矩 仅组合可辨识
m₂, r₂ π₅ = m₂·g·r₂ 连杆2重力矩 可辨识

3.5 常见误区与工程实践建议

误区一:忽略摩擦模型的线性化。许多初学者在构造 Y 矩阵时只考虑惯性项和重力项,忽略摩擦项。但实际机器人中,摩擦对力矩的贡献可达 10%~20%,若不纳入辨识模型,会导致惯性参数估计偏差。摩擦模型本身是线性的(F_v·q̇ + F_c·sign(q̇)),只需在 Y 矩阵中增加对应列即可。

误区二:直接使用原始参数进行辨识。如前所述,原始参数中存在不可辨识的组合。若强行辨识所有参数,最小二乘矩阵将奇异,结果不可信。正确做法是先进行参数合并,再辨识最小参数集。

误区三:Y 矩阵的数值条件数过大。即使参数集已最小化,若激励轨迹设计不当,Y 矩阵仍可能病态。建议在辨识前计算 Y 矩阵的条件数,并通过优化激励轨迹(如傅里叶级数轨迹)来降低条件数。

工程经验:在构造 Y 矩阵时,建议使用符号计算工具自动生成代码。MATLAB 的 Symbolic Math Toolbox 或 Python 的 SymPy 可以自动完成偏导计算和参数合并,大幅减少手工错误。生成后的 Y 矩阵函数应编译为高效代码(如 C 或 MEX),以便在实时辨识中使用。

总结复盘:动力学模型线性化是参数辨识的基石,其核心在于将动力学方程重组为 τ = Y·π 的线性形式。构造 Y 矩阵的关键步骤包括:建立完整动力学方程、定义参数向量、逐项提取 Y 元素、合并冗余参数、数值验证。最小惯性参数集的确定依赖于 Y 矩阵的秩分析,而 Y 矩阵的条件数则直接影响辨识精度。工程实践中,应充分利用符号计算工具,并始终以数值验证作为线性化正确性的最终判据。