Extended Kalman Filter
- 又稱: EKF, extended KF
- 類別: State estimation & navigation › Localisation
- 標籤: state-estimation, sensor-fusion, localization, navigation, filtering, SLAM
卡爾曼濾波器的非線性擴展,在每個時間步於目前估計值附近將系統模型線性化,以估計動態系統的狀態。
定義
擴展卡爾曼濾波器 (EKF) 是一種狀態估計演算法,它擴展了經典的卡爾曼濾波器,以處理非線性的系統動力學與觀測模型。標準卡爾曼濾波器能為帶有高斯雜訊的線性系統提供最佳狀態估計,但大多數真實世界的機器人系統都是非線性的:輪式里程計涉及三角函數,攝影機觀測涉及透視投影,IMU 積分則涉及旋轉的數學。EKF 的解法是使用一階泰勒展開(雅可比矩陣),在目前的狀態估計附近將非線性函數線性化,再對線性化後的系統套用標準卡爾曼濾波器方程式。
這個演算法以兩個交替的步驟運作。預測步驟使用系統的動態模型,把狀態估計及其不確定性向前推進。對移動機器人來說,這可能是利用車輪編碼器讀數與運動學模型,預測機器人新的位置與朝向。更新步驟則納入新的感測器量測來修正預測的估計,依預測與量測的相對不確定性為修正加權。雜訊較低的感測器在修正中獲得較高的權重。
EKF 維護一個狀態向量(位置、速度與朝向等量的最佳估計)與一個共變異數矩陣(代表該估計的不確定性)。隨著感測器提供更多資訊,共變異數通常會縮小,表示對估計的信心增加。當機器人經過缺乏明顯感測器特徵的區域時,共變異數會變大,反映不確定性增加。
讓 EKF 易於計算的線性化,也帶來了它的主要限制:只有在非線性程度相對於不確定性而言較輕微時,它才運作良好。如果狀態估計離真實狀態很遠,或系統高度非線性,一階近似就會失效,濾波器可能發散。對於這些情況,無跡卡爾曼濾波器(UKF)與粒子濾波器是更好的替代方案,但運算成本較高。
儘管有這些限制,EKF 憑藉其運算效率、易於實作以及數十年來經過驗證的可靠性,仍是機器人狀態估計的主力。它是大多數 GPS/INS 導航系統、視覺慣性里程計流程與機器人定位堆疊的骨幹。EKF-SLAM 變體能同時估計機器人的位姿與地標的位置,讓機器人在定位自身的同時建立地圖。
為何重要
擴展卡爾曼濾波器 (EKF) 是讓機器人知道自己在哪裡的演算法。每一台移動機器人、無人機與自駕車,都需要把帶雜訊的感測器資料融合成對自身位置、速度與朝向的一致估計。EKF 能可靠、有效率且即時地做到這一點,使它成為整個機器人學中實務上最重要的演算法之一。
主要應用
- 移動機器人定位:融合輪式里程計、IMU 與 GPS 來估計位置
- 無人機狀態估計:結合加速度計、陀螺儀、磁力計與氣壓計的資料
- 視覺慣性里程計:融合攝影機與 IMU 量測來估計自身運動
- EKF-SLAM:使用擴展卡爾曼濾波器 (EKF) 的同步定位與建圖
- GPS/INS 導航:結合衛星定位與慣性導航,實現強健的定位
- 電池狀態估計:追蹤電動車與機器人的電量與健康狀態
實際應用
在典型以 ROS 為基礎的移動機器人上,robot_localization 套件提供一個立即可用的 EKF 節點,把輪式里程計、IMU 資料以及選用的 GPS 融合成平順的位姿估計。工程師設定要使用哪些感測器、每個感測器觀測哪些狀態變數,其餘的就交給 EKF:在量測之間進行預測、在新資料到達時修正,並維持一致的不確定性估計。
對於自動駕駛這類要求更高的應用,EKF 會以不同的頻率融合來自光達(LiDAR)、攝影機、雷達、GPS 與 IMU 的資料:光達 10 Hz、IMU 200 Hz、GPS 1 Hz。EKF 的預測步驟以最快的感測器頻率(IMU)執行,更新步驟則在各感測器送來新資料時非同步進行。這種多頻率融合是 EKF 在實務上的強項之一。
常見誤解
- EKF 能為非線性系統提供最佳估計:它只是近似最佳;線性化會引入可能累積的誤差
- EKF 已經過時,被粒子濾波器取代:由於 EKF 對輕度非線性系統的效率與可靠性,它在實務上仍是使用最廣泛的濾波器
- 必須懂所有的數學才能使用 EKF:雖然深入理解有幫助,但 robot_localization(ROS)等函式庫已提供經過充分測試的 EKF 實作
- EKF 只能融合兩個感測器:EKF 在量測更新步驟中本來就能處理任意數量的感測器模態
誰需要了解
- 實作定位與導航系統的移動機器人工程師
- 從事狀態估計與飛行控制的無人機開發者
- 融合多個感測器資料流的自駕車工程師
- 建置建圖與定位系統的 SLAM 研究人員
- 學習基礎估計理論的機器人學學生
相關技術
- 卡爾曼濾波器
- 無跡卡爾曼濾波器
- 粒子濾波器
- 雅可比矩陣
- 共變異數矩陣
- 高斯分布
- 貝氏估計
相關專案
- PCL: Industry-standard C++ library for point cloud processing in robotics perception
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
- FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
- DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
- GTSAM: Factor-graph optimization library powering many modern SLAM backends
影片
- Visually Explained: Kalman Filters: Visually Explained
- The Extended Kalman Filter (EKF): Why Taylor Expansions are Awesome: James Han