JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

清理与融合信号:采样、滤波与融合

从抖动的数字流到一个可信的估计:多久采样一次、如何平滑,以及如何把多个传感器合并成一个答案。

多久看一次:采样与奈奎斯特法则

机器人传感器并不会给你一条平滑的曲线,而是每隔一段时间给你一张快照。把连续的物理量变成一串等间隔的数字,这个过程叫作采样,而采样率就是你每秒抓取多少张快照,单位是赫兹(Hz)。轮式编码器可能每秒被读取一千次,而GNSS接收机可能每秒只报告十次。选择这个速率,是任何传感系统中最早要做的实际决定之一。

如果采样太慢,你就会错过那些快速的摆动,而它们会伪装成缓慢的摆动重新出现——一个从来不曾真正存在的假信号。这种视觉骗局叫作混叠。防止它的法则就是奈奎斯特准则:要诚实地捕捉一个信号,你的采样速度至少要达到信号中最快变化的两倍。想捕捉每秒摆动五十次的振动?那就用每秒一百次以上的速度采样——而在实际中,还要远高于这个数。

所以速率并不是随便选的。采样太慢,会带来混叠,以及一个反应迟钝的机器人;采样太快,则浪费算力、占满内存,还会引入超出你所能利用的电气噪声。诚实的做法是:先弄清楚你真正关心的最快运动,再从容地越过它之上的奈奎斯特下限。

抚平抖动:低通滤波器

即便采样正确,每一次读数也都带着传感器噪声——叠加在真实值之上的微小随机抖动。把一个静止的加速度计画出来,那条线是毛糙的,而非平直的。经典的解药是低通滤波:一套配方,让缓慢的、真实的运动通过,同时挡住快速的、随机的毛刺。这个名字说得很直白——低频通过,高频被压低。

最简单的版本,就是你在精神上早已熟悉的滑动平均:与其只信任最新的那个数字,不如把它与不远的过去温和地融合。一种常见的单行写法会保留一个平滑值,并让它朝着每个新读数轻轻偏移一点。这个偏移越小,输出就越平静——也就越固执地无视噪声。

# Exponential low-pass filter, one line of state
# alpha in (0,1): small alpha = smoother but laggier
smoothed = alpha * new_reading + (1 - alpha) * smoothed
一个指数低通滤波器:每个输出大部分来自旧的平滑值,再加上一小口最新的读数。

两个弱答案,一个强答案:传感器融合

滤波清理的是一条数据流。但没有哪个单独的传感器样样都好,更深的诀窍在于把好几个组合起来。这就是传感器融合:把互补传感器的读数合并起来,让每一个去覆盖另一个的盲点,得到一个比任何单独传感器都更好的估计。

教科书式的一对就住在IMU里面。陀螺仪能又快又平滑地测量转动速率,但把它的读数累加起来去追踪角度,会让微小的误差不断堆积,于是估计会慢慢游走——这就是漂移。与此同时,加速度计能凭重力感知哪边朝下,给出一个永不漂移、却跳动剧烈、在快速运动中毫无用处的倾角。把它们融合——短期靠陀螺仪、长期用加速度计来锚定——你就得到一个既灵敏又稳定的姿态。

同样的模式在机器人学里反复出现。轮式编码器给出平滑、高频的运动,却会随距离漂移;GNSS给出永不漂移的绝对位置,却来得很慢,还会在桥下或室内失联。把它们融合,一台配送机器人即使穿过隧道也能保持笃定的位置——因为GNSS沉默时由编码器扛着它,而GNSS一回来就立刻纠正它。

前沿:学习式融合与视觉惯性融合

经典的卡尔曼滤波器假设你能为每个传感器如何出错写下干净的方程。真实的相机、激光雷达深度相机比这要混乱得多,于是现代系统朝两个方向发力。其一是把相机图像与IMU数据融合成视觉惯性里程计——惯性传感器去平滑掉快速的急动和短暂的视觉中断,而相机则消除长期的漂移。许多无人机和头显正是这样,在毫无GNSS的情况下知道自己身在何处。

另一个方向是学习式融合:不再手写误差模型,而是用海量真实数据训练一个神经网络,去直接组合原始的传感器数据流。它能吸收那些古怪、难以书写的怪癖——雨中真实激光雷达的怪癖,或眩光里相机的怪癖——代价是需要数据,并且在失败时更难解释。

退一步看,整章构成了一条流水线。每个传感器——无论是感受机器人自身身体的本体感知,还是观察外部世界的外感知——都递上一条原始而嘈杂的数据流。采样决定你多久看一次,滤波擦去抖动,融合则把这些数据流编织成一个关于机器人身在何处、周遭为何的可信估计。这个干净的估计,正是感知、规划与控制接下来要在其上构建的东西。