098、飞行模式切换逻辑与状态机
098、飞行模式切换逻辑与状态机
从一次炸机说起
去年夏天,我在调试一架四轴时遇到一个诡异现象:飞机在GPS定点模式下悬停得好好的,我切到增稳模式想做个手动绕圈,结果飞机突然像喝醉了一样猛地朝一个方向窜出去,然后翻倒炸机。事后分析日志发现,模式切换瞬间,姿态控制器的积分项出现了异常跳变——因为切换时没有正确处理积分器的状态重置。
这个教训让我意识到:飞行模式切换不是简单的“if-else”跳转,它背后是一整套状态机设计哲学。今天我们就来聊聊这个看似简单、实则暗藏杀机的主题。
模式切换的本质
飞控中的飞行模式,本质上是对控制律、传感器融合策略、执行器输出映射这三层逻辑的不同组合。比如:
- 自稳模式:只用陀螺仪,角速度闭环
- 定高模式:加入气压计,高度闭环
- 悬停模式:再加入GPS,位置闭环
模式切换时,我们不是在“换一个程序跑”,而是在“改变当前控制系统的拓扑结构”。这种改变如果处理不当,轻则抖动,重则炸机。
状态机的骨架设计
我习惯用有限状态机(FSM)来管理模式切换。核心数据结构长这样:
typedefstruct{