4. PX4姿态控制架构:内外环PID控制结构

好,咱们进入正题。姿态控制,说白了就是让飞机老老实实按你想要的姿态飞。PX4 怎么做到的呢?核心就是一套经典的内外环 PID 结构。我刚开始接触那会儿,也觉得这玩意儿挺玄乎,后来拆开一看,其实逻辑特别清晰。

核心一句话:外环算“该往哪儿转”,内环算“该用多大力气转”。

4.1 角度环(外环)与角速度环(内环)的职责

先看一张图,把整体架构印在脑子里。

PX4姿态控制内外环架构图 PX4 姿态控制内外环架构 期望姿态 (roll/pitch/yaw) 外环:角度环 P控制器 (P gain) 内环:角速度环 PID控制器 混控器 分配 角速度反馈 (陀螺仪) 角度反馈 (姿态估计) 💡 关键理解 • 外环(角度环):输入是期望角度 vs 实际角度,输出是期望角速度。 • 内环(角速度环):输入是期望角速度 vs 实际角速度,输出是力矩/油门。 • 内环频率高(~250Hz),外环频率低(~100Hz),内环先调稳,外环再调准。

这张图我建议你多看两眼。外环是角度环,负责把“期望角度”和“实际角度”的偏差算出来,输出一个“期望角速度”。内环是角速度环,它拿到这个期望角速度,再结合陀螺仪测到的实际角速度,算出最终要输出的力矩。

为什么这么分层?我打个比方。你想让飞机从水平转到俯仰 30 度。外环一看,差 30 度,它告诉你:“内环,你现在要以每秒 60 度的速度转过去。”内环收到指令,再看陀螺仪:“嗯,现在实际转速是 0,差 60 度每秒,我该给电机多大油门才能达到这个转速?”

说白了,外环管“位置”,内环管“速度”。外环反应慢一点没关系,内环必须快、准、稳。

我的经验:调参时永远先调内环,再调外环。内环不稳,外环怎么调都是白搭。我曾经在一个四旋翼项目上,外环 P 增益给得很大,结果飞机一飞就抖,我还以为是外环的问题,折腾了两天。后来发现是内环 D 增益太小,角速度环响应太慢。内环调好后,外环随便给个值就稳了。

4.2 控制分配(混控器)原理

好,内环算出了三个轴的力矩(roll, pitch, yaw)和总油门。但问题来了——这四个电机,谁该转多快?这就是混控器要干的事。

混控器,说白了就是一个数学映射。它把“虚拟的力矩需求”转换成“物理的电机转速”。

对于标准的 X 型四旋翼,混控矩阵长这样:

// 混控矩阵 (X型四旋翼)
// 电机顺序: 1-FR, 2-BR, 3-BL, 4-FL
// 输出: [M1, M2, M3, M4]^T = Mixer * [Thrust, Roll, Pitch, Yaw]^T

Mixer = [
    [ 1,  1, -1, -1],   // M1: +Thrust +Roll -Pitch -Yaw
    [ 1, -1, -1,  1],   // M2: +Thrust -Roll -Pitch +Yaw
    [ 1, -1,  1, -1],   // M3: +Thrust -Roll +Pitch -Yaw
    [ 1,  1,  1,  1]    // M4: +Thrust +Roll +Pitch +Yaw
]

你看这个矩阵,每一行对应一个电机,每一列对应一个控制轴。正号表示该电机在该轴向上出力,负号表示反方向出力。

举个例子。如果只给 Roll 正方向力矩(比如向右滚转),那么 M1 和 M4 要加速(正号),M2 和 M3 要减速(负号)。这样飞机右侧的电机转速增加,左侧降低,飞机就向右滚了。

控制轴 M1 (FR) M2 (BR) M3 (BL) M4 (FL) 效果
Thrust +1 +1 +1 +1 所有电机同时加速
Roll +1 -1 -1 +1 右侧加速,左侧减速
Pitch -1 -1 +1 +1 前侧减速,后侧加速
Yaw -1 +1 -1 +1 对角电机同向变化

你想想看,这个矩阵其实就决定了飞机的“手感”。如果你换了机架,比如从 X 型换成 H 型,或者加了倾转机构,混控矩阵就得重新算。

注意:混控器输出的是归一化值(0~1),最终要映射到电机的实际 PWM 范围。PX4 里通过 PWM_MIN 和 PWM_MAX 参数来做这个映射。我曾经见过有人改了机架但忘了更新混控器参数,结果飞机一解锁就翻,就是因为电机转向和矩阵对不上。

4.3 内外环与混控器的协同工作

把这三个部分串起来,就是完整的姿态控制链路:

  1. 期望姿态(来自遥控器或任务规划)进入角度环。
  2. 角度环(P 控制器)算出期望角速度。
  3. 角速度环(PID 控制器)算出期望力矩。
  4. 混控器把力矩分配到各个电机。
  5. 电机执行,飞机姿态改变。
  6. 陀螺仪和姿态估计反馈实际角度和角速度,闭环。

这个链路里,每一步的延迟都会影响最终效果。内环的更新频率最高,因为它直接控制电机。外环可以慢一些,因为角度变化本身就不快。

调参顺序总结:

  • 第一步:调内环 P,让角速度响应快但不超调。
  • 第二步:调内环 D,抑制震荡,增加阻尼。
  • 第三步:调内环 I,消除稳态误差(悬停时漂移)。
  • 第四步:调外环 P,让角度跟踪准确。
  • 第五步:微调,根据实际飞行手感做补偿。

嗯,这里要注意。很多人一上来就调外环,觉得飞机反应慢就加外环 P。结果飞机开始抖,又去加内环 D。折腾半天发现,其实是内环 P 太小,外环 P 太大,内外环在打架。

我个人习惯是,先把内环调得“硬”一点,让它能快速响应。然后再用外环去“指挥”它。这样内外环各司其职,飞机飞起来才跟手。

好了,这一章的内容就到这儿。记住这张内外环加混控器的架构图,后面调参的时候,你脑子里随时要有这个框架。遇到问题,先定位是哪个环节出的问题,再动手调。