传感器融合是一种将多个物理传感器组合起来以产生准确“真实”的测量结果的技术,即使每个传感器本身可能都不可靠。
“什么是真的?”这就是传感器融合应该回答的核心问题。
传感器远不是完美的装置,在某些条件下,甚至会发生错误测量结果。
那么,我们如何应对不完美的传感器呢?
我们可以增加更多的传感器,因为传感器越多,盲点越小。但是为了处理由此产生的大量模糊性数据,相应的数学处理变得更加困难。而现代的传感器融合算法的出现,就刚好解决了多个传感器数据处理的问题。
传感器融合算法
1、Kalman滤波器
Kalman滤波器是最为典型的。
该算法的核心是为每个传感器设置一组“信念”因子。每一个时刻,来自上一个时刻的传感器数据都会被用来统计以提高猜测(自加归),同时传感器的质量也被判断,在预测值与传感器实测值的比较中,会估计出一个最优值进行输出。
这意味着,如果一个传感器总是给出良好的、一致的值,开始告诉你一些不太可能的事情,那么传感器的可信度等级会在几毫秒内降低,直到它重新开始讲道理。
这比简单的平均或投票要好,因为Kalman滤波器可以处理大多数传感器暂时失常出错的情况,只要一个人能保持良好的理智,那么它便能让机器人度过黑暗的时刻。
Kalman滤波器是Markov链和Bayesian推理的更一般概念的应用,这是一种数学系统,它们使用证据迭代地改进他们的猜测。这些工具是用来帮助科学本身检验思想的工具(也是我们所说的“统计意义”的基础)。
因此,可以诗意地说,一些传感器融合系统正在以每秒一千次的速度表达科学的本质。
Kalman滤波器已经被用于空间卫星的轨道站保持几十年了,由于现代微控制器能够实时运行该算法,它们在机器人学中正变得越来越流行。
2、PID过滤器
而更简单的机器人系统具有PID过滤器。这可以被认为是原始的Kalman滤波器——所有的迭代调整都被砍掉,用三个固定值代替。
即使PID值是自动调整或手动设置的,整个“调整”过程(调整、飞行、判断、重复)都是Kalman的外部化版本,由人执行信念传播步骤,但其基本原则仍然存在。
3、自定义过滤
真正的过滤系统通常是混合体,使用了以上两种滤波方式。
完整的Kalman包括对机器人有意义的“控制命令”术语,比如:“我知道我把方向盘向左转了。指南针说我往左走,GPS认为我还是直行。我相信谁?”
而当经典的最简单的控制回路Kalman滤波器应用在恒温器上时,它可以通过摆弄旋钮,等待发生什么来判断温度计和加热器的质量。
单个传感器通常无法影响真实世界,因此可以通过多个传感器,并应用算法,进行交叉检查以提高测量准确性。
传感器融合的本质——权衡各个传感器
在本文的其余部分,我们将关注物理位置,但同样的想法也适用于任何你想测量的量。你可能会认为多个相同类型的备用传感器是可行的,但这常常以不幸的方式结合了它们相同的弱点。
相比之下,混合系统才更强大。没有任何一种传感器可以让我们百分之百信任,因为每一个都只解决了一个问题,呈现不同片段,而结合起来才能看见真相。
让我们来看看在四旋翼机上使用的一些典型传感器,并讨论它们的优势、弱点以及其在传感器融合中的发挥的作用。
1、全球定位系统
GPS具有显而易见的局限性。采样误差可能有两米,偏差也会随卫星漂移。
如果你想用全球定位系统来获得精确到厘米的位置,你需要把它钉在适当的位置,并在几天内进行测量。这明显不是我们想要的。但事实上,在空中高速移动,即使是100Hz的GPS设备也不能进行时间平滑。
GPS也不能告诉你面对的方向,只告知你移动的方向。
另外,Z分辨率(高度)可以是经纬度的十分之一。所以,我们得给地面留出20米的余地。这意味着单靠全球定位系统并不能告诉你你离地面有多远,只知道你离海平面有多远。合乎逻辑的解决办法是在起飞前读取一个读数,但之后我们又有一个20米误差条。而且在飞行中,地面对GPS信号的影响是不同的,所以我们不能假设这些误差会在长期内消除——尽管它们一开始会消除!
显然一个GPS是不够的。我们不能在离地面20-40米的范围内可靠地飞行,这至少是五层楼的高度,这对于安全边际来说是一个很长的距离。在现实生活中,能在世界上任何一个有20米垂直误差的地方定位自己是非常令人惊奇的…但这并不能阻止我们撞车,如果没有差分GPS地面站,昂贵的高速接收器和一些好的拓扑图。