狀態估計與濾波

航位推算

航位推算,是從一個你確知的地方出發,把此後所做的每一步移動都累加起來,從而推斷自己此刻在哪裡。你取定已知的起點,然後追蹤自己朝著哪個方向、走了多遠,並把這筆帳一路往前記:「我從碼頭出發,以這個速度向北走了十分鐘,然後轉向東又走了五分鐘。」單憑這些片段,你就能在海圖上標出自己當前的位置,全程不必看見任何地標,也不必向外界求助。水手們用它跨越大洋長達數百年,遠在衛星出現之前,就靠羅盤航向和估計的航速來推定船的位置。

整套方法都依賴於一個脆弱的事實:你從來不去測量自己實際在哪,只去測量自己相對上一次猜測發生了怎樣的變化。於是你航向或距離上的每一個誤差,都會被永久地烙進估計裡,再被帶進它之後的所有步驟。羅盤讀數差了那麼一絲、航速略微高估了一點、有一股沒算進去的洋流——這些都不會自行得到糾正,而由於每一個新位置都搭建在上一個之上,這些小錯誤會不斷累積。你走得越久,估計就越偏離真相,就像一句悄悄話,每被轉述一次就走樣多一點。

儘管有這個缺陷,航位推算卻無處不在,因為它有著了不起的自給自足:它完全不需要任何外部訊號,只需對自己的航向和運動有所知覺。它是你手機在隧道裡 GPS 中斷時所用的後備手段,是看不見天空的潛艇的主心骨,也是機器人里程計背後的原理。對付它漂移的標準做法,是定期猛地校準回某個已知的真相——一個認得出來的地標、一次新的 GPS 鎖定、一回觀星定位——這會把累積的誤差一筆勾銷,讓航位推算從堅實的地基上重新開始。

在一條長隧道裡,即便沒有衛星訊號,你手機的地圖仍顯示你在沿路前進。從隧道口你最後已知的位置開始,它一直靠速度和方向給你的路徑做航位推算——你或許會注意到,等你駛出隧道時,那個藍點已經偏離道路一點點了。

當外部訊號消失時,航位推算讓位置估計不至於斷掉——但要留意漂移悄悄爬上來。

里程計本質上就是機器人憑自己的運動感測器來做的航位推算。這兩個詞大量重疊;「航位推算」是更古老、更寬泛的導航概念,而「里程計」通常指機器人版本,即把感測器測得的增量累加起來。

又稱
DR推算定位航位推测