第四节:激励轨迹设计——傅里叶级数、多项式与优化准则
各位,咱们今天聊点实在的。激励轨迹设计,说白了就是给机器人系统“出题”。你出的题好不好,直接决定了你能从系统辨识中“拷问”出多少真东西。我做了这么多年机器人控制,见过太多人随便给个正弦波就开始辨识,结果模型一塌糊涂。嗯,今天咱们就把这事掰扯清楚。
4.1 傅里叶级数轨迹:为什么我偏爱它?
傅里叶级数轨迹,我个人习惯叫它“多频探针”。它的核心思想很简单:用多个不同频率的正弦波叠加,去激励系统的各个模态。
数学形式长这样:
q(t) = q₀ + Σᵢ₌₁ᴺ [aᵢ·sin(i·ω₀·t) + bᵢ·cos(i·ω₀·t)]
其中ω₀是基频,N是谐波次数。你想想看,一个关节的运动被分解成N个频率成分,每个成分的幅值由aᵢ和bᵢ控制。
关键参数选择:
- 基频ω₀:通常取系统最低谐振频率的1/5到1/3。我一般取0.1~0.5 rad/s,太低浪费时间,太高容易激发未建模动态。
- 谐波次数N:5~10次足够。N太大,高频成分会激发结构柔性,反而坏事。
- 幅值aᵢ, bᵢ:遵循“低频大、高频小”的原则。低频段信噪比低,需要大激励;高频段容易过激,小一点安全。
我的经验:我在做六轴机器人辨识时,曾经试过N=20的傅里叶轨迹。结果高频段把减速器的齿隙都激出来了,数据里全是毛刺。后来老老实实降到N=8,效果反而更好。别贪多,够用就行。
4.2 多项式轨迹:简单但别小看它
多项式轨迹,说白了就是让关节位置随时间按多项式变化。最常见的是五次多项式:
q(t) = c₀ + c₁·t + c₂·t² + c₃·t³ + c₄·t⁴ + c₅·t⁵
为什么是五次?因为你可以同时约束位置、速度和加速度的边界条件。比如从静止到静止,起止速度加速度都为零,刚好六个条件解六个系数。
多项式轨迹的好处是简单、计算快、边界条件可控。但缺点也很明显——频率成分单一,说白了就是“扫频能力”差。你想想看,一个五次多项式,它的频谱能量集中在低频段,高频动态根本激不起来。
避坑指南:我曾经用五次多项式做柔性关节的辨识,结果模型在低频段拟合得很好,一上高频就崩。后来发现是多项式轨迹的高频能量不足,导致柔性模态根本没被激励到。如果你要辨识高频动态,别用纯多项式,至少得叠加一些高频成分。
4.3 优化准则:条件数与观测矩阵
好,现在问题来了:你设计了一条轨迹,怎么评价它好不好?
我个人习惯看两个指标:观测矩阵的条件数和观测矩阵的奇异值分布。
4.3.1 观测矩阵长什么样?
假设我们要辨识一个线性参数化模型:
τ = Φ(q, q̇, q̈) · θ
其中Φ是回归矩阵,θ是待辨识参数。采集N个采样点后,我们得到:
τ_stack = Φ_stack · θ
这里的Φ_stack就是观测矩阵,维度是(N×n_θ)。
4.3.2 条件数——数值稳定性的命门
条件数κ(Φ) = σ_max / σ_min,即最大奇异值与最小奇异值的比值。
经验法则:
- κ < 10:优秀,参数辨识结果可靠
- 10 ≤ κ < 100:还行,但要注意噪声放大
- κ ≥ 100:危险!参数估计可能完全不可信
为什么会这样?你想想看,条件数大意味着观测矩阵“病态”,某些参数方向上的信息量极少。哪怕测量噪声只有一点点,这些方向上的参数估计也会被放大到离谱。
我的习惯:设计完轨迹后,我会先算一下条件数。如果κ > 50,我就调整轨迹参数——比如增加激励幅值、改变频率分布、或者延长采集时间。直到κ降到20以下,我才开始做实验。这一步省不了,否则后面全是白费功夫。
4.3.3 奇异值分布——看得更细
条件数只给了你一个比值,但奇异值的大小也很重要。我一般会画一个奇异值分布图:
σ₁ ≥ σ₂ ≥ ... ≥ σ_{n_θ}
如果最后几个奇异值比前几个小了两个数量级以上,说明这些参数方向几乎不可观测。这时候要么简化模型,要么重新设计轨迹。
4.4 知识体系总览
下面这张图,是我自己总结的激励轨迹设计流程。你照着走,基本不会出大错。
4.5 实操建议:一个完整的轨迹设计流程
好了,理论说完了,咱们来点实际的。我一般按下面这个流程走:
- 确定辨识目标:你要辨识哪些参数?惯性、摩擦、还是柔性?不同目标对轨迹频率成分的要求不同。
- 选择轨迹类型:通用场景我选傅里叶级数,简单场景用多项式,复杂场景两者结合。
- 初步设计参数:设定基频、谐波次数、幅值、时长。
- 仿真验证:在仿真环境里跑一遍,算条件数和奇异值。不合格就回去调参数。
- 实验采集:上真机跑轨迹,采集数据。
- 后验检查:用采集到的数据重新算观测矩阵的条件数。如果跟仿真差太多,检查传感器噪声或执行器饱和。
一个具体的例子:我曾经做一个六轴协作机器人的动力学辨识。目标参数有36个(质量、质心、惯性张量)。我设计了N=8的傅里叶轨迹,基频0.2 rad/s,幅值从5°到30°递减。仿真条件数κ=12,实验条件数κ=15。最终辨识出的模型,在验证轨迹上的预测误差小于3%。嗯,这个结果我挺满意。
记住,激励轨迹设计不是一锤子买卖。你得多试几次,找到最适合你系统的那一组参数。别怕麻烦,这一步做好了,后面的辨识工作就顺风顺水。
可可精品资料库