1、PX4姿态控制概述

姿态控制为什么重要?

做飞控这些年,我越来越觉得姿态控制是整个系统的「脊梁骨」。你想想看,一架无人机要飞得稳、飞得准,靠的是什么?说白了,就是姿态控制。

姿态控制解决的是最底层的问题:让飞机按照你期望的角度转。不管是悬停、平飞还是做特技,最终都要落到三个角度上——横滚角、俯仰角、偏航角。如果这三个角控不住,上层的位置控制、路径规划全是空谈。

我在项目中遇到过最典型的例子:有个团队把位置控制器调得特别精细,但飞起来就是晃。折腾了两周,最后发现是姿态环的带宽不够。嗯,这就是典型的「上层再漂亮,底层拉胯」。

核心观点:姿态控制是飞控系统的「最后一公里」。所有上层指令,最终都要靠姿态环去执行。姿态环的响应速度、精度、鲁棒性,直接决定了整机的飞行品质。

姿态控制在整个飞控系统中的位置

飞控系统通常分三层:

  • 任务层:规划航线、避障、任务管理
  • 导航与控制层:位置控制、速度控制、姿态控制
  • 执行层:电机混控、PWM输出

姿态控制就在中间层的核心位置。它接收来自位置/速度控制器的期望姿态(比如「给我滚转30度」),然后输出力矩指令给混控器,最终驱动电机转动。

我习惯把姿态控制比作「翻译官」——把上层的位置指令翻译成电机能理解的力矩指令。翻译得好不好,直接决定飞机听不听话。

内外环结构——姿态控制的基本原理

PX4的姿态控制用的是经典的内外环串级结构。为什么这么设计?

你想想看,控制一个角度,最直接的想法是:测当前角度,算误差,然后输出。但实际飞起来你会发现,光控角度不够——因为角度变化率(角速度)对系统的动态影响太大了。

举个例子:你让飞机滚转30度。如果只控角度,飞机会先加速滚转,然后减速,最后停在30度。但这个过程可能很慢,而且容易超调。为什么?因为角度环的带宽有限,它看不到角速度的变化。

所以PX4的做法是:

  1. 外环(角度环):计算期望角度和实际角度的误差,输出期望角速度
  2. 内环(角速度环):跟踪外环给出的期望角速度,输出力矩指令

内环跑得快(通常400Hz),外环跑得慢(通常100Hz)。这样内环能快速抑制角速度扰动,外环则专注于角度跟踪。

我的经验:调参时先调内环,再调外环。内环调好了,外环基本不用大动。我曾经见过有人上来就调角度环的P,结果越调越抖——其实问题出在内环的D项上。

下面这张图展示了PX4姿态控制的内外环结构:

PX4姿态控制内外环结构 期望角度 角度环 P控制器 100 Hz 期望角速度 角速度环 PID控制器 400 Hz 力矩 角度反馈 角速度反馈 外环(角度环) 内环(角速度环) 输出

内外环各自的职责

我习惯这样理解内外环的分工:

环节 输入 输出 控制频率 主要作用
外环(角度环) 期望角度 vs 实际角度 期望角速度 100 Hz 保证角度跟踪精度
内环(角速度环) 期望角速度 vs 实际角速度 力矩指令 400 Hz 抑制扰动、提高响应速度

注意:内外环的频率不能随意设置。内环频率至少要比外环高3-5倍,否则会出现「内环跟不上外环」的问题。我曾经在调试时把内环降到200Hz,外环还是100Hz,结果飞机在高机动时出现了明显的振荡——这就是典型的带宽不匹配。

为什么PX4选择这种结构?

其实不是PX4这么选,而是几乎所有成熟的飞控都这么选。原因有三:

  • 抗扰动能力强:内环直接面对角速度扰动(比如突风),能快速抑制,外环几乎感觉不到
  • 调试方便:先调内环再调外环,问题定位清晰。我调试时如果发现飞机抖,先看内环的D是不是太大
  • 鲁棒性好:即使外环参数有偏差,内环也能兜底,不会让飞机直接失控

说白了,内外环结构就是「分工明确、各司其职」。内环负责「快」,外环负责「准」。两者配合好了,飞机才能飞得又稳又听话。

一个小技巧:在PX4的参数里,MC_ROLLRATE_P、MC_ROLLRATE_D 对应内环,MC_ROLL_P 对应外环。调参时先把内环的P和D调好,让角速度响应又快又稳,再去调外环的P。我一般先给内环P一个保守值(比如0.1),然后慢慢往上加,直到出现轻微振荡再回调20%。

好了,这一章我们聊了姿态控制为什么重要、它在飞控系统中的位置,以及内外环结构的基本原理。下一章我们会深入PX4的具体代码实现,看看这些控制逻辑到底是怎么跑起来的。


专注资料整理