狀態估計與濾波

視覺慣性里程計

視覺慣性里程計(VIO)是機器人追蹤自身運動的一種辦法,它融合了兩種截然不同的感覺:攝影機看到了什麼,以及它內在的運動感覺到了什麼。攝影機注視著世界從眼前滑過——當你向前走時,近處的物體飛快地掠過,遠處的物體卻幾乎不動,機器人從這種流動中就能讀出自己是怎麼移動的。而慣性感測器則像電梯啟動時你肚子裡的那股感覺:它直接感知加速和轉動,無需看任何東西。VIO 把這兩者結合起來,於是機器人只需一個小攝影機和一塊微小的運動晶片,就能估計自己去過哪裡,不需要 GPS。

兩種感覺各自補上對方的短板,這正是關鍵所在。攝影機能給出豐富、細緻的運動讀數,但當畫面模糊、昏暗,或對著一面沒什麼可追蹤的空白牆壁時就會卡殼;它還相對慢,每秒只能給出幾十幀畫面。慣性感測器則快如閃電,在漆黑中也能工作,但單憑它自己漂移得很厲害,因為它必須把讀數累加起來,小誤差在幾秒之內就滾成雪球。兩者融合在一起,反應快的慣性感測器把估計平滑地帶過那些空檔和模糊的瞬間,而攝影機則一次次把它錨定回真實存在的東西上,把漂移壓住。

把它和單純的車輪里程計對照一下很有意思——後者靠數車輪轉了多少圈來估計運動。車輪里程計簡單又便宜,但凡是車輪做了而車身沒做的事都會把它騙倒——在冰上打滑、在泥裡空轉、或者側滑——而且它只適用於靠輪子滾動的東西。視覺慣性里程計根本不需要輪子,所以它能用於飛行的無人機、手裡拿著的手機、戴在臉上的頭顯,也不會被打滑的車輪所欺騙;代價是它需要更多的計算能力,以及一個有足夠可見紋理可供追蹤的場景。

一架送貨無人機在 GPS 失效的室內懸停。它朝下的攝影機注視著地板的紋理從眼前滑過,與此同時它的 IMU 感受著每一陣把它推來推去的氣流,靠把兩者融合,它在空中穩穩地保持住位置——這是任何一種感覺單獨都辦不到的。

VIO 讓無人機透過把所見與所感融合在一起,在室內保持住位置。

這裡的「慣性」指的是慣性測量單元(IMU)——就是你手機裡那塊能感知傾斜和晃動的小小加速度計加陀螺儀晶片。正是它,讓 VIO 成為視覺與體感運動的融合,而不只是單純的視覺。

又稱
VIO视觉惯性里程视惯里程计