视觉惯性里程计
视觉惯性里程计(VIO)是机器人追踪自身运动的一种办法,它融合了两种截然不同的感觉:摄像头看到了什么,以及它内在的运动感觉到了什么。摄像头注视着世界从眼前滑过——当你向前走时,近处的物体飞快地掠过,远处的物体却几乎不动,机器人从这种流动中就能读出自己是怎么移动的。而惯性传感器则像电梯启动时你肚子里的那股感觉:它直接感知加速和转动,无需看任何东西。VIO 把这两者结合起来,于是机器人只需一个小摄像头和一块微小的运动芯片,就能估计自己去过哪里,不需要 GPS。
两种感觉各自补上对方的短板,这正是关键所在。摄像头能给出丰富、细致的运动读数,但当画面模糊、昏暗,或对着一面没什么可追踪的空白墙壁时就会卡壳;它还相对慢,每秒只能给出几十帧画面。惯性传感器则快如闪电,在漆黑中也能工作,但单凭它自己漂移得很厉害,因为它必须把读数累加起来,小误差在几秒之内就滚成雪球。两者融合在一起,反应快的惯性传感器把估计平滑地带过那些空当和模糊的瞬间,而摄像头则一次次把它锚定回真实存在的东西上,把漂移压住。
把它和单纯的车轮里程计对照一下很有意思——后者靠数车轮转了多少圈来估计运动。车轮里程计简单又便宜,但凡是车轮做了而车身没做的事都会把它骗倒——在冰上打滑、在泥里空转、或者侧滑——而且它只适用于靠轮子滚动的东西。视觉惯性里程计根本不需要轮子,所以它能用于飞行的无人机、手里拿着的手机、戴在脸上的头显,也不会被打滑的车轮所欺骗;代价是它需要更多的计算能力,以及一个有足够可见纹理可供追踪的场景。
一架送货无人机在 GPS 失效的室内悬停。它朝下的摄像头注视着地板的纹理从眼前滑过,与此同时它的 IMU 感受着每一阵把它推来推去的气流,靠把两者融合,它在空中稳稳地保持住位置——这是任何一种感觉单独都办不到的。
VIO 让无人机通过把所见与所感融合在一起,在室内保持住位置。
这里的「惯性」指的是惯性测量单元(IMU)——就是你手机里那块能感知倾斜和晃动的小小加速度计加陀螺仪芯片。正是它,让 VIO 成为视觉与体感运动的融合,而不只是单纯的视觉。