在工程領域,只要涉及到信號處理問題,都繞不開一個人,那就是卡爾曼,雖然卡爾曼提出的估計理論已經過去八九十年之久,但是在如今的資訊時代,卡爾曼濾波依舊是機器人導航中最為常見的一種算法。
我們都知道無論是自動駕駛汽車還是自主飛行的無人機,都需要知道自己的位置、速度、航向等信息才能實現自動駕駛、自主飛行。那我們是如何得到這些位置、速度、航向的信息呢,一般有兩種形式:一種是通過傳感器進行測量,還有一種是通過運動狀態模型進行預估。
傳感器測量的方式有多種多樣,比如測量位置信息的傳感器有GPS、視覺傳感器、雷達等。但我們都知道傳感器測量出來的數據是存在誤差的,假如你有一個傳感器GPS,這時候你得到的GPS信息:經度、緯度、高度跟實際值是有誤差的,而這個誤差如果剛好符合正態分布,那就能通過卡爾曼估計得到一個最優解。
假如你有兩個傳感器,測的都是同一個位置信號,可是它們每次的讀數都不太一樣,應該怎麼辦呢?最直觀的方法是取平均值,但如果你知道其中一個傳感器要貴很多,測量得到的值也要更加準確,那取平均是不是對貴的那個傳感器不公平?有沒有更好的辦法?當然有了,那就是不同權重的平均,也就是加權平均。
如何進行加權?我們還是假設兩個傳感器的誤差都符合正態分布,而且你通過測量知道這兩個正態分布的方差,利用這兩個方差值,我們可以得到一個「最優」的權重分配。當我們擁有多個傳感器來測量相同狀態時,方法也是一樣的。
我們上面提到了,除了傳感器可以測量我們的狀態量之外,還有一種方式是通過運動模型的預估,比如,已知上一秒飛機的位置,和這一秒內飛機的運動速度,我們是不是就可以根據最簡單的δp=v*t來得到這一秒內飛機的位置變化,疊加上一秒鐘飛機的位置就可以知道現在飛機的位置信息。但數學模型算出來的值也沒有那麼準確,這時候我們就可以把數學模型算出來的值和傳感器測量得到的值進行加權平均。
卡爾曼濾波是一種最小方差無偏估計,要求噪聲誤差滿足正態分布,而實際環境中,大部分噪聲誤差都可以近似為正態分布,這也是為什麼卡爾曼濾波能夠很好地發揮作用的原因,卡爾曼濾波的最大缺陷是只適用於線性系統,而實際對象中大部分都是非線性系統,對於非線性系統,在卡爾曼濾波的基礎上衍生出了擴展卡爾曼濾波算法,兩者在原理上基本相同,關於擴展卡爾曼濾波算法有時間再做論述。
本篇內容就先到這裡,後面有時間會再更新三到四篇卡爾曼濾波的相關內容:
1、卡爾曼濾波公式的簡單推導說明,舉例說明卡爾曼濾波的實現過程;
2、卡爾曼濾波的matlab代碼或者c++代碼的具體實現和解析說明;
3、擴展卡爾曼濾波的推導和具體實現方法。
Long-press QR code to transfer me a reward
不要人誇好顏色,只留清氣滿乾坤
As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.