在MCU上搞传感器融合,核心就是让多个传感器的数据不冲突,最后输出一个靠谱的结果。数据采集稳、数据干净、算法靠谱,再加上传感器校准和硬件优化。
数据采集IIC/SPI通信要稳,别让数据很顺畅的进行通信,传感器数据得按时按点送到MCU,否则融合算法再牛也是白搭。 如果没有处理好就会出现IIC总线冲突,多个传感器共用IIC总线,地址冲突或时序不对,数据乱码。 采样不同步,陀螺仪和加速度计采样时间戳不一致,融合时数据对不上号。 不过IIC地址分配,这个是一个非常不错的方法,用拨码开关或跳线帽设置不同地址。还有MCU的DMA+定时器,用定时器触发ADC或IIC读取,DMA自动搬运数据,避免CPU忙等。 还有就是用同一个定时器给所有传感器打时间戳,融合时按时间对齐。
再说一下滤波去噪,传感器噪声会直接污染融合结果,陀螺仪积分漂移、加速度计受震动干扰,特别是在高频电路工作的时候就会出现。 滑动窗口滤波,取最近N个数据求平均或中位数,抑制脉冲噪声。简单粗暴,适合低成本MCU,延迟大,动态响应慢。 低通滤波,对高频噪声衰减,保留低频信号,加速度计/磁力计数据预处理。 卡尔曼滤波,这个在问题点也提到了,动态调整传感器权重,兼顾历史数据和当前测量,四轴飞行器姿态解算,但需要调参过程噪声Q、测量噪声R。
传感器校准,数据对齐是融合的前提 传感器零偏、尺度误差、安装误差会导致数据错位,融合后反而更不准。陀螺仪在静止时采集1000个数据,取平均值作为零偏,后续测量减去零偏。 加速度计,六面校准法(正放、倒放、左右侧放等),解算出尺度误差和安装误差矩阵。 磁力计,采集多组数据,用最小二乘法拟合椭球,修正硬磁/软磁干扰。
还有数据融合 数据层融合(像素级融合)的核心是先融合原始数据,再提取特征和识别。它要求传感器是同质的多个摄像头拍同一场景,或多个麦克风录同一声音,直接将观测数据对齐后合并,比如把多帧图像像素叠加或传感器信号叠加处理。这种方式的优点是数据完整、精度最高,因为原始信息未丢失,适合对精度要求苛刻的场景医学影像、高精度雷达。但缺点也很明显:计算量爆炸需处理海量原始数),且对通信带宽要求极高传感器需实时传输原始数据。如果传感器是异质的摄像头+雷达,观测的不是同一物理量,数据无法直接对齐融合,只能退而求其次,在特征层提取特征后融合或决策层输出结果后融合处理。总结来说,数据层融合是“精度优先,代价高昂”,适合有充足算力和带宽的场景,否则慎用。 决策层融合 决策层融合属于高层次的融合,由于对传感器的数据进行了浓缩,这种方法产生的结果相对而言最不准确,但它的计算量及对通信带宽的要求最低。
|