飞控算法从入门到精通 | 018 传感器数据融合概念从一次炸机说起去年夏天,我在调试一架四轴无人机时遇到了一个诡异的问题:悬停时飞机每隔几秒就会突然抽搐一下,像是被谁踹了一脚。日志回放发现,陀螺仪输出的角速度在某个瞬间跳变到正常值的3倍,但同一时刻加速度计的数据却完全正常。更让人头疼的是,这个跳变在原始传感器读数里根本不存在——是卡尔曼滤波器“制造”出来的。那次炸机让我明白了一个道理:传感器数据融合不是简单的“取平均”,而是一场与噪声、延迟、非线性误差的持久战。今天这篇笔记,就聊聊数据融合到底在干什么,以及为什么它比“把几个传感器数据加起来除以N”要复杂得多。为什么需要融合?——单一传感器的死穴先看一个最朴素的场景:你想知道飞行器的姿态(俯仰角、横滚角、偏航角)。理论上,加速度计可以测重力方向,从而算出俯仰和横滚;陀螺仪可以积分角速度得到角度;磁力计可以给出绝对航向。但每个传感器都有致命缺陷:加速度计:怕振动。电机转动带来的高频振动会让加速度计输出像心电图一样乱跳。更坑的是,飞行器做加速运动时,加速度计分不清“重力”和“运动加速度”,这时候算出来的姿态就是错的。陀螺仪:怕漂移。角速度积分一次得到角度,但积分会累积零偏误差。哪怕陀螺仪静止时输出0.01°/s的零偏,积分10秒就偏了0.1°,一分钟就是0.6°。更麻烦的是,温度变化会让零偏缓慢漂移,你永远不知道它下一秒会偏多少。磁力计
018、传感器数据融合概念
飞控算法从入门到精通 | 018 传感器数据融合概念从一次炸机说起去年夏天,我在调试一架四轴无人机时遇到了一个诡异的问题:悬停时飞机每隔几秒就会突然抽搐一下,像是被谁踹了一脚。日志回放发现,陀螺仪输出的角速度在某个瞬间跳变到正常值的3倍,但同一时刻加速度计的数据却完全正常。更让人头疼的是,这个跳变在原始传感器读数里根本不存在——是卡尔曼滤波器“制造”出来的。那次炸机让我明白了一个道理:传感器数据融合不是简单的“取平均”,而是一场与噪声、延迟、非线性误差的持久战。今天这篇笔记,就聊聊数据融合到底在干什么,以及为什么它比“把几个传感器数据加起来除以N”要复杂得多。为什么需要融合?——单一传感器的死穴先看一个最朴素的场景:你想知道飞行器的姿态(俯仰角、横滚角、偏航角)。理论上,加速度计可以测重力方向,从而算出俯仰和横滚;陀螺仪可以积分角速度得到角度;磁力计可以给出绝对航向。但每个传感器都有致命缺陷:加速度计:怕振动。电机转动带来的高频振动会让加速度计输出像心电图一样乱跳。更坑的是,飞行器做加速运动时,加速度计分不清“重力”和“运动加速度”,这时候算出来的姿态就是错的。陀螺仪:怕漂移。角速度积分一次得到角度,但积分会累积零偏误差。哪怕陀螺仪静止时输出0.01°/s的零偏,积分10秒就偏了0.1°,一分钟就是0.6°。更麻烦的是,温度变化会让零偏缓慢漂移,你永远不知道它下一秒会偏多少。磁力计