第一章:运动学与动力学模型

大家好,我是你们这门课的老朋友。今天咱们聊点硬核的——运动学与动力学模型。说实话,我刚开始做飞控那会儿,觉得这玩意儿就是一堆公式堆砌,没啥意思。直到有一次,我调的四旋翼在风场里疯狂抖振,差点炸机,我才意识到:不懂模型,你连问题出在哪都不知道。

所以,这一章咱们把基础打牢。你想想看,弹道规划也好,控制参数调优也罢,本质上都是在跟“运动”和“力”打交道。搞懂了这些,后面的路就好走了。

1.1 质点运动学:从位置到加速度

先来个最简单的。质点运动学,说白了就是描述一个点怎么动。不考虑质量,不考虑力,只关心位置、速度、加速度之间的关系。

我个人习惯把运动学方程写在手边,随时查。核心就三个:

  • 位置:\( \mathbf{p}(t) \)
  • 速度:\( \mathbf{v}(t) = \dot{\mathbf{p}}(t) \)
  • 加速度:\( \mathbf{a}(t) = \dot{\mathbf{v}}(t) = \ddot{\mathbf{p}}(t) \)

嗯,这里要注意:在三维空间里,这些量都是向量。比如四旋翼的位置就是 \( [x, y, z]^T \)。

避坑指南: 我曾经在仿真里直接用欧拉法积分,结果位置漂移得离谱。后来改用四阶龙格-库塔法,精度才上去。所以,别小看积分方法的选择。

举个实际例子。你要规划一条从A点到B点的轨迹,最简单的就是给一个加速度曲线,然后积分两次得到位置。但如果你不考虑速度约束,规划出来的轨迹可能让电机瞬间过载。这就是运动学模型的价值——它告诉你“能跑多快”和“能拐多急”。

1.2 刚体动力学:旋转才是难点

质点运动学只解决平动。但现实中的飞行器、机器人,都是刚体。刚体除了平动,还有转动。转动才是真正让人头疼的地方。

刚体动力学描述的是:力如何产生平动加速度,力矩如何产生角加速度。核心方程是牛顿-欧拉方程。

1.2.1 牛顿-欧拉方程

这个方程分两部分:

  • 平动部分:\( m \ddot{\mathbf{p}} = \mathbf{F} \)
  • 转动部分:\( \mathbf{I} \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (\mathbf{I} \boldsymbol{\omega}) = \boldsymbol{\tau} \)

你看,平动部分很简单,就是牛顿第二定律。但转动部分多了一个叉乘项 \( \boldsymbol{\omega} \times (\mathbf{I} \boldsymbol{\omega}) \),这叫陀螺力矩。我在做四旋翼控制时,如果忽略这一项,高速旋转时姿态会莫名其妙地偏。后来加上补偿,才稳下来。

个人经验: 调参时,如果发现偏航通道有奇怪的耦合,先检查一下是不是忘了加陀螺力矩补偿。我至少在这上面浪费过两天时间。

1.2.2 拉格朗日方程

牛顿-欧拉方程虽然直观,但处理复杂约束时很麻烦。这时候拉格朗日方程就派上用场了。

拉格朗日方程的核心思想是:用能量(动能-势能)来描述系统,而不是直接用力。公式是:

\[ \frac{d}{dt} \left( \frac{\partial L}{\partial \dot{q}_i} \right) - \frac{\partial L}{\partial q_i} = Q_i \]

其中 \( L = T - V \) 是拉格朗日量,\( q_i \) 是广义坐标,\( Q_i \) 是广义力。

说实话,我平时做工程很少直接用拉格朗日方程,因为推导起来太繁琐。但在写论文或者做高精度仿真时,它比牛顿-欧拉更优雅,尤其是处理多体系统时。

1.3 常见模型:四旋翼与差分轮车

理论讲完了,咱们看看实际中怎么用。我挑两个最常见的模型:四旋翼和差分轮车。

1.3.1 四旋翼模型

