許多有缺陷的感測器,一個好答案
機器人上沒有任何單一感測器能講出全部真相。輪式編碼器在每一瞬間都很精確,但在濕滑地面上會打滑。IMU 能在毫秒內對運動做出反應,卻會慢慢漂移。攝影機能看到豐富的細節,但在昏暗的走廊裡會失明。感測器融合的思路,就是把許多有缺陷的感測器組合起來,讓每個感測器的長處彌補另一個的短處,從而得出一個比任何單一感測器都更好的估計。
貫穿整篇指南的例子,是一臺融合三種來源的輪式機器人:輪式里程計(計算車輪轉數)、IMU(量測加速度與旋轉)以及視覺(追蹤攝影機影像中的地標)。編碼器和 IMU 更新很快但會漂移;攝影機更新較慢,卻能把機器人重新拴回世界中可識別的特徵上。一個好的估計器會每秒多次把它們編織在一起。
把這一切黏合起來的數學,是一個不斷維護機器人位置信念的濾波器。每一次感測器讀數都會推動這個信念,而關鍵在於,濾波器會按照對每個讀數的信任程度來加權。一個可信的感測器會強力拉動估計;一個嘈雜的感測器則幾乎推不動它。融合不是求平均,而是加權信任。
航位推算為何會無止境地漂移
航位推算的意思,是從你上一個已知位置出發,把一連串細小的運動累加起來,從而估計新位置——車輪轉數、航向變化、對加速度的積分。它極其自給自足:不需要 GPS,不需要地圖,只用內部量測。輪式里程計就是經典例子。問題在於,每一步都帶著一點點誤差,而航位推算會把這些誤差永遠地一層層疊加上去。
由於誤差不斷累積、永遠得不到糾正,估計便會無界漂移:機器人開得越久,它猜測的位置就離現實越遠。一個打滑半個百分點的車輪、一個帶著微弱偏置的陀螺儀、一個略微偏大的車輪半徑——這些單獨看都不嚇人,但在數千步上累積起來,就會把機器人推離航線好幾米。這是任何純相對感測器的根本弱點。
解藥是一個絕對參考——一種繫於固定外部世界、而非繫於機器人自身過去的量測。GNSS/GPS 給出全局位置。一個被識別出的地標,或一處機器人此前見過的地方,會把它釘在地圖上。每一次絕對定位都會重置累積誤差,所以一旦這樣的量測到來,漂移就停止增長。這正是我們要把快卻會漂移的里程計,與慢卻接地的視覺融合起來的原因。
陷阱門診:濾波器是怎麼出錯的
一個卡爾曼濾波器的好壞,完全取決於你餵給它的雜訊數值,而調好這些數值,正是大多數真實系統翻車的地方。最常見的錯誤,是把兩種雜訊搞混。過程雜訊描述的是你對自己運動模型的不信任程度——機器人可能在多大程度上偏離你的預測所期望的樣子。量測雜訊描述的,則是你對每個感測器讀數的不信任程度。它們處在數學中不同的位置,必須各自獨立地設定。
把這個平衡搞錯,濾波器會以相反的方式失常。把過程雜訊設得太低,濾波器會變得固執——它太相信自己的預測,以至於無視感測器,在突然轉彎時落在後面。把量測雜訊設得太低,濾波器會變得抖動——它追逐每一個嘈雜讀數而顫抖。這兩個旋鈕彼此權衡:真正重要的是它們的比值,是這個比值決定了卡爾曼增益如何在預測與量測之間分配信任。
第二個經典陷阱,是過度信任一個有偏置的感測器。如果一個陀螺儀帶著穩定的偏置,你卻把它標為低雜訊,濾波器就會樂呵呵地相信一個始終出錯的感測器,把整個估計往偏置的方向拉。濾波器假定雜訊是隨機的、以零為中心的;一個恆定的偏移違背了這個假定,悄悄地毒化了答案。偏置必須被標定掉,或被建模為狀態的一部分——絕不能僅僅靠「信任」把它抹平。
第三個、也是最陰險的失敗,是過度自信的協方差。協方差矩陣是濾波器對「自己有多不確定」的自我匯報。如果它收縮得太厲害——因為過程雜訊設得太小,或者因為一個沒建好的非線性騙過了數學——濾波器就會宣布自己幾乎確定,從此徹底不再聽感測器的話。好的讀數被當作離群點拒之門外,估計鎖死在一個錯誤的值上,於是濾波器一邊發散,一邊大聲堅稱自己是對的。
估計技術的下一步走向
實用估計技術的前沿,是感測器之間更緊的耦合。視覺慣性里程計在很深的層次上融合攝影機與 IMU:IMU 填補攝影機各幀之間的快速運動,攝影機則糾正 IMU 的漂移,於是這一對組合遠比任一單獨使用都更穩健。在緊耦合中,兩個感測器的原始量測進入同一個共享的優化,而不是各自先產生一個獨立的猜測、事後再合併。
下一次飛躍,是把估計摺疊進 SLAM——機器人一邊建構地圖,一邊在地圖中定位自己。認出一處以前到過的地方,會把累積的漂移一下子拉回正軌——這是一種強有力的絕對糾正,它來自機器人自己的記憶,而非 GPS 這類外部基礎設施。估計與建圖不再是兩個分開的問題,而成了同一個問題的兩半。
無論架構如何,底下的紀律始終不變。一個健康的濾波器,會尊重每個感測器能測與不能測的東西,對自己的不確定度保持誠實的記帳,並且絕不讓「圖省事」壓過這份誠實。每當你搭建或除錯一個濾波器時,手邊都備一張簡短的檢查清單。
- 把雜訊分開:獨立地設定過程雜訊(對運動模型的信任)與量測雜訊(對每個感測器的信任),並檢查它們的比值。
- 融合之前先標定掉偏置:一個始終出錯的感測器必須被糾正或建模,絕不能只是去信任它。
- 警惕過度自信:如果協方差收縮得比現實所能支撐的更快,濾波器就會拒絕好資料——盯住新息。
- 加入一個絕對參考:給快速的相對感測器配上至少一個能重置累積漂移的來源(GPS、地標、已知地點)。