4. 拉格朗日动力学建模:广义坐标、拉格朗日方程、应用实例
动力学建模,说白了就是给机械系统写运动方程。牛顿法大家都会,但一到多关节、多约束的系统,画受力图能画到崩溃。我个人习惯用拉格朗日法,因为它只关心能量,不关心约束力。
你想想看,一个六轴机械臂,每个关节都有电机、减速器、连杆,用牛顿法写几十个方程,光检查符号就能花半天。拉格朗日法呢?只要写出系统的动能和势能,然后套公式。嗯,这里要注意,公式本身很简单,但真正难的是选对广义坐标。
4.1 广义坐标:少即是多
什么叫广义坐标?说白了就是能唯一确定系统位形的最少参数。可以是角度、位移,甚至可以是某个抽象量。
核心思想:用最少的坐标描述系统,自动满足约束条件。
举个例子,一个单摆:
- 牛顿法:需要 x、y 两个坐标,再加一个绳长约束方程
- 拉格朗日法:只用一个角度 θ,约束自动满足
我在项目中遇到过一位同事,给四足机器人建模时用了 18 个笛卡尔坐标,结果约束方程写了 12 个,调试了整整两周。后来换成 6 个广义坐标(每条腿 3 个关节角),一天搞定。
| 系统类型 | 常用广义坐标 | 自由度 |
|---|---|---|
| 平面机械臂 | 关节角度 θ₁, θ₂, ... | n(关节数) |
| 倒立摆 | 小车位移 x,摆角 θ | 2 |
| 四旋翼 | 位置 (x,y,z) + 姿态 (φ,θ,ψ) | 6 |
| 双足机器人 | 躯干位姿 + 关节角度 | 通常 10~20 |
选坐标的技巧:优先选能直接驱动或测量的量。比如电机编码器读的是角度,那就用角度做广义坐标,后续做控制时不用再转换。
4.2 拉格朗日方程:能量视角的动力学
拉格朗日方程长这样:
d/dt (∂L/∂q̇ᵢ) - ∂L/∂qᵢ = Qᵢ
其中 L = T - V,叫拉格朗日量。T 是动能,V 是势能。Qᵢ 是广义力。
为什么会这么简洁?因为拉格朗日法把所有的力分成了两类:
- 保守力(重力、弹簧力)→ 放进势能 V 里
- 非保守力(电机力矩、摩擦力)→ 放进广义力 Qᵢ 里
我曾经犯过一个低级错误:把重力项既写在 V 里,又写在 Qᵢ 里,结果模型多了一倍的重力矩。嗯,记住,保守力只进 V,不进 Q。
4.3 建模步骤:四步走
我总结了一套流程,每次建模都按这个来:
- 选广义坐标 q = [q₁, q₂, ..., qₙ]ᵀ
- 写动能 T:注意是绝对速度,不是相对速度
- 写势能 V:重力势能、弹性势能等
- 套方程:对每个 qᵢ 求偏导,整理成标准形式
避坑指南:写动能时最容易出错。我曾经把连杆质心的速度算成了关节速度,结果模型在高速时完全不对。记住,动能要用质心在惯性系下的绝对速度。
4.4 应用实例:二连杆机械臂
咱们拿一个平面二连杆机械臂练手。两个关节,两个连杆,忽略摩擦。
第一步:选广义坐标
q = [θ₁, θ₂]ᵀ,两个关节角度。
第二步:写动能
每个连杆的动能 = 平动动能 + 转动动能。质心位置需要从关节角度算出来。
连杆1质心位置:
x₁ = lc₁ * cos(θ₁)
y₁ = lc₁ * sin(θ₁)
连杆2质心位置:
x₂ = l₁ * cos(θ₁) + lc₂ * cos(θ₁+θ₂)
y₂ = l₁ * sin(θ₁) + lc₂ * sin(θ₁+θ₂)
然后对时间求导得到速度,再算动能:
T = ½ m₁(vx₁² + vy₁²) + ½ I₁θ̇₁²
+ ½ m₂(vx₂² + vy₂²) + ½ I₂(θ̇₁+θ̇₂)²
第三步:写势能
只有重力势能,取 y=0 为零势能面:
V = m₁g y₁ + m₂g y₂
第四步:套拉格朗日方程
对 θ₁ 和 θ₂ 分别求偏导,整理后得到:
M(q)q̈ + C(q,q̇)q̇ + G(q) = τ
其中 M 是惯性矩阵,C 是科里奥利/离心力矩阵,G 是重力项,τ 是关节力矩。
关键点:M 矩阵一定是正定对称的。如果你算出来不对称,说明求导过程有错。这是我常用的自检方法。
4.5 知识体系总览
下面这张图把拉格朗日建模的脉络理清楚了:
4.6 实用技巧与避坑
做了这么多年仿真,我总结了几条实用经验:
- 符号计算优先:用 MATLAB Symbolic 或 SymPy 做符号推导,手算容易漏项
- 验证对称性:M 矩阵必须对称,不对称就是错了
- 检查量纲:每一项的量纲必须一致,力矩就是力矩,不能混进力的量纲
- 对比特殊位形:让所有关节角为 0,看重力项是否合理
我的习惯:建完模后,先做一次静力学验证。让所有速度和加速度为 0,方程退化成 G(q) = τ。这时候用手算一下重力矩,对上了再往下走。
拉格朗日法最大的优势,就是让你从复杂的受力分析中解放出来,专注于能量。你想想看,一个六轴机械臂,用牛顿法写受力图能写满三页纸,用拉格朗日法就是几行能量表达式。嗯,这就是为什么我强烈推荐大家掌握这个方法。