2. 多旋翼动力学基础:坐标系定义、刚体运动学与动力学方程、控制效率矩阵推导
各位同学,欢迎来到多旋翼动力学这一讲。说实话,这部分内容是整个飞控系统的“地基”。你想想看,如果连无人机怎么动、受什么力都搞不清楚,那后面的故障诊断和容错控制就无从谈起了。我个人习惯,在开始任何算法设计之前,先把坐标系和基本方程理得清清楚楚,这样后面遇到问题才能快速定位。
2.1 坐标系定义:别让方向搞晕你
做飞控这么多年,我见过太多新手在坐标系上栽跟头。说白了,坐标系就是描述无人机运动的“参考系”。我们主要用两个:
- 地球坐标系(E系):也叫惯性系,原点通常选在地面某点。X轴指向北,Y轴指向东,Z轴指向地心。这个坐标系是绝对的,用来描述无人机的位置和姿态。
- 机体坐标系(B系):原点在无人机质心。X轴指向机头,Y轴指向右侧,Z轴指向下方。这个坐标系是跟着飞机一起转的,用来描述电机推力、陀螺仪测量值等。
嗯,这里要注意:两个坐标系之间的转换,全靠旋转矩阵。我记得有一次调试一个四旋翼,发现姿态解算总是有偏差,查了半天才发现是坐标系定义搞反了——把机体Z轴朝上了。这种低级错误,一旦飞起来就是炸机。
核心要点: 从机体坐标系到地球坐标系的旋转矩阵 R 由欧拉角(横滚 φ、俯仰 θ、偏航 ψ)构成。顺序很重要,我习惯用 Z-Y-X 顺序(偏航→俯仰→横滚)。
2.2 刚体运动学方程:位置和姿态怎么变
运动学只描述“怎么动”,不关心“为什么动”。说白了,就是位置和速度、姿态和角速度之间的关系。
位置运动学:
p_dot = v
其中 p 是位置向量,v 是速度向量。这个太简单了,没什么好说的。
姿态运动学:
这个稍微复杂一点。我们用四元数 q 来表示姿态,因为它没有万向节死锁问题。我在项目中遇到过,用欧拉角做大角度机动时,俯仰角到90度直接炸了——这就是死锁。从那以后,我所有飞控代码都用四元数。
q_dot = 0.5 * q ⊗ ω
其中 ω 是机体角速度,⊗ 表示四元数乘法。
个人经验: 如果你非要用欧拉角,记得限制俯仰角在 ±85 度以内。我曾经吃过这个亏,后来在代码里加了饱和函数才放心。
2.3 刚体动力学方程:力与力矩的平衡
动力学才是核心。它告诉我们:无人机为什么会加速?为什么会旋转?
平动动力学:
m * v_dot = m * g + R * T + F_d
其中:
- m 是无人机质量
- g 是重力向量 [0, 0, g]^T
- T 是总推力向量(在机体坐标系下,通常只有 Z 轴分量)
- F_d 是空气阻力等外部扰动
转动动力学:
J * ω_dot = -ω × (J * ω) + τ + τ_d
其中:
- J 是转动惯量矩阵(3x3)
- τ 是控制力矩
- τ_d 是外部扰动力矩
你想想看,这个方程其实很直观:角加速度等于控制力矩减去陀螺效应力矩,再除以转动惯量。我刚开始做飞控时,总觉得陀螺效应项可以忽略,结果做高速偏航旋转时,飞机直接失控了。嗯,从那以后我再也不敢小看这个交叉项了。
避坑指南: 转动惯量 J 一定要准确测量或计算。我曾经用估算值做仿真,结果实际飞行时响应完全不对。建议用 CAD 模型计算,或者做摆锤实验实测。
2.4 控制效率矩阵推导:从电机转速到力和力矩
这部分是连接“控制指令”和“物理执行”的桥梁。说白了,就是告诉你:给四个电机发不同的转速,飞机到底会怎么动?
对于标准的 X 型四旋翼,电机布局如下:
| 电机编号 | 位置 | 旋转方向 |
|---|---|---|
| 1 | 右前 | 顺时针 |
| 2 | 左后 | 顺时针 |
| 3 | 左前 | 逆时针 |
| 4 | 右后 | 逆时针 |
每个电机产生两个效果:
- 推力:F_i = k_f * ω_i²,方向沿机体 Z 轴向上
- 反扭矩:M_i = k_m * ω_i²,方向与旋转方向相反
那么,总推力和三个轴的控制力矩可以写成:
[ T ] [ k_f k_f k_f k_f ] [ ω₁² ]
[ τx ] = [ -l*k_f l*k_f -l*k_f l*k_f ] [ ω₂² ]
[ τy ] [ l*k_f l*k_f -l*k_f -l*k_f ] [ ω₃² ]
[ τz ] [ k_m -k_m -k_m k_m ] [ ω₄² ]
这个 4x4 矩阵就是 控制效率矩阵,记作 G。其中 l 是电机到质心的距离。
关键理解: 控制效率矩阵 G 必须是非奇异的,否则某些控制方向会失效。我检查过一些开源飞控代码,发现它们用的矩阵符号跟我推导的不一样——其实是因为电机编号顺序不同。只要保证一致性,结果是一样的。
有了 G 矩阵,我们就可以做控制分配了:
[ω₁², ω₂², ω₃², ω₄²]^T = G⁻¹ * [T, τx, τy, τz]^T
嗯,这里要注意:G 矩阵求逆的前提是满秩。如果某个电机坏了,G 矩阵就变成 4x3 了,这时候需要用伪逆或者重新分配策略。这部分我们在后面的容错控制章节会详细讲。
实战技巧: 实际飞行中,电机转速不能低于怠速(否则会停转),也不能高于最大转速。所以控制分配后一定要做饱和处理。我曾经在测试时忘了加这个限制,结果电机直接烧了——教训深刻啊。
2.5 小结:动力学模型是飞控的“灵魂”
好了,这一讲的内容就到这里。我们梳理了:
- 坐标系定义:地球系和机体系,以及它们之间的转换
- 运动学方程:位置和姿态的变化率
- 动力学方程:力和力矩如何产生加速度
- 控制效率矩阵:从电机转速到控制力的映射
说实话,这些公式看起来枯燥,但它们是所有飞控算法的基础。我建议你亲手推导一遍,把每个符号的含义都搞清楚。下一讲我们会进入故障诊断部分,到时候你会发现,很多故障模式其实就藏在这些方程里。
有问题随时交流。我们下节课见。