认识姿态控制:Pixhawk 姿态控制原理、内环外环概念、PID 基础回顾

各位同学,欢迎来到第二章。

上一章我们把 SITL 环境跑起来了,也看到了无人机在 HITL 模拟器里晃晃悠悠的样子。但说实话,光会跑环境不算本事,真正值钱的是——你知道它为什么晃,以及怎么让它不晃。

这一章,我们就来拆开 Pixhawk 的姿态控制黑盒子。我尽量用大白话讲清楚里面的门道。

2.1 姿态控制到底在控什么?

先问个问题:无人机飞控里,姿态控制到底在控什么?

说白了,就是三个角度:横滚(Roll)、俯仰(Pitch)、偏航(Yaw)。飞控要让无人机按照你期望的角度去转,并且转得稳、转得快、不超调。

你想想看,遥控器推一下俯仰杆,飞控要做的不是直接给电机 PWM 信号,而是先算出来:
「我现在俯仰角是 5°,目标俯仰角是 20°,中间差 15°。这 15° 我该用多大力气去追?」

这个「算力气」的过程,就是姿态控制的核心。

核心要点:姿态控制 = 角度跟踪 + 角速度阻尼。缺一个,飞机要么反应慢,要么乱晃。

2.2 内环外环:飞控的「双环」结构

Pixhawk 的姿态控制,用的是经典的串级 PID 结构。也就是两个 PID 控制器串在一起干活。

我刚开始学的时候,总觉得这玩意儿很玄乎。后来在项目里调一架大四轴,外环参数没调好,飞机起飞就翻——嗯,那次之后我就彻底懂了。

2.2.1 外环:角度环(Position Loop)

  • 输入:目标角度(比如 20° 俯仰)
  • 反馈:当前实际角度(来自加速度计 + 陀螺仪融合后的姿态)
  • 输出:目标角速度(告诉内环「你该以多快的速度转」)
  • 作用:保证角度跟踪准确,消除稳态误差

2.2.2 内环:角速度环(Rate Loop)

  • 输入:目标角速度(来自外环的输出)
  • 反馈:当前实际角速度(来自陀螺仪)
  • 输出:电机控制量(最终给到混控器)
  • 作用:提供阻尼,抑制震荡,提高响应速度

为什么非要搞两个环?

我打个比方:外环像是一个「老司机」在看你开车的方向,发现偏了,就喊「往左打 10° 方向盘」。内环像是「你的手」,听到指令后,要控制打方向盘的速度——打太快会甩出去,打太慢又拐不过弯。内环就是负责这个「速度」的。

调参经验:我个人习惯先调内环(角速度环),再调外环(角度环)。内环稳了,外环才有意义。你想想看,如果角速度环都在震荡,角度环再怎么调也是白搭。

2.3 一张图看懂双环结构

下面这张 SVG 图,把 Pixhawk 姿态控制的内外环关系画清楚了。建议你盯着看 30 秒,比读文字管用。

Pixhawk 姿态控制双环结构图 Pixhawk 姿态控制 — 内环外环串级结构 外环:角度环 PID(角度误差) → 目标角速度 内环:角速度环 PID(角速度误差) → 控制量 混控器 + 电机 PWM → 转速 → 力矩 目标角速度 控制量 角度反馈(加速度计 + 陀螺仪融合) 角速度反馈(陀螺仪) 期望角度 💡 调参顺序: 先调内环 P(角速度响应)→ 再调内环 D(阻尼)→ 然后调外环 P(角度跟踪)→ 最后微调外环 I(消除静差)

2.4 PID 基础回顾:别小看这三个字母

PID 大家都学过,但真正在飞控里用起来,坑不少。我快速过一遍,重点说飞控场景下的特殊之处。

参数 全称 在飞控里的作用 调大后的效果 调太大后果
P 比例 根据当前误差大小,给出对应的修正力 响应变快,回中迅速 震荡、甚至发散
I 积分 消除长期累积的稳态误差(比如重心偏一侧) 悬停更准,抗风更好 积分饱和、低频震荡
D 微分 根据误差变化率,提供阻尼,抑制震荡 飞机更「硬」,不晃 高频噪声放大、电机发烫

⚠️ 避坑指南:我曾经在调一架 F450 时,把内环 D 调得太大,结果飞机在地面轻微抖动,电机温度飙升到 70°C。后来才发现是 D 项放大了陀螺仪的高频噪声。记住:D 不是越大越好,够用就行。

2.4.1 飞控 PID 和普通 PID 的区别

你可能在电机控制、温度控制里也用过 PID。但飞控里的 PID 有几个特殊点:

  • 单位不同:角度环的 P 单位是 (rad/s)/rad,角速度环的 P 单位是 无量纲(控制量/角速度)。别搞混。
  • 积分限幅:飞控的 I 项必须有上限,否则积分饱和后,飞机一翻身就救不回来。
  • 微分先行:Pixhawk 默认对反馈信号做微分,而不是对误差做微分。这样可以避免「设定值突变」带来的冲击。

2.5 实战中怎么用这些知识?

光说不练假把式。这一章的知识,在 SITL 里怎么用?

  1. 打开 Mission Planner 的参数列表:找到 ATC_RAT_RLL_P、ATC_RAT_RLL_D 等参数。这些就是内环角速度环的 PID。
  2. 观察 Log 数据:飞一次,看 RATE.Roll 和 RATE.RollTarget 的曲线。如果实际值追不上目标值,说明 P 太小;如果追上了但来回晃,说明 D 不够。
  3. 先调内环,再调外环:这是铁律。内环没调好,外环调得再漂亮也没用。

小技巧:我习惯在 SITL 里用 param set 命令直接改参数,然后马上飞一个来回,看 Log 曲线。比在 GUI 里翻菜单快多了。

2.6 本章小结

这一章我们拆了 Pixhawk 的姿态控制核心:

  • 外环(角度环)负责「往哪转」
  • 内环(角速度环)负责「怎么转」
  • PID 三个参数各有分工,P 管快、I 管准、D 管稳
  • 调参顺序:内环 P → 内环 D → 外环 P → 外环 I

这些东西,是后面所有调参实战的基础。你把它吃透了,后面调参的时候心里就有底了。