四旋翼的动力学模型,说白了就是四个电机产生的力和力矩,驱动一个刚体运动。核心假设是:

  • 机体是刚体,质量分布均匀
  • 电机响应足够快,可以忽略动态
  • 空气阻力简化为线性阻尼

模型可以写成:

// 四旋翼简化动力学(伪代码)
// 输入:四个电机转速 w1, w2, w3, w4
// 输出:加速度和角加速度

F_total = k_f * (w1^2 + w2^2 + w3^2 + w4^2)  // 总升力
tau_x = k_m * (w1^2 - w3^2)                  // 滚转力矩
tau_y = k_m * (w2^2 - w4^2)                  // 俯仰力矩
tau_z = k_t * (w1^2 - w2^2 + w3^2 - w4^2)   // 偏航力矩

// 平动加速度(世界坐标系)
acc = (F_total / m) * R * [0, 0, 1]^T - [0, 0, g]^T

// 角加速度(机体坐标系)
omega_dot = I_inv * (tau - cross(omega, I * omega))

这里 \( R \) 是旋转矩阵,把机体坐标系下的力转换到世界坐标系。我刚开始写这个模型时,总把旋转矩阵的方向搞反,结果仿真里四旋翼直接倒着飞。嗯,后来我养成了一个习惯:每次写完都先做一次“悬停测试”,确保模型在零输入时能保持高度。

警告: 四旋翼模型中的电机转速不能为负。如果你在仿真里用了负值,那一定是符号搞错了。我曾经犯过这个错,仿真结果看起来挺合理,但实际飞控根本跑不了。

1.3.2 差分轮车模型

差分轮车就简单多了。它只有两个驱动轮,通过差速实现转向。运动学模型是:

// 差分轮车运动学(伪代码)
// 输入:左轮速度 v_l, 右轮速度 v_r
// 输出:车体速度 v, 角速度 omega

v = (v_l + v_r) / 2
omega = (v_r - v_l) / L  // L 是轮距

// 位置更新(世界坐标系)
x_dot = v * cos(theta)
y_dot = v * sin(theta)
theta_dot = omega

你看,这个模型比四旋翼简单多了。但简单不代表容易。我记得有一次做AGV小车,轮子打滑导致定位漂移,我花了一周才找到原因——模型里没考虑滑移。后来加了滑移补偿,精度才上来。

所以,模型的选择取决于你的应用场景。如果只是做路径规划,运动学模型就够了。但如果要做高精度控制,必须考虑动力学和摩擦。

1.4 知识体系总览

为了让你更直观地理解这一章的内容,我画了一张图。它把运动学、动力学、以及常见模型的关系串起来了。

运动学与动力学模型知识体系 质点运动学 位置 → 速度 → 加速度 只描述运动,不考虑力 核心:积分与微分关系 刚体动力学 力 → 平动加速度 力矩 → 角加速度 核心:牛顿-欧拉 / 拉格朗日 引入力与力矩 牛顿-欧拉方程 直接受力分析 适合简单系统 拉格朗日方程 基于能量分析 适合复杂约束 四旋翼模型 4个电机 → 6自由度 强耦合、非线性 差分轮车模型 2个轮子 → 3自由度 非完整约束

这张图把这一章的内容串起来了。从最基础的质点运动学,到刚体动力学,再到具体的建模方法,最后落到两个常见模型上。你学完这一章,应该能回答三个问题:

  1. 怎么描述一个物体的运动?
  2. 力和运动之间是什么关系?
  3. 四旋翼和差分轮车分别怎么建模?

嗯,这些就是后续所有章节的基础。别急,后面我们会一步步深入,从模型到控制,从仿真到实飞。每一步我都会把踩过的坑告诉你。

核心要点: 模型是控制的基础。模型越准,控制效果越好。但模型越复杂,计算量越大。工程上要在精度和实时性之间找平衡。我个人习惯:先用简单模型做规划,再用复杂模型做仿真验证。


专注资料整理