天天看點

單目視覺慣性裡程計(VIO)算法性能比較算法簡述比較結論參考後續

算法簡述

  • MSCKF

    多狀态限制卡爾曼濾波器構成了許多現代專有VIO系統的基礎,但是直到最近,還沒有足夠的,可公開獲得的實作。 原始MSCKF算法提出了一種測量模型,該模型表達了觀察特定圖像特征的所有相機姿态之間的幾何限制,而無需在該狀态下維持3D特征位置的估計.

  • OKVIS

    基于開放式關鍵幀的視覺慣性SLAM(OKVIS),在關鍵幀位姿的滑動視窗上利用了非線性優化.代價函數由權重的視覺特征重投影誤差和權重的慣性誤差項組合而成. 前端使用Harris角點檢測器檢測特征,然後在特征上計算BRISK描述子以便在幀之間執行資料關聯,早于滑動視窗的關鍵幀在估計的狀态中被邊緣化,其非線性優化過程由Google的ceres求解器執行.

  • ROVIO

    魯棒的視覺慣性裡程表(ROVIO)是基于擴充卡爾曼濾波器(EKF)的視覺慣性狀态估計器,提出了一些新穎性。 除了FAST角點特征(其3D位置由機器人中心的方位矢量和距離确定)外,還從圍繞這些特征的圖像流中提取了多級更新檔. 更新檔特征利用IMU估計的位姿資訊進行跟蹤,跟蹤後的重投影誤差用于濾波的更新.

  • VINS-Mono

    VINS-Mono是一個基于非線性優化和滑動視窗政策的估計器,使用同OKVIS一樣的特征識别跟蹤架構.但VINS-Mono對這個架構進行了一些改進.提出了一種松耦合的傳感器融合初始化方法去引導估計器利用随機初始狀态進行初始化.使用IMU測量值進行預積分,而且還使用一種緊耦合的方法進行重定位.此外,該算法的特征子產品執行了4自由度的位姿圖優化和回環檢測.

  • SVO+MSF

    多傳感器融合(MSF)是用于在狀态估計中融合來自不同傳感器的資料的通用EKF架構。半直接視覺裡程表(SVO)是一種計算輕量級的視覺裡程表算法,可通過跟蹤FAST角特征并最小化其周圍色塊的光度誤差來對齊圖像。然後,通過在非線性最小二乘優化中最小化要素的重投影誤差,将這種稀疏對齊與場景結構聯合優化。從純視覺SVO估計的姿态被提供給MSF,作為通用姿态傳感器的輸出,然後将其與IMU資料融合。由于此設定的松散耦合,是以姿勢的比例必須至少近似正确,需要手動初始化或其他用于估計距離的傳感器(例如雷射距離傳感器)進行自舉.

  • SVO+GTSAM

    與SVO + MSF系統中相同的視覺裡程計前端也已與使用iSAM2進行線上因子圖優化的全平滑後端配對。 後面提出了使用該內建系統的結果,并提出了在姿态圖優化中使用預內建的IMU因子。

比較

單目視覺慣性裡程計(VIO)算法性能比較算法簡述比較結論參考後續
  • 平台

    Laptop: ThinkPad W540, 核心Core i7-4810MQ, 記憶體32G

    Intel NUC: 核心Core i7-5557U, 記憶體16G

    UP Board: 核心Intel Atom x5-Z8350, 記憶體4G

    ODROID: Samsung Exynos5422, 核心ARM A7+ARM A15, 記憶體2G

  • 資料集

    EuRoc MAV datasets

  • 讨論

    所有的測試結果都顯示在上圖中,其中vinsmonolc指的是帶有回環檢測的VINS-Mono算法.

    從圖中可以看出以下結果:

    MSCKF: 是這些評估算法裡面最早提出的,它仍然在某些基準方面有較大的競争力.首先是該算法能夠在上述所有的平台上完整的運作,并且能夠保證一緻的精度.除了魯棒性,它通常需要較少的資源和處理時間.然而,比較現代的一些算法在增加資源消耗的情況下是能夠比msckf算法具有更高的精度.

    OKVIS: 驗證了其在上述所有的平台上運作具有較高的精度,包括嵌入式系統.但由于它單幀處理時間較長導緻該算法具有較低的更新頻率.是以,該算法的魯棒性較強,但更新頻率較低.

    ROVIO: 展示了緊密和一緻的資源使用情況,并且在所有資料集序列上均具有準确的性能,但它無法在Up Board上運作. 在其他硬體平台上,性能是準确且一緻的,這表明在具有足夠功能的計算機的情況下,它對挑戰性軌迹具有良好的魯棒性.

    VINS-Mono: 在上述所有硬體平台上始終是最精确和魯棒性最好的.如果加上回環檢測,則可以進一步提高精确性和魯棒性,但加上回環檢測之後,該算法無法在ODROID上正常運作.該算法卓越的性能是以巨大的硬體資源消耗為代價的.如果應用該算法在無人機上進行狀态估計,使用者必須提高硬體的配置來留足資源用于無人機的導航、控制和其它的感覺應用.

    SVO+MSF: 這篇文章中唯一的松耦合算法.該算法對硬體要求最低,但随之而來的則是精度很差.而且該算法還需要手動初始化來估計尺度資訊,不像緊耦合方法能夠自己直接估計狀态的尺度.然而對于一些精度要求比較低的無人機應用,該方法也是可以作為候選之一.

    SVO+GTSAM: 當考慮沒有閉環檢測時,該算法會為許多平台-資料集組合提供最精确的軌迹。 它能夠以相對較高的CPU使用率和較高的記憶體使用率來實作此目的,但是由于前端和後端的解耦,是以始終具有較低的幀處理時間。 但是,這種方法不像其他方法那樣健壯。 原因之一是位姿圖中的三角化視覺特征不準确,會導緻數值不穩定,進而導緻後端失效。 是以,盡管有一些吸引人的狀态估計屬性,但這種方法可能不适合在飛行機器人上部署.

結論

  • 從筆記本電腦到NUC的CPU使用率的提高表明,某些算法(即SVO + MSF,SVO + GTSAM和VINS-Mono)對CPU時脈速度敏感。如果算法主要在一個計算密集型線程中運作,則可以通過提高時脈速度來提高性能。在Up Board上ROVIO的故障為CPU時脈速度的重要性提供了進一步的證據。即使減少了參數設定,該過濾器在該平台上的所有試驗中仍然迅速分散,這表明更新速率在Up Board CPU的時鐘頻率較低的情況下仍然太慢,盡管它具有足夠的計算資源。這些結果表明有關具有嵌入式單闆計算機的飛行機器人系統的狀态估計算法的選擇的一些結論。給定受計算限制的硬體平台(如Up Board或ODROID),SVO + MSF可以提供最高效的性能,盡管它在總體精度以及挑戰性軌迹的魯棒性方面做出了重大犧牲。如果資源預算允許将很大一部分計算配置設定給狀态估計,則VINS-Mono(如果可能,則具有閉環)可在所有硬體平台和序列中提供最進階别的準确性和魯棒性。這兩個極端之間的一個很好的折衷是ROVIO,它可以提供比SVO + MSF更好的準确性,并且可以比VINS-Mono更低的資源使用率。但是,這帶有一個警告,即不可能在Up Board上運作ROVIO,是以該算法對每幀處理時間比其他算法更敏感。

參考

A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots

後續

後續我的部落格會持續對上述的部分算法進行詳細的分析,有興趣可以持續關注.

繼續閱讀