4、动力学模型简介:拉格朗日方程,牛顿-欧拉法,动力学参数辨识
好,咱们进入动力学部分了。说实话,很多做轨迹跟踪的工程师,一开始都只盯着运动学——毕竟位置、速度、加速度这些直观嘛。但真到了高速、高负载的场景,你会发现运动学根本不够用。为什么?因为力才是让机器人动起来的根本原因。
动力学模型,说白了就是描述「力与运动之间的关系」。你给电机发多大扭矩,关节能转多快、末端能跑多准,全看动力学模型建得怎么样。我个人习惯,做自适应控制之前,先把动力学模型吃透,否则后面调参你会调到怀疑人生。
4.1 拉格朗日方程:从能量角度看问题
拉格朗日法是我最早接触的动力学建模方法。它的核心思路很简单:用能量来描述系统。你不需要去画复杂的受力分析图,只需要算清楚系统的动能和势能。
公式长这样:
L = T - V
τ = d/dt(∂L/∂q̇) - ∂L/∂q
其中 L 是拉格朗日量,T 是总动能,V 是总势能,q 是广义坐标(比如关节角度),τ 是广义力(比如关节扭矩)。
我在项目中遇到过一件事:有个六轴机器人,用牛顿法建模,光受力分析就画了三天,还漏了一个耦合项。后来改用拉格朗日法,两天搞定,而且公式推导更规整。为什么?因为拉格朗日法自动处理了约束和耦合,你只需要关注能量。
4.2 牛顿-欧拉法:力与力矩的递推
拉格朗日法虽然优雅,但计算量偏大。如果你需要实时控制,比如 1kHz 甚至更高频率的力矩计算,拉格朗日法可能扛不住。这时候,牛顿-欧拉法就派上用场了。
牛顿-欧拉法的思路是:从基座开始,向外递推速度与加速度;再从末端向内递推力与力矩。整个过程就像流水线,每一步只依赖相邻连杆的信息。
我记得第一次在嵌入式平台上实现牛顿-欧拉法时,算了一下,一个六轴机器人的正向动力学,只需要大约 200 次乘加运算。而拉格朗日法,同样的精度,运算量可能是这个的 5 到 10 倍。
核心递推公式(外推):
ω_{i+1} = ω_i + q̇_{i+1} · z_{i+1}
α_{i+1} = α_i + q̈_{i+1} · z_{i+1} + ω_i × (q̇_{i+1} · z_{i+1})
a_{i+1} = a_i + α_{i+1} × r_{i+1} + ω_{i+1} × (ω_{i+1} × r_{i+1})
内推(从末端向基座):
f_i = f_{i+1} + m_i · a_{c,i}
τ_i = τ_{i+1} + r_i × f_i + I_i · α_i + ω_i × (I_i · ω_i)
4.3 动力学参数辨识:让模型更贴近现实
理论模型再漂亮,参数不准也是白搭。你想想看,每个连杆的质量、质心位置、惯性张量,这些值在 CAD 模型里都有,但实际装配后,因为线缆、螺丝、甚至油漆的厚度,都会导致偏差。
动力学参数辨识,就是通过实验数据,反推出这些参数的真实值。常用的方法有:
- 最小二乘法:最基础,但需要激励轨迹设计得好
- 递推最小二乘(RLS):适合在线辨识,我常用在自适应控制里
- 卡尔曼滤波:处理噪声能力强,但计算量稍大
我给大家看一个简化的参数辨识流程:
1. 设计激励轨迹(比如傅里叶级数轨迹)
2. 采集关节位置、速度、力矩数据
3. 构建回归矩阵 Y(q, q̇, q̈)
4. 用最小二乘法求解:θ = (Y^T Y)^{-1} Y^T τ
这里 θ 就是待辨识的动力学参数向量。注意,不是所有参数都能独立辨识,有些参数是线性相关的,需要做参数重组。
4.4 三种方法的对比与选择
为了让你更直观地理解,我整理了一个对比表:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 拉格朗日方程 | 推导简洁,自动处理约束 | 计算量大,不适合实时 | 离线仿真、教学、低自由度 |
| 牛顿-欧拉法 | 计算高效,适合实时控制 | 推导繁琐,对参数敏感 | 实时控制、高自由度 |
| 参数辨识 | 让模型贴近实际 | 需要实验数据,耗时 | 所有需要高精度控制的场景 |
我个人习惯是:先用拉格朗日法做理论推导,再用牛顿-欧拉法做实时实现,最后用参数辨识把模型校准到实际系统上。这三步走下来,你的动力学模型基本就稳了。
4.5 本章知识体系
下面这张图,帮你理清本章的核心逻辑:
嗯,这张图把本章的核心逻辑串起来了。你从拉格朗日入手理解原理,再用牛顿-欧拉实现实时计算,最后通过参数辨识让模型贴合实际。这三步走完,动力学这块你就基本拿下了。
好了,动力学模型就聊到这儿。下一节我们会把这些模型用到自适应控制里,到时候你就知道,今天花时间把动力学搞明白,绝对值。
公众号:蓝海资料掘金营,微信deep3321