Open Source Robotics

精選高品質的開源機器人專案、工具與軟體,推動機器人社群向前發展。

Odometry

  • 又稱: Wheel Odometry, Dead Reckoning
  • 類別: State estimation & navigation › Localisation
  • 標籤: navigation, localization, sensors, fundamentals

利用車輪編碼器或攝影機等感測器資料,估計機器人隨時間的位置變化。

定義

里程計是利用感測器資料,估計機器人相對於起點隨時間變化的位置改變量。它回答一個基本問題:「我離出發的地方移動了多遠?」

最常見的里程計形式: - 輪式里程計:使用車輪編碼器計算轉數並算出行進距離。簡單又快速,但會因車輪打滑、表面不平與機械誤差而累積誤差。這是最基本的機器人定位形式。 - 視覺里程計(VO):透過追蹤攝影機影格之間的視覺特徵來估計運動。比較不受車輪打滑影響,但運算成本高,也會受光線以及缺乏紋理的環境影響。 - 慣性里程計:使用 IMU(加速度計 + 陀螺儀)資料估計運動。更新頻率非常快,但因為對帶雜訊的加速度資料做兩次積分,漂移得很快。 - 雷射里程計:比對連續的光達(LiDAR)掃描來估計運動。在結構化環境中很精確。

所有里程計方法的一項重大限制是漂移:微小的誤差會隨時間累積,使估計的位置逐漸偏離實際位置。只依賴輪式里程計的機器人,可能以為自己走的是直線,實際上卻已經偏離了路線。

為了對抗漂移,里程計通常會與下列方法結合: - SLAM:利用迴環偵測修正累積的漂移。 - 感測器融合:使用擴展卡爾曼濾波器 (EKF) 或因子圖最佳化,結合多種里程計來源(輪式 + 視覺 + 慣性)。 - 外部參考:GPS(戶外)或基準標記(室內)提供絕對位置校正。

里程計是機器人導航的基礎:沒有它,機器人就無法感知自己在世界中的運動。

為何重要

里程計是機器人對自己移動了多遠的估計,由累加自身的運動量測值計算而來。它是成本最低的位置資訊,也是其他一切據以修正的基礎:導航堆疊預期有連續的里程計資料流,SLAM 則把它當作要精煉的先驗。它的決定性特性是會漂移:誤差會不斷積分、永遠不會被抵銷,這就是為什麼里程計總是要搭配某種量測絕對位置的方法。

主要應用

  • 在兩次絕對位置更新之間進行航位推算
  • 提供 SLAM 與粒子濾波器所精煉的運動先驗
  • 閉迴路驅動控制的速度回饋
  • 對接等短距離操控,平順度比全域精度更重要
  • 打滑偵測,比較輪式里程計與 IMU 或視覺的估計值
  • 記錄行進距離,用於維護與工作週期追蹤

實際應用

差速驅動機器人會計算車輪編碼器的刻數,並把它們積分成位姿,這個方法運作得很好,直到車輪在光滑地面上打滑,或機器人被人用手推了一下。在 ROS 2 中,這表現為 odom 與 map 座標系的區別:odom 平順且連續但會漂移,map 經過修正且為絕對值,但在定位器更新時會跳動。理解這個區分,就能明白為什麼控制器被設定為使用 odom 來求短期平順,而導航目標則以 map 表示。

常見誤解

  • 里程計告訴你機器人在哪裡:它告訴你的是機器人從起點以來移動了多遠,而且帶有累積誤差
  • 更好的編碼器能消除漂移:車輪打滑、輪胎壓縮與地面不平造成的誤差,是任何編碼器都偵測不到的
  • 里程計與定位是同一件事:前者對運動做積分,後者則根據地圖或外部參考進行修正
  • 漂移只是長期才有的問題:單一車輪打滑就可能在幾秒內造成很大的航向誤差

誰需要了解

  • 任何第一次啟用移動底盤的人
  • 設定使用里程計之導航堆疊的開發者
  • 診斷機器人地圖慢慢旋轉或歪斜問題的工程師
  • 想了解為何單靠航位推算永遠不夠的學生
  • 任何比較輪式、視覺與慣性里程計來源的人

相關技術

  • 車輪編碼器(增量式與絕對式)
  • 慣性量測單元 (IMU)
  • 視覺里程計(VO)與視覺慣性里程計(VIO)
  • 擴展卡爾曼濾波器 (EKF) 與無跡卡爾曼濾波器(UKF)
  • 光達(LiDAR)里程計(例如 LOAM、LIO-SAM)
  • 用於漂移修正的 GPS/GNSS
  • 機器人定位(AMCL、粒子濾波器)
  • 航位推算

相關術語

  • Visual Odometry
  • SLAM
  • IMU
  • Encoder
  • Sensor Fusion
  • ROS

相關專案

  • 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
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
  • ROS Motion Planning: One repo implementing 40+ classic and learning-based robot path planners as ROS plugins
  • AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
  • MRPT: Comprehensive C++ toolkit for mobile robotics, SLAM, and sensor-based navigation

影片

  • What is Odometry? An Introduction to the Essence of Robot Odometry: Rex Liu

本網站需要 JavaScript 才能正常運作。請啟用 JavaScript 以瀏覽我們的開源機器人專案。