<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          多種視覺SLAM方案對比

          共 6726字,需瀏覽 14分鐘

           ·

          2021-03-15 10:26


          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          本文轉自 | 新機器視覺

          在SLAM研究中,我們通常需要在各數(shù)據集上測試各個方案的性能情況。如下主要對表1中6個視覺SLAM方案進行相關測試,測試其在不同場景、要求下的精度和魯棒性,并給出最終方案選型。

          【由于時間、場地等原因,整合前人測試結果,在此附上鏈接,謝謝大神的分享!】


          **


          開源SLAM方案選型:


          **


          **


          數(shù)據集:


          **


          一、ORB-SLAM2


          檢測流程:Kinect生成地圖【地圖主要可見的有關鍵幀(包括相機的pose,相機的內參,ORB特征),3D的地圖點( 空間中3D位置,法線方向,ORB的描述子),詞袋向量,共視圖等】 → 保存地圖 → 加載地圖和重定位


          缺點:1、不能解決實際問題。它基于特征點法,建的圖是稀疏的,只能滿足定位需求,而無法提供導航、避障、交互等諸多功能。而且目前還沒有開放存儲和讀取地圖后重新定位的功能。

          2、受光照和車輛、行人等動態(tài)物體的影響太大

          后續(xù)工作:對前端數(shù)據進行軌跡的優(yōu)化和回環(huán),稠密建圖


          【自我備注:1、保存稀疏地圖的MapPoint和KeyFrame成.bin格式 ;2、如果保存成pcd格式,那么關鍵幀與關鍵點之間的關系沒有辦法保存。。。即pcd保存的地圖信息并不完整】


          二、VINS MONO


          參考博文:https://blog.csdn.net/Darlingqiang/article/details/80689123

          實現(xiàn)原理:用緊耦合方法實現(xiàn)的,通過單目+IMU恢復出尺度

          目標:AR

          整體框架:

          1、Measurement Preprocessing:觀測值數(shù)據預處理,包含圖像數(shù)據跟蹤IMU數(shù)據預積分;

          2、Initialization:初始化,包含單純的視覺初始化和視覺慣性聯(lián)合初始化;

          3、Local Visual-Inertia BA and Relocalization:局部BA聯(lián)合優(yōu)化和重定位,包含一個基于滑動窗口的BA優(yōu)化模型;

          4、 Loop detection and Global Pose Graph Optimization:回環(huán)檢測;全局圖優(yōu)化,只對全局的位姿進行優(yōu)化;

          代碼解讀:

          VINS代碼主要包含在兩個文件中:

          1、feature_tracker 接收圖像,使用KLT光流算法跟蹤

          2、vins_estimate 包含相機和IMU數(shù)據的前端預處理(也就是預積分過程)、單目慣性聯(lián)合初始化(在線的標定過程)、基于滑動窗口的BA聯(lián)合優(yōu)化、全局的圖優(yōu)化和回環(huán)檢測


          vins主要就是兩個節(jié)點:

          1、一個節(jié)點算前端,為feature_tracker_node.cpp

          2、另一個節(jié)點算后端,為estimator_node.cpp


          三、ORB_SLAM2、VI ORB SLAM2 、 VINS Mono對比實驗


          參考鏈接:http://www.liuxiao.org/2018/02/vi-orb-slam2-與-vins-對比實驗/

          主要指標:均方根誤差

          實驗結果:

          1、ORB 與 VI ORB 對比

          由表可以看出:

          1)雙目 VIO 比單目 VIO 效果要更好也更穩(wěn)定;

          2)原始 VO 的優(yōu)化已經比較徹底,IMU 誤差項的加入給優(yōu)化結果造成了更多的不穩(wěn)定性,加入 IMU 的版本均不如原始雙目版本的精度。

          2、VI ORB 與 VINS Mono 對比(開啟閉環(huán))


          由表可以看出:

          1)VINS Mono 精度與VIORB Mono/Stereo比,精度要高一些;

          2)VI ORB 是不能完全跑過所有測試集的,特別是快速運動的 V2_03_difficult 測試集結尾階段會跟丟;而vins mono采用的光流跟蹤,不易跟丟。


          3、VI ORB 與 VINS Mono 對比(關閉閉環(huán))

          由表可以看出:

          VINS Mono 對閉環(huán)依賴較大,在關閉閉環(huán)后,VINS Mono 的性能下降較多。

          4、實驗小結

          1)在沒有閉環(huán)情況下,VINS Mono 精度略低于 VIORB;而在有閉環(huán)情況下,二者精度差距不大。

          2)由于開源 VIORB 版本并非官方實現(xiàn),與官方版本有很多不同之處,沒有辦法測試真實官方 VIORB 的性能;但基本可以看出對于VI ORB SLAM2 框架,IMU 的引入主要是在快速運動時能夠減少一些丟失,而精度上與 VO 相近或略有下降;

          3)以光流作為前端的 VINS Mono 比描述子作為前端的 VIORB 具有更好的魯棒性,在快速運動時更不容易丟失。因此在類似于無人機這樣的場景,VINS 應該是比 VIORB 更好的選擇;而對于精度要求較高、場景更大而運動較慢的場景,VIORB /ORB仍然更合適;

          4)不論是否引入 IMU,雙目對于精度和魯棒性都會有一定的提升,VINS Fusion相比于vins mono,性能有所提升;{精度——慢速,雙目;魯棒——快速}

          5)除前端差別較大外(比如光流與ORB、滑窗與局部地圖),雖然都是預積分,二者后端算法與實現(xiàn)亦有較大不同(李代數(shù)與四元數(shù)參數(shù)化不同、積分方式不同、g2o與ceres實現(xiàn)差別等),因此造成性能差異的原因較復雜。

          5、 VI ORB-SLAM初始化與VINS初始化對比(將vi orb-slam初始化方法移植到vins中)


          四、VIO:飛行機器人單目VIO算法測評


          參考鏈接:https://blog.csdn.net/u012348774/article/details/81414264

          核心思想:


          全面的比較了各種公開的單目VIO算法(MSCKF、OKVIS、ROVIO、VINS-Mono、SVO+MSF和SVO+GTSAM);

          在多個嵌入式平臺上(Laptop,Intel NUC,UP Board,ODROID)測試了各種單目VIO算法,并分析了算法的表現(xiàn);

          3.選用EuRoC MAV數(shù)據集。

          結論:SVO+MSF是計算效率最高的算法,而VINS-Mono是狀態(tài)估計精度最高的算法,ROVIO則處于兩者之間


          五、VINS FUSION


          推薦鏈接:https://blog.csdn.net/huanghaihui_123/article/details/86518880

          發(fā)布信息:港科大 2019年1月12號

          版本:

          (1)單目+imu

          (2)純雙目

          (3)雙目+imu

          (4)雙目+imu+GPS

          和vins mono相比:

          對比于VINS Mono,主要增加了global_fusion包,用來融合GPS以及視覺IMU定位的結果。代碼結構,之前的pose_graph節(jié)點更名為loop_fusion,之前的feature_track節(jié)點融合進vins_estimator內部。vins_estimator中的factor殘差項增加了很多,主要是視覺的殘差項增加。

          優(yōu)勢:可以靜止進行初始化;尺度信息不一定完全依靠IMU(有雙目),不會造成尺度不可關的情況;魯棒性上,雙目明顯優(yōu)于單目;

          劣勢:由于視覺誤匹配等各種原因,雙目的精度會比單目差一點。

          【自我備注:使用vinsfusion閉環(huán)跑KITTI的純雙目數(shù)據集,跑出來的output結果有vio.txt位姿文件,但這個沒有閉環(huán),閉環(huán)的數(shù)據在單獨的vio_loop.csv文件里,這個文件里的數(shù)據只有閉環(huán)幀,而且數(shù)據格式和真實軌跡不一樣,不是12列。如何將閉環(huán)的vio_loop.csv數(shù)據融合到未閉環(huán)的vio.txt數(shù)據里,然后畫出閉環(huán)后的整體軌跡估計?】


          六、RTAB-MAP


          概述:與其他視覺slam方案不同在于提供了一個與時間和尺度無關的基于外觀的定位與構圖解決方案,優(yōu)化了大型環(huán)境的在線閉環(huán)檢測問題,主要是利用計算權重使得只利用有限數(shù)量的定位點參與閉環(huán)檢測,但是若需要也可以訪問全局的定位點。

          流程:開始->特征提取和匹配->求兩兩幀的視覺里程計->優(yōu)化php的結果->局部地圖->運動狀態(tài)估計->運動狀態(tài)估計->位姿圖->詞袋模型->相似度計算->結束

          特征點:使用詞袋法創(chuàng)建圖像的簽名,基于opencv從圖像中提取SURF特征來得到視覺單詞。

          建圖方式:1.Octomap(3d占用柵格地圖)

          2.稠密點云地圖

          3.2d占用柵格地圖

          ROS節(jié)點:輸入:1.TF(傳感器相對于機器人底座的位置)

          2.里程計

          3.相機輸入以及帶有校準的信息

          輸出:1.Map Data和Graph

          優(yōu)點:1.適用于長期和大規(guī)模環(huán)境在線建圖的要求

          2.里程計魯棒性較好好且低漂移

          3.定位魯棒性較好

          4.地圖生成開發(fā)實用且簡便

          5.提供軟件包

          缺點:1.方案偏向于商品化,二次開發(fā)難

          參考:https://blog.51cto.com/remyspot/1784914


          七、RGBD-SLAM V2


          概述:系統(tǒng)前端為視覺里程計,從每一幀的RGB提取特征,計算描述符,RANSAC+ICP計算兩幀之間的運動估計,并提出了一個EMM(環(huán)境測量模型)判斷運動估計是否可以接受,后端回環(huán)檢測基于G2O的位姿圖優(yōu)化

          特征點:1.SIFT by GPU(綜合表現(xiàn)最好)

          2.SURF by CPU(OPENCV)

          3.ORB by CPU (OPENCV)(準確率,實時性更加好)

          建圖方式:八叉樹地圖octomap(利于導航 ; 易于更新 ;存儲方式比較省空間)

          優(yōu)點:1.二次開發(fā)較容易,可以在其基礎上繼續(xù)開發(fā)

          缺點:1.實時性相對較差,相機要慢速運動

          參考:http://www.cnblogs.com/voyagee/p/7027076.html


          八、RTAB-MAP和RGBD-SLAM V2的對比


          系統(tǒng)構建:

          1、RGBD_SLAM V2是一個非常全面優(yōu)秀的系統(tǒng),將SLAM領域的圖像特征、優(yōu)化、閉環(huán)檢測、點云、octomap等技術融為一體,

          2、RTAB-Map是當前最優(yōu)秀的RGBD SLAM

          開發(fā):RGBD_SLAM2適合RGBD SLAM初學者,也可以在其基礎上繼續(xù)開發(fā)。

          RTAB-MAP二次開發(fā)難度較高(著名的Google Tango(見如何評價Google 的 Project Tango和Google Project Tango 有哪些黑科技)就是使用RTAB-Map做SLAM,)

          實時性:RGBD_SLAM2的缺點是其算法實時性不好,相機必須慢速運動,

          RTABMAP 通過STM/WM/LTM的內存管理機制,減少圖優(yōu)化和閉環(huán)檢測中需要用到的結點數(shù),保證實時性以及閉環(huán)檢測的準確性,能夠在超大場景中運行。

          回環(huán)檢測:RGBDSLAMV2:相機較快運動時,會出現(xiàn)很大的地圖重疊。

          RTABMAP:穩(wěn)定性相對較好,但是也不穩(wěn)定。

          個人:實際運行中RGBD SLAM V2用點云表達,點云表達方式耗費內存,時間較長后,三維空間中的點云數(shù)量增多,畫面出現(xiàn)明顯的卡頓,但采集得結果細節(jié)表現(xiàn)得很好

          RTAB-MAP實際運行過程中,畫面比較流暢,但是是使用3d柵格占用地圖表現(xiàn)的,細節(jié)表現(xiàn)得也不錯。


          九、RTAB-MAP和ORB-SLAM的對比


          系統(tǒng)構建:RTAB-MAP:框架較全面,支持聯(lián)合建圖,建立的地圖包括三維稠密點云和二維柵格地圖(可以直接從ros獲取二進制程序)

          ORB-SLAM:只滿足了定位的需求,無法提供導航,避障,交互等諸多功能 。

          代碼可讀性:RTAB-MAP:差,基本上封裝了。

          ORB-SLAM:可讀性好。

          應用:RTAB-MAP:適合作為slam應用

          ORB-SLAM:適合研究使用

          計算量:RTAB-MAP:內存管理方法計算量相對較小

          ORB-SLAM:三線程結構,必須對每幅圖像計算一遍orb特征,耗時和計算量大

          回環(huán)檢測:RTAB-MAP:回環(huán)檢測只訪問有限數(shù)量的定位點

          ORB-SLAM:優(yōu)秀的回環(huán)檢測算法保證了ORB-SLAM2有效地防止累積誤差,并且在丟失之后還能迅速找回,這一點許多現(xiàn)有的SLAM系統(tǒng)都不夠完善。為此,ORB-SLAM2在運行之前必須加載一個很大的ORB字典 。


          十、SLAM算法對比:


          一:視覺和IMU前端數(shù)據處理

          對于視覺前端做法基本分為三種:

          ①特征點提取(feature detection)+根據描述子匹配特征點

          orbslam, okvis

          優(yōu)點:因為有描述子,因此對地圖的維護很方便(包括重定位,閉環(huán),全局優(yōu)化)

          尤其是對室內環(huán)境,當視覺上共視關系較多的時候,這種方法能很大提高定位精度和局部的穩(wěn)定性。室內移動機器人建議使用這種方法

          缺點:每幀圖像都要提取特征點數(shù)量的描述子,浪費時間;在tracking過程中,如果運動過快(圖像出現(xiàn)模糊)比較容易tracking failed,而光流要好一些


          ②特征點提取+光流跟蹤

          vins,svo的初始化

          優(yōu)點:簡單高效,tracking要魯棒一些

          缺點:不容易構建全局map,視覺約束只靠滑窗里面的關鍵幀。

          比如vins的閉環(huán)和重定位是需要另外再提取特征點和描述子的;但后端做得好


          ③直接法

          lsdslam,dso

          優(yōu)點:在弱紋理下,魯棒性好

          缺點:不容易維護全局地圖,對光照影響較大,高精度地圖中無法使用等。


          對于IMU前端:

          IMU前端基本都是使用預積分的方式,和積分的區(qū)別(預積分把重力考慮進去了)。imu預積分主要是在兩幀圖像之間更新imu的5個狀態(tài)變量(p, v, q, ba, bg)的Jacobian和covariance。

          PS:為了使得非線性優(yōu)化中,不用每次改變位姿后,積分需要重新計算的問題。

          現(xiàn)在改變位姿(速度,位移,旋轉四元數(shù)關于世界坐標系的),預積分內的項保持不變。

          改變ba,bg(加速度和陀螺儀偏移)后,預積分的項可以通過泰勒一階展開來進行更新。

          jacobian是單位矩陣,主要是為了求一階近似的p, v,q;covariance是零矩陣,主要是為了求imu誤差項的權重

          IMU初值確定:一般結合vins mono 等的視覺信息來求


          二:后端優(yōu)化

          濾波:不需要做邊緣化,重定位難。因為不需要迭代,速度略快。

          **優(yōu)化:**需要邊緣化(比較耗時間),重定位容易。迭代優(yōu)化,速度略慢。

          VINS-Mono與OKVIS類似,是基于非線性優(yōu)化器優(yōu)化一個滑窗內的關鍵幀,幀間通過魯棒的角點關聯(lián)。在系統(tǒng)初始化階段,通過松耦合的方式融合多種傳感器;在重定位階段,則通過緊耦合的方式融合傳感器。在優(yōu)化之前,也通過IMU預積分減少計算量。除此至外,VINS還提供了基于4DoF的位姿圖優(yōu)化和回環(huán)檢測。


          十一、實體測試



          十二、方案選定(個人觀點,不喜勿噴)


          通過上述調研,出于資源等的考慮,初步將ORB_SLAM2、 VINS FUSION、RTAB MAP 和LSD SLAM列入后期調研中,擬再花兩周進行相機選型和實體場景測試,先給出現(xiàn)階段調研結果,希望大家相互學習,共同進步!


          作者為CSDN博主「lark_ying」

          原文鏈接:https://blog.csdn.net/hly453/java/article/details/88983123


           End 

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 260
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品成人精品久久久 | 亚洲国产激情视频 | 天天日日夜夜a v | 日本级婬片A片AAA毛片炙热 | 欧美暗暗操 |