表决机制基础:什么是表决?表决的数学基础
各位同学,今天我们聊聊飞控冗余设计里最核心的一个概念——表决。
表决这个词,听起来好像挺政治化的。但在飞控系统里,它就是个技术活。说白了,就是多个传感器或计算通道给出不同的结果时,我们怎么选一个最靠谱的。
我刚开始做飞控那会儿,总觉得表决很简单——少数服从多数嘛。后来在项目中摔过跟头,才发现事情没那么简单。
什么是表决?
表决,就是多个冗余通道各自输出一个结果,然后通过某种规则,选出一个最终结果的过程。
举个例子。你飞机上有三个陀螺仪,分别测角速度。正常情况下,三个读数应该差不多。但万一某个陀螺仪坏了,读数就离谱了。这时候,表决机制就要发挥作用——把那个坏掉的数据剔除掉,用剩下的两个正常数据算出最终结果。
为什么会这样?因为飞控系统对可靠性要求极高。单个传感器或计算通道,总有失效的概率。通过冗余+表决,我们可以把系统失效的概率降到极低。
表决的数学基础
表决的数学基础,其实就两个核心概念:多数原则和加权投票。
多数原则(Majority Voting)
多数原则是最直观的表决方式。三个通道,两个说A,一个说B,那就选A。
数学上,多数原则可以表示为:
最终结果 = mode(x₁, x₂, ..., xₙ)
其中 mode 表示众数,即出现次数最多的值。
但这里有个坑。多数原则只适用于离散值(比如"正常/故障"这样的二值判断)。对于连续值(比如角度、速度),多数原则就不太灵了。
对于连续值,我们通常用中位数表决(Median Voting):
最终结果 = median(x₁, x₂, ..., xₙ)
中位数对异常值不敏感,比平均值更鲁棒。
举个例子:三个陀螺仪读数分别是 10.2, 10.5, 35.8。平均值是 18.8,明显被异常值拉偏了。中位数是 10.5,这才是正常值。
加权投票(Weighted Voting)
加权投票就更有意思了。不是每个通道的票都等值,而是根据通道的"可信度"来分配权重。
数学表达式:
最终结果 = Σ(wᵢ × xᵢ) / Σ(wᵢ)
其中 wᵢ 是第 i 个通道的权重,xᵢ 是第 i 个通道的输出。
权重怎么来?我一般用以下几种方式:
- 基于历史精度: 过去表现好的通道,权重高
- 基于信噪比: 信号质量好的通道,权重高
- 基于健康状态: 自检通过的通道,权重高
两种表决方式的对比
| 特性 | 多数原则 | 加权投票 |
|---|---|---|
| 适用场景 | 离散值、二值判断 | 连续值、精度敏感 |
| 抗异常能力 | 中等(多数异常则失效) | 强(可抑制异常通道) |
| 实现复杂度 | 低 | 中高 |
| 权重管理 | 不需要 | 需要动态维护 |
| 典型应用 | 故障检测、通道切换 | 传感器融合、数据融合 |
表决的核心逻辑框架
下面这张图,是我自己总结的表决机制核心逻辑。你看一眼就能明白整个流程:
你看,整个流程其实很清晰。输入通道的数据先做预处理,然后进入表决决策模块,最后输出结果。那个反馈回路,就是加权投票里动态调整权重的关键。
实际项目中的选择
我个人习惯这样选:
- 如果是故障检测(比如判断传感器是否失效),用多数原则就够了,简单高效
- 如果是数据融合(比如多个IMU的数据融合),用加权投票更合适
- 如果是关键安全场景(比如飞行控制指令),我会用中位数表决+加权投票的组合
嗯,表决的基础就这些。你想想看,其实表决的本质就是——在不确定中寻找确定性。这个思路,不光飞控系统用得上,很多嵌入式系统都能借鉴。
公众号:蓝海资料掘金营,微信deep3321