2. 参数辨识问题定义:什么是动力学参数?为什么要辨识?辨识的数学本质

好,咱们正式开始聊参数辨识。说实话,很多刚入行的工程师觉得这玩意儿就是「调参数」,其实远没那么简单。我当年第一次做机器人标定时,也以为拿个最小二乘跑一跑就完事了——结果模型输出和实测数据差了十万八千里。嗯,从那以后我才真正沉下心来理解:我们到底在辨识什么?

2.1 什么是动力学参数?

先问个问题:你给机器人发一个力矩指令,它为什么会动?

答案藏在动力学方程里。以最常见的刚体动力学模型为例:

M(q) * q̈ + C(q, q̇) * q̇ + G(q) + τ_f(q̇) = τ

这里面,M(q) 是惯性矩阵,C(q, q̇) 是科氏力和离心力项,G(q) 是重力项,τ_f 是摩擦力。这些矩阵和向量里,藏着大量未知系数——它们就是我们要辨识的动力学参数。

具体来说,动力学参数包括:

  • 质量参数:每个连杆的质量 m_i
  • 质心位置:连杆质心在关节坐标系中的坐标 (c_x, c_y, c_z)
  • 惯性张量:3×3 的惯性矩阵,包含转动惯量和惯性积
  • 摩擦参数:库仑摩擦系数、粘滞摩擦系数(有时还有 Stribeck 效应参数)
  • 电机参数:转子惯量、减速比、力矩常数等(如果考虑电机侧)

我习惯把这些参数统称为「最小惯性参数集」。为什么叫「最小」?因为很多参数其实是线性相关的,你辨识不出来独立的数值。举个例子,一个连杆的质量和它的质心位置,在某些运动下是耦合的——你只能辨识出它们的组合,而不是各自的值。

核心要点:动力学参数不是随便选的。它们必须满足「可辨识性」条件——即能够从输入输出数据中唯一确定。

2.2 为什么要辨识?

你可能会想:「我用 CAD 模型导出的参数不就行了吗?」

嗯,理论上可以。但实际项目中,我踩过太多坑了:

  • CAD 模型不准确:线缆、螺丝、传感器这些附加质量,CAD 里往往没算进去。我记得有个项目,机器人末端加了摄像头和光源,CAD 模型没更新,结果轨迹跟踪误差直接翻倍。
  • 摩擦参数无法从 CAD 获得:摩擦是实验现象,跟润滑、温度、磨损都有关。你没法用理论公式算准。
  • 负载变化:机器人抓取不同工件时,末端负载变了。如果不重新辨识,模型就失效了。
  • 老化与磨损:用了两年的机器人,关节间隙、摩擦特性都会变。我见过一个产线,机器人用了三年后,同样的轨迹控制精度下降了 40%——就是参数漂移了。

说白了,辨识的目的就是让模型「对齐」物理现实。你想想看,如果你的控制器用的是错误的参数,那它算出来的前馈力矩就是错的——轻则轨迹不准,重则震荡甚至损坏设备。

我的经验:在工业机器人调试中,参数辨识至少能提升轨迹跟踪精度 30%~50%。如果你做的是高速高精度应用(比如激光切割、3D 打印),这一步绝对不能省。

2.3 辨识的数学本质

好,现在咱们聊点硬核的。参数辨识的数学本质是什么?

一句话:将动力学方程转化为线性回归问题

你可能会问:「动力学方程不是非线性的吗?怎么变成线性了?」

注意,我说的是关于参数线性。虽然动力学方程关于状态(位置、速度、加速度)是非线性的,但关于参数(质量、惯量、摩擦系数)是线性的。这意味着我们可以写成:

τ = Y(q, q̇, q̈) * θ

其中:

  • τ 是关节力矩向量(已知,通过电流传感器或力矩传感器获得)
  • Y 是回归矩阵(由运动学状态计算得到)
  • θ 是待辨识的参数向量

这个形式太重要了。为什么?因为一旦写成 Yθ = τ,我们就可以用最小二乘法来求解:

θ̂ = (YᵀY)⁻¹ Yᵀ τ

这就是参数辨识的数学本质——求解一个超定线性方程组。你采集 N 组数据(N 远大于参数个数),然后找到一组参数,使得模型预测的力矩与实测力矩的误差最小。

注意:这里有个大坑——回归矩阵 Y 必须满足「持续激励条件」。简单说,就是你的激励轨迹要足够丰富,能激发所有参数。如果轨迹太单调(比如只做匀速运动),Y 的某些列会线性相关,导致辨识结果不可靠。我曾经用正弦轨迹辨识摩擦参数,结果库仑摩擦和粘滞摩擦完全混在一起分不开——就是因为激励不够。

下面这张图总结了参数辨识的完整逻辑:

参数辨识数学本质:线性回归框架 输入:运动数据 q(t), q̇(t), q̈(t) 输出:力矩数据 τ(t) 实测力矩 构建 Y 矩阵 核心方程:τ = Y · θ 关于参数 θ 线性,关于状态非线性 最小二乘求解 θ̂ = (YᵀY)⁻¹ Yᵀ τ 辨识结果:θ̂ 质量、惯量、摩擦参数 关键条件 持续激励 + 可辨识性

从这张图你可以看到,整个辨识流程其实就三步:

  1. 数据采集:设计激励轨迹,采集关节位置、速度、加速度和力矩
  2. 构建回归方程:用运动学数据计算回归矩阵 Y
  3. 求解参数:用最小二乘法(或其变体)得到参数估计 θ̂

但这里有个细节——加速度怎么获得? 实际系统中,我们通常只有位置和速度测量值,加速度需要数值微分。而数值微分会放大噪声,所以数据预处理(滤波、平滑)非常关键。我习惯用零相位低通滤波,既能去噪又不引入相位延迟。

一句话总结:参数辨识的数学本质,就是把物理模型「翻译」成统计模型,然后用数据去「教」模型学会真实的参数。你采集的数据质量,直接决定了辨识结果的可靠性。

2.4 辨识的工程意义

最后聊点实际的。参数辨识到底能带来什么好处?

应用场景 辨识前 辨识后
轨迹跟踪精度 ±2~5 mm ±0.2~0.5 mm
前馈力矩误差 20%~40% <5%
负载变化适应性 需重新调 PID 自动补偿
能耗优化 无优化 降低 10%~20%

我个人觉得,参数辨识最大的价值不在于「精确」,而在于「自适应」。你想想看,一个机器人从出厂到退役,它的物理特性一直在变——关节磨损、润滑状态变化、负载更换。如果每次变化都要工程师手动调参,那效率太低了。而参数辨识提供了一条自动化路径:让机器人自己「感知」自己的变化,然后自动更新模型。

避坑指南:我曾经在一个项目里,直接用离线辨识的参数做在线前馈控制,结果发现效果时好时坏。后来排查才发现,是温度变化导致摩擦参数漂移了。从那以后,我养成了一个习惯——定期重新辨识,或者在条件允许时做在线辨识。别指望一次辨识管一辈子。

好了,这一章的内容就到这里。参数辨识的定义、意义和数学本质,咱们已经聊透了。下一章我们会深入具体的辨识方法——从最小二乘到加权最小二乘,再到正则化方法,一步步把工具箱给你配齐。


专注资料整理