4. 动力学建模(上):拉格朗日方程法、动能与势能计算、广义力与驱动力矩

各位工程师朋友,大家好。今天我们进入并联机构控制中最核心、也最“劝退”的一环——动力学建模。

说实话,我刚入行那会儿,看到拉格朗日方程也是一头雾水。心想:搞个机器人,直接给电机发指令不就行了?干嘛要折腾这些数学公式?直到有一次,我负责一台高速并联机械手,空载跑得挺好,一抓取工件就开始抖,甚至丢步。那时候我才明白——没有动力学模型,你的控制器就是个瞎子。

好,咱们不扯远了。今天先讲上半部分:拉格朗日方程法、动能与势能计算、广义力与驱动力矩。这些都是后续鲁棒控制的基础。

4.1 为什么选拉格朗日法?

并联机构的动力学建模,主流方法就两种:牛顿-欧拉法和拉格朗日法。

我个人习惯用拉格朗日法。为什么?

  • 省心:不用处理内部约束力。牛顿-欧拉法需要你列出每个构件的力平衡方程,并联机构闭环多,约束力能把你算到崩溃。
  • 结构化:拉格朗日法从能量角度出发,流程固定。你只要算动能、势能,然后套公式就行。
  • 适合控制:最终得到的方程形式是 M(q)q̈ + C(q,q̇)q̇ + G(q) = τ,这正好是鲁棒控制的标准输入。
我的经验:如果你只是做仿真,拉格朗日法绝对够用。但如果你要做实时控制(比如1kHz以上的控制周期),拉格朗日法计算量偏大。这时候可以考虑用递推拉格朗日法或者虚功原理来加速。不过那是后话了。

4.2 拉格朗日方程的标准形式

先看公式,别怕,就一行:

d/dt (∂L/∂q̇) - ∂L/∂q = τ

其中:

  • L = T - V,叫拉格朗日函数。T是系统总动能,V是总势能。
  • q 是广义坐标。对于并联机构,通常选主动关节的转角或位移。
  • 是广义速度。
  • τ 是广义力,对应驱动力矩或力。

说白了,这个方程就是在告诉你:系统的运动,是动能和势能相互转化的结果。你只要把T和V算清楚,剩下的交给公式。

注意:并联机构有闭环约束,所以广义坐标不是独立的。你选坐标时一定要小心。我曾经有个学生,选了所有关节角作为广义坐标,结果自由度算多了,模型根本不对。记住:广义坐标的数量 = 系统的自由度

4.3 动能计算——别小看转动惯量

动能分两部分:平动动能和转动动能。

对于第i个构件:

T_i = 0.5 * m_i * v_i^T * v_i + 0.5 * ω_i^T * I_i * ω_i

其中:

  • m_i 是质量
  • v_i 是质心速度
  • ω_i 是角速度
  • I_i 是惯性张量

系统总动能:

T = Σ T_i

这里有个坑——速度雅可比矩阵。因为并联机构的运动是耦合的,每个构件的速度都要用广义速度表示:

v_i = J_v_i(q) * q̇
ω_i = J_ω_i(q) * q̇

代入后,动能可以写成:

T = 0.5 * q̇^T * M(q) * q̇

这个 M(q) 就是质量矩阵。它跟位置有关,不是常数。这也是并联机构控制难的原因之一——惯性在变。

实战经验:我在做Delta机器人时,发现动平台的质量虽然不大,但它的动能占比很高。因为动平台速度快,而且末端负载直接作用在上面。所以建模时,动平台和末端负载的动能一定要算准,不能简化。

4.4 势能计算——重力是主要来源

对于大多数并联机构,势能主要来自重力:

V_i = m_i * g * h_i

其中 h_i 是质心高度。系统总势能:

V = Σ V_i

注意:如果机构中有弹簧(比如一些柔顺并联机构),还要加上弹性势能 0.5 * k * x^2

势能计算相对简单,但容易出错的地方是参考零点的选择。我建议统一选在基座坐标系的原点高度。这样所有构件的高度都是相对于同一个基准,不容易乱。

