参数辨识方法论:台架标定经验如何迁移到机器人关节
开篇:先划清”我做过”和”我在学”的边界
如果问 4 年台架标定给我留下的最可迁移的能力,我的答案是参数辨识——把”被控对象长什么样”这件事,用实验数据回答清楚。但写这篇笔记前,我要先诚实划一条线:
- 我大量实践过的:台架扫点 → 查表拟合 MAP(MTPA 表、前馈表、弱磁表)——这是我最熟的辨识形态;
- 我在补课掌握的:阶跃响应法、最小二乘(含递推 RLS)、扫频辨识——方法论我理解了、代码跑通了,但还没在量产项目里大量用过。
这条边界我必须讲清楚:面试官追问”这个你实际用过吗”时,不能虚标。本文按这个边界组织:先讲我的实践(查表拟合 MAP),再讲方法论工具箱(面试必考),最后讲迁移。
1. 参数辨识的本质:一个”建模 → 实验 → 修正”的循环
不管哪种方法,本质都是同一个循环:
辨识的成败 80% 在前两步:模型结构选错、激励设计不好,再好的算法也白搭。这是我在台架上最深的体会。
2. 我的实践:台架扫点 → 查表拟合 MAP
2.1 我在台架上实际做的
我 4 年标定工作里最常用的辨识形态,是设计工况矩阵 → 台架扫点 → 查表/拟合生成 MAP:
- MTPA 表:在不同转速/负载下扫描 网格,找每个工作点的最优励磁电流,生成 查表;
- 前馈表:反电动势/交叉耦合补偿参数、MTPA 前馈表的标定;
- 弱磁表:高速区电压受限下的电流分配曲线。
这三张表本质都是”用实测数据把电机的非线性特性装进表里”——它比纯解析公式更准,因为实测数据天然包含磁路饱和、温度漂移等一切模型说不清的非线性(相关实现见《从 INCA flow 到 Python》,我把它自动化了)。
2.2 为什么”查表”也是一种辨识
有人会觉得查表”不算算法”。我的理解是:查表是把”被控对象的非线性静态特性”离散化辨识出来,它和最小二乘拟合本质是一件事的两个实现——一个存成表、一个存成系数,区别只在内存/精度/外推能力的权衡。我在《前馈控制》里讲过的那次主导改进(MTPA 前馈从公式拟合改为查表插值)就是例证:公式拟合在外推区误差放大,查表用实测数据兜住非线性。
3. 方法论工具箱(我在补课掌握)
3.1 阶跃响应法:最快的粗辨识
给系统一个阶跃,从响应曲线直接读出增益与时间常数。一阶对象 的阶跃响应:
工程速读: 时达到稳态的 63.2%; 时约 95%。用这两个点就能反推 和 :
def fit_first_order(t, y, u_step):
"""从阶跃响应拟合 K 和 τ(用 63.2% 法则)"""
K = (y[-1] - y[0]) / u_step # 稳态增益
target = y[0] + 0.632 * (y[-1] - y[0])
i = next(i for i, v in enumerate(y) if v >= target)
tau = t[i] - t[0] # 到达 63.2% 的时间 ≈ τ
return K, tau
局限:只能得到低阶近似、抗噪一般——适合初值估计和”这系统大概什么量级”的判断。
3.2 最小二乘:最通用的回归框架
把系统写成回归形式 ,离线批量解(最小化残差平方和 ):
在线场景用递推最小二乘(RLS),每来一个数据点更新一次:
其中 是预测残差, 是遗忘因子(越小越”健忘”,适合时变参数):
import numpy as np
def rls_step(theta, P, phi, y, lam=0.98):
eps = y - phi @ theta # 预测残差
K = P @ phi / (lam + phi @ P @ phi) # 增益
theta = theta + K * eps # 参数更新
P = (P - np.outer(K, phi) @ P) / lam # 协方差更新
return theta, P
容易踩的坑(面试加分点): 病态(激励不充分/共线)时结果爆炸——所以激励设计比算法本身更重要;遗忘因子太小参数抖得厉害。
3.3 扫频辨识:频域视角
用正弦扫频激励对象,对输入输出做 FFT 得到 Bode 图,直接读出谐振峰、带宽、相位滞后。台架上定位”某转速段振动”这类问题时,扫频是利器;机器人上做关节柔性与结构共振分析同样靠它。频响 ,用互功率谱估计更抗噪。
4. 完整辨识流程(六步,可复用)
- 建模:先想清楚要辨识什么、用什么模型结构(机理 vs 黑箱、几阶);
- 激励设计:幅值、频带、工况覆盖要”足够丰富”——激励不好,再好的算法也白搭;
- 数据采集:采样同步、传感器标定、数据质量把关;
- 拟合:最小二乘/频域拟合/查表,得到参数;
- 交叉验证:用没参与拟合的数据验证;残差分析看模型结构;
- 闭环回归:把辨识结果放进控制器,看闭环指标是否改善——这是最终裁判。
5. 迁移到机器人关节
| 要辨识的参数 | 台架对应物 | 机器人对应实验 |
|---|---|---|
| 转动惯量 | 电驱惯量(加减速法) | 关节正反转加减速,从角加速度与力矩反解 |
| 摩擦模型 | 摩擦补偿前馈标定 | 恒速运行测力矩-转速曲线,拟合库仑 + 粘滞 |
| 反电动势/力矩常数 | 反电动势测试 | 空载恒速测母线电压,或力矩-电流标定 |
| 延时与带宽 | 电流环带宽整定 | 频率响应测试(扫频) |
关节伺服和电驱一样,惯量/摩擦/力矩常数是前馈和整定的地基——参数不准,重力补偿和惯性前馈全是错的(见《前馈控制》迁移部分)。
6. 与”电控 × AI”的接口
参数辨识天然是数据驱动的,这正是我理解的”电控 × AI”落点:参数自学习 / 自整定——用在线辨识(RLS 这类)让控制器参数随工况自适应。对应易控智驾 JD 原话:“控制参数自学习算法探索落地”。我的自动化标定平台(《从 INCA flow 到 Python》)已经把”数据采集 → 判定 → 迭代”流水线化,下一步就是把辨识算法接进这条流水线——离线查表 → 在线辨识,这是我明确的补课方向。