第1章:姿态控制模型——从数学到工程的桥梁
各位同学好,我是老张。做飞控这些年,我最大的体会是:姿态控制模型是整定PID参数的根基。模型搞不清楚,参数调得再好也是空中楼阁。今天咱们就来聊聊这个基础中的基础。
1.1 四元数与欧拉角:两种姿态描述方式
先说个我踩过的坑。刚入行那会儿,我用欧拉角做姿态解算,结果在90度俯仰角附近直接炸了机——这就是著名的“万向锁”问题。从那以后,我对四元数就格外上心。
欧拉角直观,但有限制。它用三个角度描述旋转:横滚(φ)、俯仰(θ)、偏航(ψ)。旋转顺序通常是ZYX(偏航→俯仰→横滚)。
欧拉角的核心问题:
- 当俯仰角θ = ±90°时,横滚和偏航的旋转轴重合,丢失一个自由度
- 存在奇异性,不适合全姿态飞行
- 插值不自然,两个姿态间的过渡可能走“冤枉路”
四元数就不一样了。它用四个数表示旋转:q = [q₀, q₁, q₂, q₃]ᵀ,其中q₀是标量部分,q₁,q₂,q₃是矢量部分。约束条件是q₀² + q₁² + q₂² + q₃² = 1。
我个人习惯用四元数做状态估计,用欧拉角做可视化。为什么?因为四元数没有奇异性,计算效率高,而且适合做插值(球面线性插值SLERP)。
小技巧:四元数转欧拉角的公式我经常用,这里给出来:
φ = atan2(2(q₀q₁ + q₂q₃), 1 - 2(q₁² + q₂²))
θ = asin(2(q₀q₂ - q₃q₁))
ψ = atan2(2(q₀q₃ + q₁q₂), 1 - 2(q₂² + q₃²))
注意asin的范围是[-π/2, π/2],这就是万向锁的数学根源。
1.2 刚体动力学方程简化
四旋翼的动力学方程,说白了就是牛顿-欧拉方程。完整形式很复杂,但做PID整定时,我们通常做以下简化:
假设条件:
- 飞行器是刚体,忽略弹性变形
- 质量分布对称,惯性积为零
- 小角度假设:sinθ ≈ θ, cosθ ≈ 1
- 忽略空气阻力(低速飞行时)
在这些假设下,姿态动力学方程简化为:
J · ω̇ = τ - ω × (J · ω)
其中:
J = diag(Jₓ, Jᵧ, J₂) — 惯性矩阵
ω = [p, q, r]ᵀ — 角速度
τ = [τₓ, τᵧ, τ₂]ᵀ — 控制力矩
展开成标量形式:
Jₓ · ṗ = τₓ + (Jᵧ - J₂) · q · r
Jᵧ · q̇ = τᵧ + (J₂ - Jₓ) · p · r
J₂ · ṙ = τ₂ + (Jₓ - Jᵧ) · p · q
嗯,这里要注意:耦合项(Jᵧ - J₂)·q·r 是导致横滚和俯仰相互影响的原因。我在做参数整定时,如果发现横滚和俯仰的响应互相干扰,第一反应就是检查这个耦合项有没有被补偿掉。
避坑指南:我曾经在某个项目中忽略了耦合项,结果PID参数怎么调都不对。后来加上前馈补偿,效果立竿见影。所以,千万别小看这些“小项”。
1.3 飞控系统传递函数推导
有了简化模型,我们就可以推导传递函数了。以横滚通道为例:
假设小角度,忽略耦合项,横滚通道近似为:
Jₓ · φ̈ = τₓ
拉普拉斯变换后:
Jₓ · s² · Φ(s) = Τₓ(s)
传递函数:
G(s) = Φ(s) / Τₓ(s) = 1 / (Jₓ · s²)
说白了,姿态通道本质上是一个二阶积分环节。这就是为什么PID控制器中需要微分项——没有D项,系统就是无阻尼的。
加上电机和执行机构的响应,实际传递函数为:
G(s) = K / (s² · (τ·s + 1))
其中:
K = 1/Jₓ — 增益
τ — 电机时间常数(通常5-20ms)
关键结论:
- 姿态控制对象是二阶系统,需要PD控制就能稳定
- 积分项I用于消除稳态误差(如重心偏移、风扰)
- 电机响应延迟限制了控制带宽,一般不超过50Hz
1.4 知识体系总览
下面这张图是我自己整理的,把本章的核心逻辑串起来了:
你看,从姿态描述到传递函数,每一步的简化都直接影响PID整定的效果。模型越精确,整定出来的参数就越可靠。但也要注意,过度复杂的模型反而会让整定变得困难——这是个平衡的艺术。
1.5 本章小结
总结一下今天的内容:
| 知识点 | 核心要点 | 工程建议 |
|---|---|---|
| 四元数 | 无奇异性,适合计算 | 状态估计用四元数 |
| 欧拉角 | 直观,有万向锁 | 可视化用欧拉角 |
| 动力学简化 | 小角度、解耦、忽略耦合项 | 注意耦合补偿 |
| 传递函数 | G(s)=K/(s²(τs+1)) | PD控制为主,I用于消除静差 |
个人经验:我建议初学者先从单通道PD控制入手,把横滚或俯仰调稳了,再考虑耦合和积分项。一口吃不成胖子,飞控调试更是如此。
好了,这一章就到这里。模型是基础,下一章咱们就基于这个模型,聊聊具体的PID参数整定方法。