第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ᵢ 是广义力(非保守力)。

推导步骤(实操版):

  1. 第一步:选广义坐标 q₁, q₂, ..., qₙ
  2. 第二步:写动能 T 用 q 和 q̇ 表示
  3. 第三步:写势能 V 用 q 表示
  4. 第四步:构造拉格朗日函数 L = T - V
  5. 第五步:计算偏导数
    • ∂L/∂q̇ᵢ(对广义速度求偏导)
    • ∂L/∂qᵢ(对广义坐标求偏导)
  6. 第六步:对时间求导 d/dt (∂L/∂q̇ᵢ)
  7. 第七步:代入方程 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 知识体系总览

下面这张图,是我自己总结的拉格朗日法建模流程,你照着走,基本不会错:

拉格朗日方程建模流程 ① 选择广义坐标 qᵢ ② 写出动能 T(q, q̇) ③ 写出势能 V(q) ④ L = T - V ⑤ d/dt(∂L/∂q̇ᵢ) - ∂L/∂qᵢ = Qᵢ 每个自由度一个方程 约束力自动消去 只关心能量,不关心力 提示:先练单自由度系统,再推广到多自由度。一步步来,别急。

3.7 常见问题与避坑

常见错误 后果 解决方法
广义坐标选多了 方程冗余,约束力又回来了 选最少独立参数
动能漏了转动项 动力学模型偏软 逐项检查每个刚体的运动
势能符号搞反 方程符号全错 重力势能:上高为正
偏导数算错 方程结构错误 用符号计算工具验证

我曾经踩过的坑:有一次给一个四轴机器人建模,我偷懒没仔细写动能,直接把连杆当成质点处理。结果仿真出来的末端轨迹偏差超过 30%。后来老老实实把每个连杆的转动惯量加进去,模型才准了。所以,别偷懒,该算的项一个都不能少。

好了,拉格朗日方程的入门就讲到这里。你只要记住:选好广义坐标,写好动能势能,然后机械地套公式,就能得到系统的动力学方程。这个方法,在我做过的所有机器人项目中,从来没有让我失望过。

核心总结:

  • 广义坐标:最少独立参数
  • 动能 T:与速度有关
  • 势能 V:与位置有关
  • L = T - V
  • 方程:d/dt(∂L/∂q̇) - ∂L/∂q = Q

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