visual tree view在工具箱力没有_Visual-Inertial Odometry
1. 定義
“Visual-Inertial Odometry“,俗稱VIO,是一個使用一個或者多個相機、一個或者多個IMU(Inertial Measurement Units)進行傳感器狀態測量的技術。所謂的狀態,指的是智能體(比如無人機)的特定自由度下的姿態、速度等物理量。在目前實際可選的精確狀態估計方案中,VIO是除基于GPS以及基于雷達里程計(LiDAR-based odometry)外的唯一選擇。并且由于相機和IMU相比于其他傳感器比較廉價,也比較輕便,因此在今天的無人機上普遍配備了VIO用于狀態估計。
2. 速覽
VIO設計理念在于,將相機和IMU兩種的傳感器進行數據融合,達到“優勢互補”。相機可以在一定的曝光時間內捕獲光子以獲取到一幅2D的圖像,在低速運動時,可以給出非常豐富的環境信息,這些信息在例如地點識別(place recognition)的感知任務上非常實用。然而,標準相機的輸出頻率是有限的,一般不超過100Hz;并且在基于單目的VO系統中,不能精準估計尺度信息;在處于低紋理(如白墻)、高速運動或者高動態的場景(出現曝光過度或者不足)中時,只基于單目的估計過程缺乏魯棒性。
相比之下,IMU是一個本體感受傳感器(proprioceptive sensor)。也就是說,IMU只測量自身的角速度和外部施加于它的加速度(力),這兩個量是與場景信息無關的,因此IMU沒有相機遇到的那些困難。由此可見,IMU是基于相機的里程計方案中,實現在低紋理、高速運動和高動態場景中保持估計的魯棒性的理想補充傳感器。
此外,IMU具有很高的數據輸出頻率(~1000hz)。但在低加速度和低角速度下,其信噪比較低。并且由于傳感器偏差的存在,使用IMU測量進行狀態估計會快速積累漂移誤差。因此,將相機和IMU結合可以在大部分環境中提供準確和魯棒的狀態估計。
相機(綠)和IMU(藍)在某一條軌跡中的測量一個典型的VIO系統配置中,相機與IMU器件之間緊密連接,運動時不發生剛性形變,兩種傳感器以不同的頻率輸出視覺和慣性的測量值。目前的VIO系統使用一系列的3D路標(landmark)表示環境,以下的等式描述路標點
到2D相機圖像坐標系坐標 的投影關系:其中
表示標準透視投影,其中包含相機內參。而IMU的測量值角速度 和加速度 有如下關系:請特別注意等式中的值所處的坐標系。其中
是IMU系(也有的稱為Body系)下表示的IMU自身的角速度, 是IMU在世界坐標系下的加速度, 是世界坐標系下的重力加速度。并且,角速度和加速度的測量值中都包含了噪聲和偏移,不同角標的 和 分別為角速度和加速度的偏差和加性噪聲(詳見 Furgale et al 2013 [1])。值得一提的是,對于低成本性能較差的IMU,上述模型可能過于簡化,有時還需要考慮尺度因素和軸向偏差帶來的額外誤差(詳見Rehder et al 2016 [2])。VIO 是使用相機和IMU的測量
和 來估計傳感器套件(指相機和IMU綁在一起后形成的器件)的過程。我們可以說,VIO就是估計不同時間點 對應的 個狀態量:其中
是IMU六自由度(6-DOF)的姿態, 是IMU的速度, 和 分別是陀螺儀(gyroscope,測量角速度的)和加速計(accelerometer,測量加速度的)的偏差。與僅使用視覺的里程計相比,在利用IMU的測量值時,對速度和偏差進行建模和估計是必不可少的。VIO系統可以同時兼容多相機與多IMU(MIMC-VINS,暫無論文),但至少需要一個相機和一個IMU。在只有一個運動的相機時,允許我們在不確定的尺度(通常選取初始化階段采用的尺度)下估計3D環境和相機的運動,因為對于任意的尺度
和任意點 都滿足 ;而加入了IMU后,速度測量提供了尺度的信息,加速度測量保證了對重力的可觀性,IMU也始終知道重力的方向以修正狀態的估計(關于可觀性的更詳細分析可以查閱(Martinelli 2013[3])左側為松耦合方法,右側為緊耦合方法根據被融合視覺測量和慣性測量的具體形式,VIO方法可以分為兩種范式:松耦合(loosely coupled)和緊耦合(tightly coupled)。理論上來說,基于松耦合的VIO會在兩個獨立的運動估計過程中分別處理視覺和慣性測量的信息,最終將它們的輸出(位置、姿態等)進行融合作為最終的輸出。相比之下,緊耦合方法直接從原始的相機和IMU測量值中計算最終輸出,例如跟蹤的2D特征、角速度和線加速度
。這兩種方法的區別顯示在上圖中。基于緊耦合的方法比基于松耦合的方法有更高的精度。首先,緊耦合方法中,可以使用兩幀視覺測量數據中的IMU積分預測下一幀中的2D特征點位置,加快特征的跟蹤。其次,松耦合方法在估計的過程中較少考慮視覺和慣性信息耦合,在狀態估計的過程中難以利用視覺測量矯正慣性測量的誤差。
3. 一些關鍵的研究點
3.1 三種主要的VIO范式(paradigm)
三種狀態估計范式,來自《State Estimation for Robotics》現有的VIO方案可以根據一次估計涉及到的待優化狀態(主要是相機姿態)數量進行分類,不同的范式與這與計算力的需求和精度相關。
- Full smoothers,基于批量非線性最小二乘優化算法。完整地保留和估計所有的歷史狀態,允許在狀態量更新后執行重線形化(re-linearization)時估計得到更新。
- ?xed-lag smoothers,又稱滑動窗口估計。只考慮最近一個窗口內的狀態(不一定連續)進行優化,在加入新的狀態時邊緣化舊狀態,永久鎖定線性化誤差,精度較低,但效率高。
- ?ltering,只估計最近的一個狀態,是三種范式中速度最快的,也是早期VIO(或者說狀態估計)研究中的熱門方法。
近年來,得益于計算機性能的提升,研究的焦點已經轉移到?xed-lag smoothers 和 Full smoothers,因為它們能夠提供更高的精度。關于更多當前最新的在視覺慣性導航方面的研究進展可以參閱讀 Huang 2019 [4]的文章。
值得注意的是,我們可以使用不同的方法建模VIO算法。一是可以對測量值和高斯先驗使用不同的不確定性表示。例如基于擴展卡爾曼濾波(EKF)的方法使用協方差矩陣表示不確定性,而信息過濾器和平滑器的方法使用信息矩陣(協方差矩陣的逆)或者信息矩陣的平方根(Kaess et al[5],Wu et al 2015[6])表示。二是測量模型線性化的次數,例如標準EKF只處理一次測量就將其“丟棄”,迭代擴展卡爾曼濾波(IEKF)方法在一個時刻上進行了多次迭代,而平滑方法允許對所有任意狀態進行多次線性化。雖然相關的名詞術語很多,但底層算法是緊密相關的。例如,可以證明IEKF方法收斂于最大后驗(MAP)的解,等價于一般用于平滑的高斯-牛頓算法得到的結果,這在《State Estimation for Robotics》第四章中有相關的討論。
下面給出三種范式各自的一些近年來研究的討論。
Filtering
濾波(filtering)算法只對最近的狀態進行推理和更新,能夠進行高效的估計估計。在經典的濾波方法中,同時對姿態和路標進行估計(狀態向量中同時包含姿態和路標位置),這使得求解的復雜度隨著估計的路標數呈二次增長。為了使之滿足實時性,通常只對少量路標進行跟蹤,這方面的研究可以參考Davison et al 2007[7]; Jones and Soatto 2011[8]; Bloesch et al 2015[9] 等工作。
進一步,為了解決路標點過多造成求解復雜度提高的問題,一個辦法是使用 structureless 的方式——將路標點從狀態向量中進行邊緣化。如明尼蘇達州大學 Mourikis 等人提出的一種基于 EKF 的 VIO 緊耦合的 SLAM框架 Multi-State Constraint Kalman ?lter (MSCKF)[10]中,當某個路標點不可見或者太老時,先通過高斯-牛頓優化方法計算出該路標點的空間位置,然后將多個相機位置下對這個路標點的觀測作為一種約束,整合到 EKF更新中,接著把路標點邊緣化。無結構化濾波器(structureless ?lter)的一個缺點是對一系列的路標測量值的處理,要被延后到對每一個路標點的所有測量都獲取到的時候進行。不能利用當前所有的視覺信息進行估計,影響了濾波器的精度。
此外,基于濾波的方法存在兩個主要的誤差來源。第一,濾波器將上一時刻的后驗信息(即當前時刻的先驗)利用運動方程進行預測,結合當前測量更新到當前狀態中,之后便永久刪除舊狀態,這樣的過程基于貝葉斯濾波進行。因此,當系統方程是非線性形式時,線形化造成的誤差和錯誤的離群值測量將會在濾波的過程中被鎖定,之后再也不能進行過去某一個狀態進行更新,造成不精確的估計結果[11]。第二,線形化誤差會造成濾波器的不一致性(inconsistent);通常單目+IMU系統在四個方向存在不可觀性:慣性系(Global frame)下的位置和繞著重力方向的朝向(航向角yaw),而桶滾角roll 和俯仰角 pitch 由于重力的存在而變得可觀,尺度因子由于加速度計的存在而可觀,這部分更細致的討論可以參閱文獻 Kottas et al 2012[12]和 Martinelli 2013 [13]。在Kottas et al 2012 [12]的結果表明,在錯誤估計狀態下的線性化行為,會在不可觀測的方向上增加虛假信息(spurious information)。為了解決這一問題,Huang et al 2008 [14] 中提出了 FEJ( ?rst-estimates jacobian)方法,固定首次線形化時得到的雅可比矩陣,使得不同殘差對同一個狀態節點求雅克比時,線性化點一致,這樣就能避免零空間退化而使得不可觀變量變得可觀和不一致性的發生。
Fixed-lag Smoothing
固定滯后平滑器(Fixed-lag smoothers) 事實上和“滯后”沒多大關系,這一算法的主要思想是:保留最近時間線上一定數量的狀態進行估計,將較老的狀態進行邊緣化,近年來有不少針對這一方法的研究工作:Mourikis and Roumeliotis 2008[15] ;Sibley et al 2010[16];Dong-Si and Mourikis 2011[17];Leutenegger et al 2015[18]。對于高度非線性化的VIO,固定滯后平滑器比濾波方法更準確,因為固定滯后平滑保留了一定數量的歷史狀態,當這些狀態被更新后,可以重新線形化(relinearize)它們。并且,固定滯后平滑器可以在優化后使用離群值拒絕方法(outlier rejection)或者魯棒代價函數,保證對含離群測量數據的魯棒性。然而,固定滯后平滑器如基于濾波的方法一樣,仍然存在于邊緣化舊狀態的過程,所以還是存在不一致性和線形化誤差(Huang et al 2011[19];Dong-Si and Mourikis 2011[17];Hesch et al 2014 [20])
xt 邊緣化之后,信息矩陣變得稠密,原先條件獨立的變量變得相關因為固定滯后平滑器在一次估計中需要考慮多個狀態而不只是最新狀態,因此比基于濾波的方法計算開銷大一些。此外,對估計窗口外的狀態的邊緣化,會導致信息矩陣變稠密,這妨礙了利用稀疏矩陣的性質進行加速運算(Walter et al 2007 [21])。為此,有人建議放棄某些測量,而不是將它們邊緣化,以保持問題的稀缺性(Leutenegger et al 2015[18])。關于邊緣化問題的詳細由來和討論,可以在文獻 Walter et al 2007 [21]中獲得更多的解釋。
Full Smoothing
全平滑方法通過求解一個大的非線性優化問題來估計整個歷史狀態(Jung and Taylor 2001[22]; Sterlow and Singh 2004[23]; Bryson et al 2009[24]; Indelman et al 2013[25]; Patron-Perez et al 2015[26])。當狀態發生變化時,完全平滑方法會更新全部歷史狀態的線形化點,因此完全平滑方法保證了最高的精度。但是,更新所有節點使得優化問題復雜度與狀態的維數約成立方(cubic)的關系,當軌跡和地圖隨時間增長時,實時操作很快變得不可行。實際中比較常見的做法是——只保留一些選出的關鍵幀(keyframes)進行更新(Leutenegger et al 2015[18];Qin et al 2017[27];Strasdat et al 2010[28];Nerurkar et al 2014[29]),并且將tracking和mapping的劃分到并行架構中執行優化過程(Mourikis and Roumeliotis 2008[15];Klein and Murray 2009[30]),這種做法也廣泛運用于固定滯后平滑器中。
一個演變過程,當出現回環時,ISAM2利用貝葉斯樹識別和更新只受新測量值影響的變量的小子集一項重大的突破是漸進式平滑(incremental smoothing)技術,其中兩個里程碑式的工作是iSAM (Kaess et al 2008[31]) 以及iSAM2 (Kaess et al 2012[5])技術。它們二者利用因子圖的表達性來保持問題的稀疏性,在優化的過程中識別和更新只受新測量值影響的小子集變量。如上圖中,漸進式平滑保留了所有的歷史狀態;其中,圖中頂部顯示了機器人的姿態地圖,檢測到回環處使用藍色虛線表示;圖中底部顯示了對應的貝葉斯樹,紅色表示受影響修改的節點小集團,可見,出現在
和 處的回環只影響了一部分的狀態節點,而下半部分的兩個子樹保持不變。比較出名的使用漸進式平滑框架的VIO是 Forster et al 2017的工作:流形上的預積分理論[32]。基于高中物理運動公式的姿態(R)、速度(v)和位置(p)積分公式,可見每次迭代優化后,幀上的狀態改變,此時的IMU的測量就需要被重新積分預積分理論是很自然的結果。在實際融合中,相機和IMU擁有不一樣的數據更新頻率,這會給全平滑方法以及固定滯后平滑器執行優化時造成困擾。在濾波的方法中,IMU數據一般用于預測模型,而相機用于測量模型,這樣一來,自然而然可以處理數據頻率不一的問題。然而對于全平滑方法,將每次IMU的測量數據添加為新的狀態是不可行的,這將會造成狀態維數增加,求解問題的復雜度也急劇上漲。因此,可以將幀之間的IMU的測量做積分,形成相對運動的約束。但是在每次迭代優化后,幀上的狀態改變,此時的IMU的測量就需要被重新積分。為了避免這一個問題,Lupton and Sukkarieh 2012[33]的工作中說明了可以通過相對運動約束的重參數化避免執行重復的積分,這樣的重參數化方式被稱為“IMU 預積分”(IMU preintegration)。但是他們的工作是基于歐拉角進行的,而后在Forster et al 2017[32]中,作者使用旋轉群SO(3)上的流形結構進行推導,使預積分理論成熟。
3.2 相機-IMU標定
為使VIO能達到最高性能,我們需要進行相機和IMU之間的空間變換和時間偏移(temporal offsets)的標定。相機和IMU的離線標定方法已經是一個被廣泛研究的問題,我們可以使用基于濾波(Kelly and Sukhatme 2011 [34])或者基于批優化( Furgale et al 2013 [1])的方法解決。而在線自標定的方法,在目前先進的VIO算法通常都已集成,在估算相機位姿和路標點的同時,也同時估計相機和IMU之間的空間變換關系(Li and Mourikis 2013 [35];Leutenegger et al 2015[18];)。如果相機-IMU組合器件之間沒有進行硬件上的同步,那么還需要同時估計相機和IMU之間的時間偏移(Nikolic et al 2014[36])。目前,已經有各種不同的離線方法進行時間偏移估計(Furgale et al 2013 [1];Kelly and Sukhatme 2014[37]),但是很有少有關于在線進行的研究(Li and Mourikis 2013 [35];Qin and Shen 2018 [38])。
一個著名的開源標定工具箱是 Kalibr(Furgale et al 2013 [1]),被廣泛應用于相機-IMU系統的時空標定。Kalibr 使用連續而非離散的狀態表示軌跡,因此可以建模相機和IMU之間的時間偏移。這一工具箱開源在:https://github.com/ethz-asl/kalibr
4. 應用案例
目前,有幾個開源的VIO方案可供選擇:
- MSCKF (Mourikis and Roumeliotis 2007 [10])全稱為Multi-State Constraint Kalman Filter,是基于 EKF 的 VIO 緊耦合的 SLAM框架,構成了很多現代VIO系統的基礎(例如Google ARCore和其前身Google Tango)。但是直到現在,還沒有官方開源的實現。原始的MSCKF算法提出了一個度量模型,該模型表達了觀察特定圖像特征的所有相機姿態之間的幾何約束,而不需要在狀態向量中維護3D路標點位置的估計。在 Zhu et al 2017 [39]中實現了一個基于事件相機(Event-based Camera)輸入的使用MSCKF后端的里程計,后面該實現被改造成可接收普通相機特征跟蹤信息的版本,被開源在 https://github.com/daniilidis-group/msckf_mono
- OKVIS(Leutenegger et al 2015[18])全稱為 Open Keyframe-based Visual-Inertial SLAM,該方案使用了基于關鍵幀的滑動窗口(也就是固定滯后平滑器),代價函數由視覺路標的加權重投影誤差和加權的慣導誤差項組合而成,使用Google Ceres Solver進行非線性優化。前端使用多尺度的Harris角點檢測去尋找特征點,并基于BRISK描述子完成兩幀之間的數據關聯。滑動窗口中較老的關鍵幀會被邊緣化,不再進行估計。需要注意的是,OKVIS并沒有針對單目VIO進行優化,在(Leutenegger et al 2015[18])中給出一個雙目配置下的方案,表現出了一定的優越性能。OKVIS提供了一個ROS的package,開源在:https://github.com/ethz-asl/okvis_ros
- ROVIO(Bloesch et al 2015[9])全稱為Robust Visual Inertial Odometry,是一個基于EKF的緊耦合VIO系統。ROVIO系統新穎的地方在于:基于Robot-Centric坐標系(當前相機坐標系)的bearing vector 和逆深度這三個自由度來參數化路標點。而路標點使用FAST角點特征,對于每一幀圖像進行提取圖像金字塔,并在EKF框架中的IMU 預測階段對路標點進行預測,進行圖像塊(patch)的仿射變換和匹配,接著進行塊特征的跟蹤。并且,還在更新步驟中引入光度誤差參與計算。與OKVIS不同,ROVIO是只開發了單目VIO版本,代碼開源在: https://github.com/ethz-asl/rovio
- VINS-Mono(Qin et al 2017[27])是一個基于非線性優化的緊耦合滑動窗口估計器,特征點選用GFTT(Good feature to track [40])。VINS-Mono為此類別的估計框架引入了幾個新的特性。首先,作者提出了一個松耦合的傳感器融合初始化方法,利用 SFM進行純視覺估計滑窗內所有幀的位姿及 3D點逆深度,最后與IMU預積分進行對齊求解初始化參數。在得到新的IMU測量數據時執行預積分,得到IMU的約束后,與視覺約束和閉環約束共同執行非線性優化,求解姿態和偏移等。除此之外,VINS-Mono基于4-DOF的姿態圖(pose graph)執行回環優化。VINS-Mono開發了ROS版本和IOS版本,代碼被開源在:https://github.com/HKUST-Aerial-Robotics/VINS-Mono
- SVO+MSF(Forster et al 2014[41], 2017[42],Lynen et al 2013[43])MSF(全稱 Multi-Sensor Fusion)是基于EKF的融合框架,可接收并融合不同頻率、來源的傳感器數據,形成一個最終估計。而SemiDirect Visual Odometry (SVO) 是計算輕量的視覺里程計算法,其通過跟蹤FAST角點特征和邊緣,最小化它們周圍圖像塊的光度誤差來完成圖像對齊,然后通過非線性最小二乘優化最小化特征的重投影誤差,聯合優化稀疏對齊結果與場景結構。SVO只根據視覺測量進行位姿估計,其結果輸入到MSF中,以松耦合的方式與IMU數據融合(Faessler et al 2016[44])。MSF和SVO都是開源的,并提供基于ROS的接口。而SVO 2.0 提供了Binary文件,可以通過以下地址獲得:https://github.com/uzh-rpg/rpg_svo_example,MSF的網址是: https://github.com/ethz-asl/ethzasl_msf
- SVO+GTSAM(Forster et al 2017[32])使用SVO作為視覺前端,使用了全平滑方法作為后端,而后端的實現基于iSAM2的在線因子圖優化[5]完成。在Forster et al 2017[32]的流形預積分的工作中展示了該集成系統的結果,該系統引入了預積分因子(pre-integrated IMU factors)用于位姿圖的優化。SVO和GTSAM4.0[45](集成iSAM2)都是開源的:SVO 2.0 提供了Binary文件,可以通過以下地址獲得:https://github.com/uzh-rpg/rpg_svo_example,GTSAM4.0可以通過以下地址獲得:Bitbucket
關于上述方案的對比,可以參閱論文 Delmerico and Scaramuzza 2018 [46],里面提供了VIO在不同硬件下的時間、內存消耗的比較,其中部分對里程計的介紹,上述文字已經簡略涉及。
最近,Scaramuzza組的研究重點放在了事件相機的應用上,在中[47]結合了事件相機、標準普通相機和IMU的VIO系統——Ultimate SLAM。從實驗結果來看,結合了事件相機的VIO系統比基于普通相機的VIO系統有85%精度上的提升,主要體現為在高速運動、低光環境和高動態范圍場景下,具備更優越的魯棒性。
5. 未來研究方向
未來的研究熱點有兩個方面:集成互補的傳感器(如事件攝像機),以及新的算法工具(如深度學習)
與普通相機不同,事件攝像機只發送由于在場景中運動時造成亮度變化的像素。并且,有四個突出的優點:非常低的延遲、非常高的輸出頻率、支持高動態范圍以及非常低的功率消耗。這使得基于事件相機的VIO系統非常適合配置在高速運動的智能體上(Gallego et al 2017[48];Rebecq et al 2017[49]; Rosinol Vidal et al 2018[50])或者在高動態范圍的環境中使用(Kim et al 2016[51];Rebecq et al 2017[52];Rosinol Vidal et al 2018[47])。但是,由于事件相機的輸出是由一系列異步事件組成的,傳統的基于幀的計算機視覺算法不能直接應用,必須開發新的算法來處理異步數據。
一個健壯的VIO系統,不應該僅僅利用環境幾何特征和傳感器測量模型,還應利用關于環境的語義/上下文信息,以及特定于應用場景的運動動力學先驗信息。在這一方面,深度視覺(-慣性)測程技術(Costante et al 2016[53];Wang et al 2017[54];Zhou et al 2017[55];Clark et al 2017[56])已經取得了很好的初步成果,特別是在解決標準相機的開放挑戰方面,如光圈問題、運動模糊、散焦和低能見度情況。然而,目前端到端方法在準確性上仍無法與傳統方法相媲美。
本文來自 Visual-Inertial Odometry of Aerial Robots, Davide Scaramuzza and Zichao Zhang, accepted for publication in the Springer Encyclopedia of Robotics, 2019,小改參考
總結
以上是生活随笔為你收集整理的visual tree view在工具箱力没有_Visual-Inertial Odometry的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可用子网数要不要减2_网络层 | 网际协
- 下一篇: frac函数_20个能够有效提高 Pan