小技巧:如果你用符号计算工具(比如MATLAB的Symbolic Toolbox或SymPy),可以把所有构件的质心坐标用广义坐标表示,然后自动求导。手算太容易出错了,尤其是并联机构,动平台的位姿跟多个关节都有关。

4.5 广义力与驱动力矩

广义力 τ 对应的是广义坐标上的驱动力或力矩。对于旋转关节,广义力就是驱动力矩;对于移动关节,就是驱动力。

但这里有个关键点:广义力不一定是电机输出力矩。因为并联机构通常有传动机构(比如连杆、减速器、同步带),你需要考虑传动比和效率。

举个例子:

  • 如果电机经过减速比为 n 的减速器驱动关节,那么 τ_joint = n * τ_motor(忽略摩擦)。
  • 如果还有平行四边形机构,力的传递关系会更复杂。

我在实际项目中,通常把传动模型单独拎出来,写成:

τ_joint = T * τ_motor - τ_friction

其中 T 是传动矩阵,τ_friction 是摩擦力矩。这样模块化,调试起来方便。

避坑指南:我曾经在调试一台五自由度并联机床时,发现模型预测的力矩和实际传感器测到的总是差一截。查了两天才发现,是忽略了减速器的效率损失。那台设备的谐波减速器效率只有70%左右。所以,传动效率一定要实测或查手册,别想当然用100%。

4.6 知识体系总览

下面这张图,是我自己总结的动力学建模流程。每次做新项目,我都按这个步骤走,基本不会漏东西。

拉格朗日法动力学建模流程 ① 定义广义坐标 q 数量 = 自由度,注意闭环约束 ② 计算各构件速度/角速度 用雅可比矩阵表示 ③ 计算动能 T T = 0.5·q̇ᵀ·M(q)·q̇ ③ 计算势能 V V = Σ m·g·h ④ 构造拉格朗日函数 L L = T - V ⑤ 代入拉格朗日方程 d/dt(∂L/∂q̇) - ∂L/∂q = τ

这张图把整个流程串起来了。你按这个顺序做,每一步都有明确的目标。我建议你在做具体机构时,把这张图打印出来贴在工位上,对照着一步步算。

4.7 一个简单的例子:平面五杆机构

光讲理论太干,咱们看个具体例子。平面五杆机构是典型的并联机构,两个主动臂,一个末端点。

建模步骤:

  1. 选广义坐标:两个主动关节角 q1, q2。自由度是2。
  2. 算位置和速度:用几何关系求出每个杆的质心位置,然后对时间求导得到速度。
  3. 算动能:每个杆的平动动能 + 转动动能,加起来。
  4. 算势能:每个杆的重力势能,参考零点选在基座高度。
  5. 代入拉格朗日方程:得到两个方程,写成矩阵形式。

最终结果长这样:

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

其中:

  • M(q) 是 2x2 的质量矩阵
  • C(q,q̇) 是科里奥利力和离心力矩阵
  • G(q) 是重力项
  • τ 是两个主动关节的驱动力矩
我的习惯:算完模型后,我会先做一步验证——把重力项单独拿出来,看看当机构处于某个静态位姿时,重力矩是否跟实际感觉一致。比如让机构水平伸展,重力矩应该最大。如果符号反了或者数值差太多,那肯定是哪里算错了。

4.8 本章小结

好了,今天的内容就到这里。咱们捋一下重点:

  • 拉格朗日法从能量角度建模,不用管内部约束力,适合并联机构。
  • 动能计算要小心雅可比矩阵,势能主要考虑重力。
  • 广义力不直接等于电机力矩,要考虑传动比和效率。
  • 最终模型形式是 M(q)q̈ + C(q,q̇)q̇ + G(q) = τ,这是后续控制的基础。

下一章我们继续讲动力学建模的下半部分——如何用虚功原理处理约束力,以及如何把模型写成适合实时计算的形式。到时候我会分享一个我在Delta机器人上实际用过的代码框架。

各位先消化一下今天的内容。有条件的,找个简单的并联机构(比如平面五杆),自己动手算一遍。纸上得来终觉浅,绝知此事要躬行。


公众号:蓝海资料掘金营,微信deep3321