在SLAM研究中,我們通常需要在各數(shù)據(jù)集上測(cè)試各個(gè)方案的性能情況。如下主要對(duì)表1中6個(gè)視覺SLAM方案進(jìn)行相關(guān)測(cè)試,測(cè)試其在不同場(chǎng)景、要求下的精度和魯棒性,并給出最終方案選型。
【由于時(shí)間、場(chǎng)地等原因,整合前人測(cè)試結(jié)果,在此附上鏈接,謝謝大神的分享!】
**
開源SLAM方案選型:
**
**
數(shù)據(jù)集:
**
一、ORB-SLAM2
檢測(cè)流程:Kinect生成地圖【地圖主要可見的有關(guān)鍵幀(包括相機(jī)的pose,相機(jī)的內(nèi)參,ORB特征),3D的地圖點(diǎn)( 空間中3D位置,法線方向,ORB的描述子),詞袋向量,共視圖等】 → 保存地圖 → 加載地圖和重定位
缺點(diǎn):1、不能解決實(shí)際問題。它基于特征點(diǎn)法,建的圖是稀疏的,只能滿足定位需求,而無法提供導(dǎo)航、避障、交互等諸多功能。而且目前還沒有開放存儲(chǔ)和讀取地圖后重新定位的功能。
2、受光照和車輛、行人等動(dòng)態(tài)物體的影響太大
后續(xù)工作:對(duì)前端數(shù)據(jù)進(jìn)行軌跡的優(yōu)化和回環(huán),稠密建圖
【自我備注:1、保存稀疏地圖的MapPoint和KeyFrame成.bin格式 ;2、如果保存成pcd格式,那么關(guān)鍵幀與關(guān)鍵點(diǎn)之間的關(guān)系沒有辦法保存。。。即pcd保存的地圖信息并不完整】
二、VINS MONO
參考博文:https://blog.csdn.net/Darlingqiang/article/details/80689123
實(shí)現(xiàn)原理:用緊耦合方法實(shí)現(xiàn)的,通過單目+IMU恢復(fù)出尺度
目標(biāo):AR
整體框架:
1、Measurement Preprocessing:觀測(cè)值數(shù)據(jù)預(yù)處理,包含圖像數(shù)據(jù)跟蹤IMU數(shù)據(jù)預(yù)積分;
2、Initialization:初始化,包含單純的視覺初始化和視覺慣性聯(lián)合初始化;
3、Local Visual-Inertia BA and Relocalization:局部BA聯(lián)合優(yōu)化和重定位,包含一個(gè)基于滑動(dòng)窗口的BA優(yōu)化模型;
4、 Loop detection and Global Pose Graph Optimization:回環(huán)檢測(cè);全局圖優(yōu)化,只對(duì)全局的位姿進(jìn)行優(yōu)化;
代碼解讀:
VINS代碼主要包含在兩個(gè)文件中:
1、feature_tracker 接收?qǐng)D像,使用KLT光流算法跟蹤
2、vins_estimate 包含相機(jī)和IMU數(shù)據(jù)的前端預(yù)處理(也就是預(yù)積分過程)、單目慣性聯(lián)合初始化(在線的標(biāo)定過程)、基于滑動(dòng)窗口的BA聯(lián)合優(yōu)化、全局的圖優(yōu)化和回環(huán)檢測(cè)
vins主要就是兩個(gè)節(jié)點(diǎn):
1、一個(gè)節(jié)點(diǎn)算前端,為feature_tracker_node.cpp
2、另一個(gè)節(jié)點(diǎn)算后端,為estimator_node.cpp
三、ORB_SLAM2、VI ORB SLAM2 、 VINS Mono對(duì)比實(shí)驗(yàn)
參考鏈接:http://www.liuxiao.org/2018/02/vi-orb-slam2-與-vins-對(duì)比實(shí)驗(yàn)/
主要指標(biāo):均方根誤差
實(shí)驗(yàn)結(jié)果:
1、ORB 與 VI ORB 對(duì)比
由表可以看出:
1)雙目 VIO 比單目 VIO 效果要更好也更穩(wěn)定;
2)原始 VO 的優(yōu)化已經(jīng)比較徹底,IMU 誤差項(xiàng)的加入給優(yōu)化結(jié)果造成了更多的不穩(wěn)定性,加入 IMU 的版本均不如原始雙目版本的精度。
2、VI ORB 與 VINS Mono 對(duì)比(開啟閉環(huán))
由表可以看出:
1)VINS Mono 精度與VIORB Mono/Stereo比,精度要高一些;
2)VI ORB 是不能完全跑過所有測(cè)試集的,特別是快速運(yùn)動(dòng)的 V2_03_difficult 測(cè)試集結(jié)尾階段會(huì)跟丟;而vins mono采用的光流跟蹤,不易跟丟。
3、VI ORB 與 VINS Mono 對(duì)比(關(guān)閉閉環(huán))
由表可以看出:
VINS Mono 對(duì)閉環(huán)依賴較大,在關(guān)閉閉環(huán)后,VINS Mono 的性能下降較多。
4、實(shí)驗(yàn)小結(jié)
1)在沒有閉環(huán)情況下,VINS Mono 精度略低于 VIORB;而在有閉環(huán)情況下,二者精度差距不大。
2)由于開源 VIORB 版本并非官方實(shí)現(xiàn),與官方版本有很多不同之處,沒有辦法測(cè)試真實(shí)官方 VIORB 的性能;但基本可以看出對(duì)于VI ORB SLAM2 框架,IMU 的引入主要是在快速運(yùn)動(dòng)時(shí)能夠減少一些丟失,而精度上與 VO 相近或略有下降;
3)以光流作為前端的 VINS Mono 比描述子作為前端的 VIORB 具有更好的魯棒性,在快速運(yùn)動(dòng)時(shí)更不容易丟失。因此在類似于無人機(jī)這樣的場(chǎng)景,VINS 應(yīng)該是比 VIORB 更好的選擇;而對(duì)于精度要求較高、場(chǎng)景更大而運(yùn)動(dòng)較慢的場(chǎng)景,VIORB /ORB仍然更合適;
4)不論是否引入 IMU,雙目對(duì)于精度和魯棒性都會(huì)有一定的提升,VINS Fusion相比于vins mono,性能有所提升;{精度——慢速,雙目;魯棒——快速}
5)除前端差別較大外(比如光流與ORB、滑窗與局部地圖),雖然都是預(yù)積分,二者后端算法與實(shí)現(xiàn)亦有較大不同(李代數(shù)與四元數(shù)參數(shù)化不同、積分方式不同、g2o與ceres實(shí)現(xiàn)差別等),因此造成性能差異的原因較復(fù)雜。
5、 VI ORB-SLAM初始化與VINS初始化對(duì)比(將vi orb-slam初始化方法移植到vins中)
四、VIO:飛行機(jī)器人單目VIO算法測(cè)評(píng)
參考鏈接:https://blog.csdn.net/u012348774/article/details/81414264
核心思想:
全面的比較了各種公開的單目VIO算法(MSCKF、OKVIS、ROVIO、VINS-Mono、SVO+MSF和SVO+GTSAM);
在多個(gè)嵌入式平臺(tái)上(Laptop,Intel NUC,UP Board,ODROID)測(cè)試了各種單目VIO算法,并分析了算法的表現(xiàn);
3.選用EuRoC MAV數(shù)據(jù)集。
結(jié)論:SVO+MSF是計(jì)算效率最高的算法,而VINS-Mono是狀態(tài)估計(jì)精度最高的算法,ROVIO則處于兩者之間
五、VINS FUSION
推薦鏈接:https://blog.csdn.net/huanghaihui_123/article/details/86518880
發(fā)布信息:港科大 2019年1月12號(hào)
版本:
(1)單目+imu
(2)純雙目
(3)雙目+imu
(4)雙目+imu+GPS
和vins mono相比:
對(duì)比于VINS Mono,主要增加了global_fusion包,用來融合GPS以及視覺IMU定位的結(jié)果。代碼結(jié)構(gòu),之前的pose_graph節(jié)點(diǎn)更名為loop_fusion,之前的feature_track節(jié)點(diǎn)融合進(jìn)vins_estimator內(nèi)部。vins_estimator中的factor殘差項(xiàng)增加了很多,主要是視覺的殘差項(xiàng)增加。
優(yōu)勢(shì):可以靜止進(jìn)行初始化;尺度信息不一定完全依靠IMU(有雙目),不會(huì)造成尺度不可關(guān)的情況;魯棒性上,雙目明顯優(yōu)于單目;
劣勢(shì):由于視覺誤匹配等各種原因,雙目的精度會(huì)比單目差一點(diǎn)。
【自我備注:使用vinsfusion閉環(huán)跑KITTI的純雙目數(shù)據(jù)集,跑出來的output結(jié)果有vio.txt位姿文件,但這個(gè)沒有閉環(huán),閉環(huán)的數(shù)據(jù)在單獨(dú)的vio_loop.csv文件里,這個(gè)文件里的數(shù)據(jù)只有閉環(huán)幀,而且數(shù)據(jù)格式和真實(shí)軌跡不一樣,不是12列。如何將閉環(huán)的vio_loop.csv數(shù)據(jù)融合到未閉環(huán)的vio.txt數(shù)據(jù)里,然后畫出閉環(huán)后的整體軌跡估計(jì)?】
六、RTAB-MAP
概述:與其他視覺slam方案不同在于提供了一個(gè)與時(shí)間和尺度無關(guān)的基于外觀的定位與構(gòu)圖解決方案,優(yōu)化了大型環(huán)境的在線閉環(huán)檢測(cè)問題,主要是利用計(jì)算權(quán)重使得只利用有限數(shù)量的定位點(diǎn)參與閉環(huán)檢測(cè),但是若需要也可以訪問全局的定位點(diǎn)。
流程:開始->特征提取和匹配->求兩兩幀的視覺里程計(jì)->優(yōu)化php的結(jié)果->局部地圖->運(yùn)動(dòng)狀態(tài)估計(jì)->運(yùn)動(dòng)狀態(tài)估計(jì)->位姿圖->詞袋模型->相似度計(jì)算->結(jié)束
特征點(diǎn):使用詞袋法創(chuàng)建圖像的簽名,基于opencv從圖像中提取SURF特征來得到視覺單詞。
建圖方式:1.Octomap(3d占用柵格地圖)
2.稠密點(diǎn)云地圖
3.2d占用柵格地圖
ROS節(jié)點(diǎn):輸入:1.TF(傳感器相對(duì)于機(jī)器人底座的位置)
2.里程計(jì)
3.相機(jī)輸入以及帶有校準(zhǔn)的信息
輸出:1.Map Data和Graph
優(yōu)點(diǎn):1.適用于長期和大規(guī)模環(huán)境在線建圖的要求
2.里程計(jì)魯棒性較好好且低漂移
3.定位魯棒性較好
4.地圖生成開發(fā)實(shí)用且簡(jiǎn)便
5.提供軟件包
缺點(diǎn):1.方案偏向于商品化,二次開發(fā)難
參考:https://blog.51cto.com/remyspot/1784914
七、RGBD-SLAM V2
概述:系統(tǒng)前端為視覺里程計(jì),從每一幀的RGB提取特征,計(jì)算描述符,RANSAC+ICP計(jì)算兩幀之間的運(yùn)動(dòng)估計(jì),并提出了一個(gè)EMM(環(huán)境測(cè)量模型)判斷運(yùn)動(dòng)估計(jì)是否可以接受,后端回環(huán)檢測(cè)基于G2O的位姿圖優(yōu)化
特征點(diǎn):1.SIFT by GPU(綜合表現(xiàn)最好)
2.SURF by CPU(OPENCV)
3.ORB by CPU (OPENCV)(準(zhǔn)確率,實(shí)時(shí)性更加好)
建圖方式:八叉樹地圖octomap(利于導(dǎo)航 ; 易于更新 ;存儲(chǔ)方式比較省空間)
優(yōu)點(diǎn):1.二次開發(fā)較容易,可以在其基礎(chǔ)上繼續(xù)開發(fā)
缺點(diǎn):1.實(shí)時(shí)性相對(duì)較差,相機(jī)要慢速運(yùn)動(dòng)
參考:http://www.cnblogs.com/voyagee/p/7027076.html
八、RTAB-MAP和RGBD-SLAM V2的對(duì)比
系統(tǒng)構(gòu)建:
1、RGBD_SLAM V2是一個(gè)非常全面優(yōu)秀的系統(tǒng),將SLAM領(lǐng)域的圖像特征、優(yōu)化、閉環(huán)檢測(cè)、點(diǎn)云、octomap等技術(shù)融為一體,
2、RTAB-Map是當(dāng)前最優(yōu)秀的RGBD SLAM
開發(fā):RGBD_SLAM2適合RGBD SLAM初學(xué)者,也可以在其基礎(chǔ)上繼續(xù)開發(fā)。
RTAB-MAP二次開發(fā)難度較高(著名的Google Tango(見如何評(píng)價(jià)Google 的 Project Tango和Google Project Tango 有哪些黑科技)就是使用RTAB-Map做SLAM,)
實(shí)時(shí)性:RGBD_SLAM2的缺點(diǎn)是其算法實(shí)時(shí)性不好,相機(jī)必須慢速運(yùn)動(dòng),
RTABMAP 通過STM/WM/LTM的內(nèi)存管理機(jī)制,減少圖優(yōu)化和閉環(huán)檢測(cè)中需要用到的結(jié)點(diǎn)數(shù),保證實(shí)時(shí)性以及閉環(huán)檢測(cè)的準(zhǔn)確性,能夠在超大場(chǎng)景中運(yùn)行。
回環(huán)檢測(cè):RGBDSLAMV2:相機(jī)較快運(yùn)動(dòng)時(shí),會(huì)出現(xiàn)很大的地圖重疊。
RTABMAP:穩(wěn)定性相對(duì)較好,但是也不穩(wěn)定。
個(gè)人:實(shí)際運(yùn)行中RGBD SLAM V2用點(diǎn)云表達(dá),點(diǎn)云表達(dá)方式耗費(fèi)內(nèi)存,時(shí)間較長后,三維空間中的點(diǎn)云數(shù)量增多,畫面出現(xiàn)明顯的卡頓,但采集得結(jié)果細(xì)節(jié)表現(xiàn)得很好
RTAB-MAP實(shí)際運(yùn)行過程中,畫面比較流暢,但是是使用3d柵格占用地圖表現(xiàn)的,細(xì)節(jié)表現(xiàn)得也不錯(cuò)。
九、RTAB-MAP和ORB-SLAM的對(duì)比
系統(tǒng)構(gòu)建:RTAB-MAP:框架較全面,支持聯(lián)合建圖,建立的地圖包括三維稠密點(diǎn)云和二維柵格地圖(可以直接從ros獲取二進(jìn)制程序)
ORB-SLAM:只滿足了定位的需求,無法提供導(dǎo)航,避障,交互等諸多功能 。
代碼可讀性:RTAB-MAP:差,基本上封裝了。
ORB-SLAM:可讀性好。
應(yīng)用:RTAB-MAP:適合作為slam應(yīng)用
ORB-SLAM:適合研究使用
計(jì)算量:RTAB-MAP:內(nèi)存管理方法計(jì)算量相對(duì)較小
ORB-SLAM:三線程結(jié)構(gòu),必須對(duì)每幅圖像計(jì)算一遍orb特征,耗時(shí)和計(jì)算量大
回環(huán)檢測(cè):RTAB-MAP:回環(huán)檢測(cè)只訪問有限數(shù)量的定位點(diǎn)
ORB-SLAM:優(yōu)秀的回環(huán)檢測(cè)算法保證了ORB-SLAM2有效地防止累積誤差,并且在丟失之后還能迅速找回,這一點(diǎn)許多現(xiàn)有的SLAM系統(tǒng)都不夠完善。為此,ORB-SLAM2在運(yùn)行之前必須加載一個(gè)很大的ORB字典 。
十、SLAM算法對(duì)比:
一:視覺和IMU前端數(shù)據(jù)處理
對(duì)于視覺前端做法基本分為三種:
①特征點(diǎn)提取(feature detection)+根據(jù)描述子匹配特征點(diǎn)
orbslam, okvis
優(yōu)點(diǎn):因?yàn)橛忻枋鲎?,因此?duì)地圖的維護(hù)很方便(包括重定位,閉環(huán),全局優(yōu)化)
尤其是對(duì)室內(nèi)環(huán)境,當(dāng)視覺上共視關(guān)系較多的時(shí)候,這種方法能很大提高定位精度和局部的穩(wěn)定性。室內(nèi)移動(dòng)機(jī)器人建議使用這種方法
缺點(diǎn):每幀圖像都要提取特征點(diǎn)數(shù)量的描述子,浪費(fèi)時(shí)間;在tracking過程中,如果運(yùn)動(dòng)過快(圖像出現(xiàn)模糊)比較容易tracking failed,而光流要好一些
②特征點(diǎn)提取+光流跟蹤
vins,svo的初始化
優(yōu)點(diǎn):簡(jiǎn)單高效,tracking要魯棒一些
缺點(diǎn):不容易構(gòu)建全局map,視覺約束只靠滑窗里面的關(guān)鍵幀。
比如vins的閉環(huán)和重定位是需要另外再提取特征點(diǎn)和描述子的;但后端做得好
③直接法
lsdslam,dso
優(yōu)點(diǎn):在弱紋理下,魯棒性好
缺點(diǎn):不容易維護(hù)全局地圖,對(duì)光照影響較大,高精度地圖中無法使用等。
對(duì)于IMU前端:
IMU前端基本都是使用預(yù)積分的方式,和積分的區(qū)別(預(yù)積分把重力考慮進(jìn)去了)。imu預(yù)積分主要是在兩幀圖像之間更新imu的5個(gè)狀態(tài)變量(p, v, q, ba, bg)的Jacobian和covariance。
PS:為了使得非線性優(yōu)化中,不用每次改變位姿后,積分需要重新計(jì)算的問題。
現(xiàn)在改變位姿(速度,位移,旋轉(zhuǎn)四元數(shù)關(guān)于世界坐標(biāo)系的),預(yù)積分內(nèi)的項(xiàng)保持不變。
改變ba,bg(加速度和陀螺儀偏移)后,預(yù)積分的項(xiàng)可以通過泰勒一階展開來進(jìn)行更新。
jacobian是單位矩陣,主要是為了求一階近似的p, v,q;covariance是零矩陣,主要是為了求imu誤差項(xiàng)的權(quán)重
IMU初值確定:一般結(jié)合vins mono 等的視覺信息來求
二:后端優(yōu)化
濾波:不需要做邊緣化,重定位難。因?yàn)椴恍枰?,速度略快?/p>
**優(yōu)化:**需要邊緣化(比較耗時(shí)間),重定位容易。迭代優(yōu)化,速度略慢。
VINS-Mono與OKVIS類似,是基于非線性優(yōu)化器優(yōu)化一個(gè)滑窗內(nèi)的關(guān)鍵幀,幀間通過魯棒的角點(diǎn)關(guān)聯(lián)。在系統(tǒng)初始化階段,通過松耦合的方式融合多種傳感器;在重定位階段,則通過緊耦合的方式融合傳感器。在優(yōu)化之前,也通過IMU預(yù)積分減少計(jì)算量。除此至外,VINS還提供了基于4DoF的位姿圖優(yōu)化和回環(huán)檢測(cè)。
十一、實(shí)體測(cè)試
十二、方案選型(個(gè)人觀點(diǎn),不喜勿噴)
通過上述調(diào)研,出于資源等的考慮,初步將ORB_SLAM2、 VINS FUSION、RTAB MAP 和LSD SLAM列入后期調(diào)研中,擬再花兩周進(jìn)行相機(jī)選型和實(shí)體場(chǎng)景測(cè)試,先給出現(xiàn)階段調(diào)研結(jié)果,希望大家相互學(xué)習(xí),共同進(jìn)步!
作者為CSDN博主「lark_ying」
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至2161241530@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.sdanke.com/uncategorized/40746/