6.3 传感器融合(Sensor Fusion):微弱物理信号的数字校准

拿起手机,打开地图导航,屏幕上那个代表你的小箭头会随着你转身而同步转动;把手机横过来,视频画面自动铺满屏幕;玩一款体感赛车游戏,轻轻倾斜机身,赛车就会拐弯。这些动作看起来稀松平常,背后却有一个不太容易察觉的难题:手机里负责感知姿态的几颗传感器,单独看都不可靠。手机必须把几份各有缺陷的测量结果合在一起,才能算出“机身此刻朝向哪里”。这项工作叫作传感器融合(Sensor Fusion)。

6.3.1 两位各有短板的“证人”

先认识两位主角。它们都属于微机电系统(MEMS,Micro-Electro-Mechanical Systems),是在硅片上加工出微米级机械结构的微型器件,通常只有米粒大小,焊在主板上并不起眼。

陀螺仪(Gyroscope)测量的是旋转速度,也就是机身每秒转过多少角度。它的内部有一个持续振动的微小质量块,机身一旋转,质量块受到科里奥利力的作用发生偏移,电路把这个微弱的偏移转换成电信号。陀螺仪的优点是灵敏、反应快,手腕稍微一抖它就能察觉。

问题在于,陀螺仪给出的只是“转得多快”,要知道“转到了哪里”,就得把每一刻的转速累加起来,数学上叫积分。每次测量都带有一点点误差,这些误差会在累加中不断叠加。好比蒙着眼睛数步子走路,每一步都差一点点,走上几百步,偏差就大到无法忽视。这种现象叫作积分漂移。如果只靠陀螺仪,手机静止放在桌上几分钟,算出的姿态也可能慢慢“自己转起来”。

**加速度计(Accelerometer)**测量的是加速度。地球重力始终竖直向下,所以手机静止时,加速度计测到的就是重力方向,由此能判断机身哪一侧朝下。这个参照来自地球本身,长期稳定,不会漂移,这是它的长处。

它的短板同样明显。人走路、跑步、坐车时,机身会不断晃动,这些机械振动产生的加速度和重力混在一起,加速度计分辨不出哪部分是重力、哪部分是晃动。在一辆颠簸的公交车上,它给出的“向下”方向会跳来跳去。另外,单靠重力只能判断俯仰和横滚,无法知道手机绕竖直轴朝向东还是朝向西。

补上这一块的是第三位成员地磁传感器(Magnetometer),它感知地球磁场,相当于一枚电子指南针,能提供水平方向的长期参照。但它也容易受到周围金属、扬声器磁体和电流的干扰。

传感器测量内容优点缺陷
陀螺仪旋转角速度高频灵敏,响应快积分后误差累积,产生漂移
加速度计线加速度(含重力)有重力作参照,长期稳定易受行走、颠簸等机械噪声干扰
地磁传感器地球磁场方向提供水平朝向参照易受附近磁性物体干扰

6.3.2 让证人互相“对口供”:扩展卡尔曼滤波

三位证人的特点刚好互补:陀螺仪短时间内很准,时间一长就跑偏;加速度计和地磁传感器每一瞬间都有噪声,长期平均下来却很稳。融合的思路就是短期信陀螺仪,长期由加速度计和地磁传感器纠偏。

具体执行这套思路的常用算法是扩展卡尔曼滤波(EKF,Extended Kalman Filter)。可以把它想象成一位经验丰富的船长在海上定位:他先根据航速和航向推算船现在大概在哪里(对应陀螺仪的积分预测),再拿六分仪观测星星得到一个位置(对应加速度计和地磁的测量)。两个结果不一致时,船长不会简单地取平均,而是看谁更可信:风浪大、星星看不清,就多相信推算;推算已经跑了很久、误差积累多了,就多相信观测。

卡尔曼滤波做的正是这种概率加权。它为每个估计值都维护一个“不确定程度”,每接收一批新数据,就按照各方的可信度分配权重,算出一个综合结果,同时更新自身的不确定程度。手机剧烈晃动时,加速度计的权重自动降低;静止时,它又能把陀螺仪悄悄积累的漂移拉回来。“扩展”二字是因为姿态旋转涉及非线性的数学关系,需要在每一步做局部线性近似,才能套用卡尔曼滤波的框架。

融合的输出通常是一组四元数(Quaternion),即用四个数描述三维空间中的任意旋转。相比常见的“俯仰、横滚、偏航”三个角度,四元数在机身接近竖直等特殊姿态时不会出现计算卡死的问题,也便于连续插值,因此被游戏引擎、导航软件和增强现实应用广泛采用。

6.3.3 谁来做这份苦差事:Sensor Hub

融合计算要不停地运行,每秒执行 100 到 200 次(即 100Hz~200Hz)。如果交给主处理器的大核来做,几乎等于不让它休眠,电量会被迅速消耗。

因此手机设置了一个专门的传感器中枢(Sensor Hub)。它是一颗独立的低功耗微控制器,或集成在 SoC 内部的常开小核心,专门负责采集各路传感器数据并运行 EKF。它只在微安级的电流下工作,功耗远低于主处理器的大核。主处理器可以安心休眠,只有在需要时才向 Sensor Hub 读取已经算好的四元数。这种分工延续了第三章所说的“专芯专用”原则,也和第五章熄屏时的休眠机制相衔接:计步、抬手亮屏这类功能在熄屏状态下仍能工作,靠的正是这颗小芯片。

6.3.4 小结

传感器融合说明了一个系统设计中的常见做法:没有哪一个元件是完美的,工程师把各自的缺陷摆出来,让它们互相校正,最终得到比任何单一元件都可靠的结果。从硅片上振动的微小质量块,到 Sensor Hub 里每秒上百次的概率运算,手机把这些微弱的物理信号整理成了可信的空间姿态。姿态数据关系到使用体验,而支付密码、指纹这类信息关系到用户的财产和隐私,它们需要更严格的保护,这就是下一节要讨论的硬件安全隔离区。