Visual Odometry
- 又稱: VO, Camera Odometry
- 類別: State estimation & navigation › Localisation
- 標籤: perception, navigation, cameras, localization
透過在連續影像中追蹤視覺特徵來估計機器人或攝影機的運動,不需車輪編碼器或 GPS 就能提供位置更新。
定義
視覺里程計(VO)透過分析連續影像之間的變化來估計機器人或相機的運動。不同於量測車輪轉動的輪式里程計,VO 從跨畫面追蹤的視覺特徵中擷取運動資訊。流程包括特徵偵測、特徵匹配或追蹤、運動估計,以及選用的局部最佳化。VO 在車輪打滑或車輪編碼器不可靠的環境中特別有用。與 IMU 資料結合後即成為視覺慣性里程計(VIO),提供更穩健的追蹤。
為何重要
視覺里程計透過觀察世界如何從攝影機前滑過,估計機器人往哪個方向移動了多遠。在常用的方法都派不上用場的地方,它最為重要:室內與地下沒有 GPS,而在足式或履帶式機器上,輪式里程計毫無意義。攝影機也比光達(LIDAR)便宜、輕巧得多,這就是為什麼大多數無人機與手持追蹤都以視覺里程計為基礎。它的弱點是與生俱來的:它估計的是變化,所以誤差會累積,而且它需要視覺紋理才能追蹤。
主要應用
- 在無法使用 GPS 或 GPS 不可靠的地方,進行無人機定點懸停與導航
- 足式機器人的里程計,因為那裡不存在以車輪為基礎的量測
- AR 與 VR 頭戴裝置的追蹤,是消費性硬體中的同一個問題
- 地下、室內與水下巡檢機器人
- 行星探測車,視覺里程計可修正鬆軟地面上的車輪打滑
- 為視覺 SLAM 打底,它建立在同樣的特徵追蹤之上
實際應用
實用的系統幾乎都是視覺慣性的:攝影機提供不易漂移的結構,IMU 則在動態模糊、快速旋轉與特徵消失的時刻撐住估計。這就是在室內定點懸停的無人機,以及追蹤房間的 VR 頭戴裝置內部所執行的東西。它典型的失效很有啟發性:把它對準一面空白的白牆,或在黑暗的走廊中執行,估計就會崩潰,因為沒有東西可以追蹤。磁磚地板之類的重複紋理會造成較不明顯的失效:特徵被信心十足地匹配到錯誤的磁磚上。
常見誤解
- 視覺里程計提供絕對位置:它積分的是相對運動,沒有外部參考或迴路閉合就會漂移
- 任何攝影機都可以:影格率、快門類型與鏡頭畸變影響極大,光是捲簾快門的假影就可能毀掉一次估計
- 它在任何環境都能運作:空白牆面、黑暗、霧氣與重複圖案,都會讓它賴以運作的特徵消失
- 單目視覺里程計能恢復真實尺度:單一攝影機做不到,除非有 IMU、第二台攝影機或已知大小的物體
誰需要了解
- 任何打造必須在沒有 GPS 的情況下導航之飛行或足式機器人的人
- 在輪式、視覺與慣性里程計來源之間做選擇的開發者
- 在無特徵空間中除錯位置估計漂移或跳動問題的工程師
- 學習視覺里程計與完整 SLAM 之間關係的學生
- 任何為追蹤應用挑選攝影機的人,在這類應用中快門類型具有決定性
相關技術
- 視覺 SLAM(ORB-SLAM、LSD-SLAM)
- 視覺慣性里程計(VIO)
- 光流
- 特徵偵測與匹配(ORB、SIFT)
- 雙目視覺與深度估計
- 光束法平差
- 以深度學習為基礎的里程計(TartanVO、DROID-SLAM)
- 與 IMU 和 GPS 的感測器融合
相關專案
- Open3D: Modern library for 3D point cloud processing, mesh operations, and 3D machine learning
- 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
- 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
影片
- Visual Odometry Series - Part 1 (Concept and Math): Hummingbird