狀態估計與濾波

運動模型與觀測模型

當一個機器人試圖弄清楚自己身在何處時,它依靠的是給自己講的兩個小故事,寫成了方程式的樣子。第一個是運動模型,有時也叫過程模型:它是一條規則,說的是「以我現在以為所在的位置,再加上我剛發給輪子或馬達的指令,我下一刻應該到達哪裡」。以每秒半公尺向前開一秒,運動模型就預測你大約比原來的位置前進了半公尺。第二個是觀測模型,也叫量測模型:它反著來,說的是「如果我真的站在這個點上,我的感測器理應讀到什麼」。站在離牆兩公尺的地方,觀測模型就預測雷射測距儀應該報出大約兩公尺。一個模型預測世界如何變化,另一個則預測感官會對此說些什麼。

這兩個模型是幾乎每一個狀態估計器的脊梁,因為它們合在一起,能讓機器人把一個猜測拿去和現實比對。整個循環是這樣的:先用運動模型把你最好的猜測沿時間向前推進(這叫預測步),然後取一個真實的感測器讀數,用觀測模型算出這個讀數本該是多少,再輕輕撥動你的猜測,去彌合「預期」與「實際」之間的差距(這叫更新步)。關鍵在於,兩個模型都不被當作完美無缺——每一個都附帶著一句誠實的自白,承認自己通常會錯到什麼程度(運動模型配過程雜訊,觀測模型配量測雜訊),這樣機器人才知道該有多信任誰。輪子會打滑,所以運動模型靠不太住;一台好的雷射器很俐落,所以觀測模型很銳利。估計器就據此為它們各自加權。

門道在於:把模型寫得既要準到足夠有用,又要簡單到能每秒計算許多次。模型可以是一條乾淨的直線方程式,也可以是糾纏又彎曲的——一台攝影機把三維位置變成像素座標,就是出了名地彎的觀測模型。一旦方程式彎了起來,基礎的卡爾曼濾波器就不再適用,工程師便會轉而求助於它的表親,比如能隨之彎曲的擴展卡爾曼濾波器或無跡卡爾曼濾波器。但這副兩段式的骨架從不改變:一個模型管我如何運動,一個模型管我如何被看見。

一台掃地機器人的運動模型說:「我讓兩個輪子都前進了 0.2 秒,所以我大約移動了 6 公分。」它的觀測模型說:「如果我現在離櫃子 40 公分,我前方的聲納應該回彈出大約 40 公分。」而聲納實際讀到 37 公分,於是估計器對兩個模型都信一點點,把自己的位置猜測安置在兩者之間。

運動模型預測機器人去了哪裡,觀測模型預測它在那裡該感知到什麼——估計器把兩者調和起來。

記住它們方向的一個竅門:運動模型是「狀態 → 下一個狀態」(預測未來),觀測模型是「狀態 → 預期量測」(預測你會感知到什麼)。兩者都各配一個雜訊項,因為一個不肯承認任何不確定性的模型,會讓估計器危險地過度自信。

又稱
process model and measurement modelsystem model and sensor model运动模型与测量模型過程模型與量測模型