第3章:拉格朗日方程入门:广义坐标、动能与势能、拉格朗日方程的推导步骤
各位同学,欢迎来到动力学建模的核心环节。
说实话,牛顿力学大家高中就学过,F=ma 嘛,简单直接。但做机器人控制、多轴联动的时候,你会发现牛顿法越来越吃力。为什么?因为你要处理一大堆约束力、铰链反力,方程越写越乱。
这时候,拉格朗日方程就派上用场了。它不关心那些内部约束力,只盯着系统的能量变化。我个人习惯,做复杂机构建模时,第一反应就是拉格朗日法。
核心思想:用能量(动能 - 势能)来描述系统,避开复杂的受力分析。
3.1 广义坐标:选对坐标,事半功倍
先问大家一个问题:描述一个单摆的位置,需要几个坐标?
用牛顿法,你可能要写 x 和 y 两个坐标,再加一个约束方程 x² + y² = L²。麻烦不麻烦?
其实,一个角度 θ 就够了。这个 θ,就是广义坐标。
广义坐标的定义:能够唯一确定系统位形的最少一组独立参数。
- 记作:q₁, q₂, ..., qₙ
- n 就是系统的自由度
- 可以是角度、位移,甚至其他抽象量
我的经验:选广义坐标时,尽量选那些物理意义明确、且能避开约束的量。比如机器人关节角,天然就是广义坐标。
举个例子:
- 平面单摆:广义坐标 q = θ(角度)
- 平面双摆:广义坐标 q₁ = θ₁, q₂ = θ₂(两个角度)
- 小车弹簧系统:广义坐标 q = x(小车位移)
你想想看,用广义坐标后,约束方程自动满足,是不是清爽多了?
3.2 动能与势能:系统的能量表达
有了广义坐标,下一步就是写出系统的动能 T 和势能 V。
动能 T:
一般形式:T = ½ m v²(平动) + ½ I ω²(转动)
在广义坐标下,速度要表达成广义速度的函数:
T = ½ Σ mᵢ (vᵢ)² + ½ Σ Iⱼ (ωⱼ)²
其中 vᵢ 和 ωⱼ 都要用广义坐标 q 和广义速度 q̇ 表示。
势能 V:
常见的就是重力势能:V = m g h
还有弹性势能:V = ½ k x²
注意,势能只与位置有关,与速度无关。
避坑指南:我曾经在写一个六轴机械臂的动能时,漏掉了连杆的转动惯量项,结果仿真出来的力矩曲线完全不对。后来排查了半天才发现,是动能表达式里少了 ½ I ω²。记住,转动动能千万别漏!
举个简单例子——单摆:
- 动能:T = ½ m (L θ̇)² = ½ m L² θ̇²
- 势能:V = m g L (1 - cos θ)
3.3 拉格朗日函数的定义
拉格朗日函数 L 定义为:
L = T - V
就这么简单。动能减势能。
为什么是减?不是加?嗯,这是由变分原理决定的,大家先记住这个形式。后面推导方程时,你会发现这个减法带来的美妙结果。
3.4 拉格朗日方程的推导步骤
好,重头戏来了。拉格朗日方程的标准形式:
d/dt (∂L/∂q̇ᵢ) - ∂L/∂qᵢ = Qᵢ
其中 Qᵢ 是广义力(非保守力)。
推导步骤(实操版):
- 第一步:选广义坐标 q₁, q₂, ..., qₙ
- 第二步:写动能 T 用 q 和 q̇ 表示
- 第三步:写势能 V 用 q 表示
- 第四步:构造拉格朗日函数 L = T - V
- 第五步:计算偏导数
- ∂L/∂q̇ᵢ(对广义速度求偏导)
- ∂L/∂qᵢ(对广义坐标求偏导)
- 第六步:对时间求导 d/dt (∂L/∂q̇ᵢ)
- 第七步:代入方程 d/dt (∂L/∂q̇ᵢ) - ∂L/∂qᵢ = Qᵢ
关键点:每个自由度对应一个方程。n 个自由度,就有 n 个拉格朗日方程。
3.5 实战示例:单摆的拉格朗日方程
咱们拿单摆练练手。
步骤1:广义坐标 q = θ
步骤2:动能 T = ½ m L² θ̇²
步骤3:势能 V = m g L (1 - cos θ)
步骤4:L = T - V = ½ m L² θ̇² - m g L (1 - cos θ)
步骤5:计算偏导数:
∂L/∂θ̇ = m L² θ̇
∂L/∂θ = - m g L sin θ
步骤6:对时间求导:
d/dt (∂L/∂θ̇) = m L² θ̈
步骤7:代入方程(无外力,Q=0):
m L² θ̈ + m g L sin θ = 0
→ θ̈ + (g/L) sin θ = 0
看,这就是单摆的运动方程。简洁、优雅,没有约束力。
我的习惯:每次写完拉格朗日方程,我都会快速检查一下量纲。左边是加速度量纲,右边也是加速度量纲,那就基本对了。
3.6 知识体系总览
下面这张图,是我自己总结的拉格朗日法建模流程,你照着走,基本不会错:
3.7 常见问题与避坑
| 常见错误 | 后果 | 解决方法 |
|---|---|---|
| 广义坐标选多了 | 方程冗余,约束力又回来了 | 选最少独立参数 |
| 动能漏了转动项 | 动力学模型偏软 | 逐项检查每个刚体的运动 |
| 势能符号搞反 | 方程符号全错 | 重力势能:上高为正 |
| 偏导数算错 | 方程结构错误 | 用符号计算工具验证 |
我曾经踩过的坑:有一次给一个四轴机器人建模,我偷懒没仔细写动能,直接把连杆当成质点处理。结果仿真出来的末端轨迹偏差超过 30%。后来老老实实把每个连杆的转动惯量加进去,模型才准了。所以,别偷懒,该算的项一个都不能少。
好了,拉格朗日方程的入门就讲到这里。你只要记住:选好广义坐标,写好动能势能,然后机械地套公式,就能得到系统的动力学方程。这个方法,在我做过的所有机器人项目中,从来没有让我失望过。
核心总结:
- 广义坐标:最少独立参数
- 动能 T:与速度有关
- 势能 V:与位置有关
- L = T - V
- 方程:d/dt(∂L/∂q̇) - ∂L/∂q = Q
公众号:蓝海资料掘金营,微信 deep3321