三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

169、飞控中的多传感器融合:容积卡尔曼滤波(CKF)

169、飞控中的多传感器融合:容积卡尔曼滤波(CKF)

飞控中的多传感器融合:容积卡尔曼滤波(CKF)

从一次炸机事故说起

去年夏天,我在调试一架四旋翼的室内定位系统。IMU数据正常,光流传感器输出也看着平滑,但飞机在悬停时突然开始低频抖动,三秒后直接侧翻炸机。事后回传日志发现,EKF的协方差矩阵在某个时刻出现了非正定——数值发散导致状态估计完全崩溃。那是我第一次意识到,当传感器噪声模型不匹配、或者系统非线性程度较高时,传统EKF的线性化近似会埋下致命隐患。

后来我换用了CKF,同样的传感器配置,同样的飞行工况,协方差矩阵始终稳定在合理范围内。这不是巧合,而是容积卡尔曼滤波在数学本质上对非线性系统有更好的适应性。今天这篇笔记,我们就从工程实现的角度,把CKF在飞控多传感器融合中的应用拆开揉碎。

为什么EKF在飞控中会“翻车”

飞控系统的状态方程和观测方程几乎都是非线性的。姿态运动学中的四元数微分方程、加速度计与磁力计的观测模型,都包含三角函数和乘法运算。EKF的做法是对非线性函数做一阶泰勒展开,这相当于用切线去近似曲线。当系统工作点变化剧烈(比如大机动飞行),或者传感器噪声统计特性偏离高斯假设时,线性化误差会累积,最终导致滤波器发散。

我见过不少工程师在EKF里加各种“防发散”技巧:协方差限幅、强制对称化、甚至手动重置协方差矩阵。这些补丁能暂时稳住系统,但治标不治本。CKF的思路完全不同——它不依赖线性化,而是用一组确定的采样点(容积点)去逼近非线性变换后的概率分布。

CKF的核心思想:用“点”代替“线”

CKF属于无迹变换家族,但它比UKF更

← 返回列表