第1章:飞控系统架构——传感器融合、控制律设计、执行机构接口
大家好,我是老张。干飞控这行十几年了,从固定翼玩到直升机,踩过的坑比走过的路还多。今天咱们聊聊无人直升机飞控系统的核心架构。
说白了,飞控系统就干三件事:感知、决策、执行。传感器负责感知,控制律负责决策,执行机构负责执行。听起来简单?嗯,这里面的门道可不少。
1.1 传感器融合:别让数据骗了你
我记得刚入行那会儿,总觉得传感器越多越好。IMU、GPS、磁力计、气压计、超声波……能上的全上了。结果呢?数据打架,飞控直接懵了。
为什么会这样?因为每个传感器都有它的脾气。
| 传感器 | 优点 | 缺点 |
|---|---|---|
| IMU(加速度计+陀螺仪) | 高频响应快,短时精度高 | 长期漂移,积分误差累积 |
| GPS | 绝对位置,无累积误差 | 更新率低(5-10Hz),易受遮挡 |
| 磁力计 | 提供航向参考 | 易受电磁干扰,精度有限 |
| 气压计 | 高度测量,成本低 | 受气流、温度影响大 |
所以,传感器融合的核心不是堆硬件,而是互补滤波或卡尔曼滤波。我个人习惯用扩展卡尔曼滤波(EKF),把IMU的高频数据和GPS的低频数据揉在一起。
核心思路:IMU负责短时姿态跟踪,GPS负责长时位置修正。两者互补,才能得到稳定可靠的估计值。
我在项目中遇到过一个问题:直升机悬停时,GPS信号被旋翼遮挡,位置跳变。当时排查了好久,最后发现是GPS天线安装位置不对。避坑指南:GPS天线尽量远离旋翼平面,最好装在机头或尾梁上。
1.2 控制律设计:尾桨与主旋翼的博弈
无人直升机的控制,难点在于耦合。主旋翼一转,反扭矩就来了,机身跟着转。这时候尾桨就得干活——推回来。
控制律设计,说白了就是解决这个博弈问题。我常用的架构是串级PID:内环控制角速率,外环控制姿态角。
// 串级PID伪代码示例
// 外环:角度环
float angle_error = target_roll - current_roll;
float rate_target = angle_PID.update(angle_error, dt);
// 内环:角速率环
float rate_error = rate_target - current_roll_rate;
float output = rate_PID.update(rate_error, dt);
// 输出到执行机构
servo_output = output + trim_value; // trim_value是配平值
你想想看,尾桨的控制量不仅要抵消主旋翼的反扭矩,还要参与航向控制。这就涉及到混控矩阵的设计。
个人经验:调试尾桨PID时,先调内环(角速率环),再调外环(角度环)。内环调稳了,外环才有意义。我曾经跳过这个顺序,结果直升机像喝醉了酒一样乱晃。
还有一个容易被忽略的点:主旋翼转速变化对尾桨的影响。转速升高,反扭矩增大,尾桨推力也得跟上。所以控制律里最好加入前馈补偿,根据主旋翼转速实时调整尾桨输出。
1.3 执行机构接口:信号到力的最后一公里
控制律算完了,怎么让舵机听话?这就是执行机构接口的事。
常见的接口方式有两种:
- PWM信号:最传统,50Hz频率,1-2ms脉宽。简单可靠,但精度有限。
- SBUS/PPM:数字信号,一根线传多通道。适合通道数多的场景。
我建议用SBUS,尤其是大型直升机。为什么?因为PWM线多了容易串扰,SBUS一根线搞定,干净利落。
注意:执行机构的响应延迟是飞控的大敌。从控制律输出到舵机实际动作,中间有计算延迟、通信延迟、机械延迟。总延迟超过20ms,直升机就会开始抖。
我曾经踩过一个坑:舵机选型时只看了扭矩,没看响应速度。结果装上后,尾桨舵机跟不上控制指令,悬停时尾巴左右摆。后来换了高速舵机,问题解决。
执行机构接口还有一个关键点:故障安全。飞控死机了怎么办?舵机得有个默认位置,让直升机能够自稳或安全降落。我一般会在飞控里设置一个看门狗定时器,超时未收到信号,舵机自动回到安全位置。
1.4 架构总览:一张图看懂
说了这么多,咱们用一张SVG图把整个架构串起来。
这张图把整个飞控系统的数据流画清楚了。传感器融合把原始数据变成可用状态,控制律根据状态算控制量,执行机构把控制量变成物理动作。反馈回路保证系统闭环稳定。
总结一下:飞控架构的核心就是这三个模块的协同。传感器融合要准,控制律要稳,执行机构要快。任何一个环节掉链子,直升机都飞不好。
嗯,这一章就到这里。内容不多,但都是干货。下一章咱们深入聊聊传感器融合的具体实现,包括卡尔曼滤波的推导和代码实现。
公众号:蓝海资料掘金营,微信deep3321