很多公司在工程上是用VINS(VINS-Mono或VINS-Fusion)做里程計(jì),而不是ORB-SLAM,但是好像ORB-SLAM比VINS效果更好,這是為什么呢?且看大家是怎么說(shuō)的
簡(jiǎn)單回顧
ORB-SLAM是一種基于特征的單目視覺(jué)SLAM系統(tǒng),廣泛用于實(shí)時(shí)三維地圖構(gòu)建和機(jī)器人定位。該系統(tǒng)使用ORB特征進(jìn)行高效的視覺(jué)識(shí)別和地圖重建,支持關(guān)鍵幀技術(shù)和回環(huán)檢測(cè)來(lái)優(yōu)化地圖的準(zhǔn)確性。ORB-SLAM能夠在多種環(huán)境下穩(wěn)定工作,適用于動(dòng)態(tài)場(chǎng)景和長(zhǎng)時(shí)間操作,因其出色的性能和靈活性,被廣泛應(yīng)用于自動(dòng)駕駛、增強(qiáng)現(xiàn)實(shí)等領(lǐng)域。
VINS(Visual-Inertial Navigation System)是一種結(jié)合視覺(jué)信息和慣性測(cè)量單元(IMU)數(shù)據(jù)的SLAM框架,能夠提供高精度的實(shí)時(shí)定位和地圖構(gòu)建功能。VINS通過(guò)融合相機(jī)和IMU的數(shù)據(jù),即使在視覺(jué)信息不足的情況下也能保持較高的定位精度,使其適用于快速運(yùn)動(dòng)或低光照條件下的場(chǎng)景。VINS框架因其魯棒性和準(zhǔn)確性,在無(wú)人機(jī)導(dǎo)航、移動(dòng)機(jī)器人等領(lǐng)域得到了廣泛應(yīng)用。
看看大家怎么說(shuō)
袁博融說(shuō)
因?yàn)榇蟛糠?a target="_blank">工程師對(duì)SLAM都沒(méi)有深入了解。要么是都試試,哪個(gè)能跑通效果好就用哪個(gè),要么是跟著主流意見(jiàn)走。而主流意見(jiàn)未必就是對(duì)的,很大程度上也是受公眾號(hào)自媒體影響。其實(shí)VINS和ORB-SLAM都不是適合工程使用的好方案。
工程應(yīng)用首先應(yīng)保證前端的魯棒性,其次才是精度。畢竟你要先能收斂,看精度才有意義。運(yùn)行時(shí)但凡飄一下,之前精度再高也是打水漂。VINS和ORB-SLAM對(duì)于corner cases是沒(méi)啥特殊處理的,連ZUPT都沒(méi)做,這就注定魯棒性不足。VINS長(zhǎng)時(shí)間運(yùn)行會(huì)發(fā)散是必然的。
大家覺(jué)得VINS和ORB-SLAM精度高,那是它們?cè)趲讉€(gè)公開(kāi)數(shù)據(jù)集上表現(xiàn)好。但這并不意味著它們?cè)诠こ虘?yīng)用中也一定表現(xiàn)好。實(shí)際上,應(yīng)用中對(duì)精度影響更大的反而是數(shù)據(jù)質(zhì)量,而不是算法本身。比如傳感器的標(biāo)定誤差、同步精度、曝光、對(duì)比度、噪點(diǎn)等都可能會(huì)產(chǎn)生顯著影響。在這種情況下,算法本身的差異甚至可以忽略不計(jì)。即便你出廠標(biāo)定的再好,產(chǎn)品在整個(gè)生命周期里的參數(shù)漂移也是要考慮的吧。這些都是工程問(wèn)題。
我一直不建議SLAM研究者只拿數(shù)據(jù)集做測(cè)試。數(shù)據(jù)集的固定序列難以讓我們認(rèn)識(shí)算法表現(xiàn)的隨機(jī)性。我見(jiàn)過(guò)在某些序列上基礎(chǔ)的VO比VINS和ORB-SLAM精度更高。但這顯然是隨機(jī)性引起的,因?yàn)榫C合多個(gè)序列的結(jié)果還是VINS和ORB-SLAM更好。我經(jīng)常手持設(shè)備去跑測(cè)試,即便走同樣的線路,多次的表現(xiàn)也會(huì)有差異。如果一個(gè)算法多次表現(xiàn)起伏很大,我們至少可以說(shuō)它在這個(gè)場(chǎng)景中沒(méi)有處于合適的工作窗口。
作為開(kāi)發(fā)者不能總是照顧算法的特性,而應(yīng)該多創(chuàng)造可能產(chǎn)生退化的極端場(chǎng)景做研究。這就是為什么我之前甚至錄了過(guò)山車數(shù)據(jù)來(lái)做SLAM測(cè)試。
我自己實(shí)現(xiàn)的VIO方案可以跑完這條序列,但我不覺(jué)得VINS或ORB-SLAM能做到。我開(kāi)源這套數(shù)據(jù)后也一直沒(méi)有其他人說(shuō)能跑通。即便我的方案能跑通這種極端場(chǎng)景,也不意味著它在其它看起來(lái)更簡(jiǎn)單的場(chǎng)景中就不會(huì)出問(wèn)題。事實(shí)上我們?cè)谄渌?xiàng)目中也遇到過(guò)各種挑戰(zhàn),也是花了幾個(gè)月的時(shí)間去分析和優(yōu)化,現(xiàn)在也還在繼續(xù)迭代。
VINS和ORB-SLAM的后端其實(shí)都不算先進(jìn),應(yīng)該說(shuō)還不如RTAB-Map。這幾個(gè)后端其實(shí)都在用BoW,但RTAB-Map還有內(nèi)存管理等高級(jí)特性。我一直奇怪咋還不更新成VLAD,是因?yàn)榇蠹遗艿膱?chǎng)景不夠大嗎?反正RTAB-Map很快會(huì)支持VLAD的,因?yàn)槲乙彩撬牡诙筘暙I(xiàn)者。但我并不是說(shuō)RTAB-Map比VINS或ORB-SLAM更好,而是它們根本不好比。RTAB-Map最初就是個(gè)VSLAM后端框架,后來(lái)才加的前端。我前面說(shuō)的基礎(chǔ)的VO就是RTAB-Map后來(lái)加的實(shí)現(xiàn)。而你甚至可以在RTAB-Map中用VINS或ORB-SLAM做前端。這也是為什么我要另外做VIO方案,因?yàn)镽TAB-Map本來(lái)就沒(méi)提供這些,它只是預(yù)留了模板。RTAB-Map不是個(gè)算法而是個(gè)框,什么都可以往里裝。
ORB-SLAM的最大硬傷就是它用的是ORB特征。ORB特征除了性能好一些,在各類任務(wù)上都沒(méi)什么優(yōu)勢(shì)。不知道有多少研究者仔細(xì)測(cè)試和比較過(guò),其實(shí)傳統(tǒng)特征描述子最好的還是SIFT(而且專利也到期了),后來(lái)的沒(méi)一個(gè)能打的。但SIFT檢測(cè)開(kāi)銷大也是眾所周知的。而SIFT檢測(cè)+SIFT描述子也不是最好的。我目前知道的最好的組合是GFTT(Shi-Tomasi)+SIFT描述子,回環(huán)檢測(cè)能力吊打其它各種組合。CV領(lǐng)域就是這么神奇,最老的反而是最好的。GFTT本身開(kāi)銷就低,還方便做硬件加速。ORB做硬件加速都要更麻煩一些。我自己方案就是用GFTT+RootSIFT或SuperPoint(HF-Net)。不考慮后端的話,GFTT+KLT其實(shí)都非常好了。
所以如果你要問(wèn)工程上哪個(gè)方案最好,我會(huì)告訴你RTAB-Map不錯(cuò),但它只能做后端,你還需要一個(gè)好的前端。我們的前端方案今年會(huì)推產(chǎn)品,RTAB-Map這一兩年也還會(huì)有重量級(jí)更新。除了VLAD部分還會(huì)有iSAM2,Gaussian Splatting等。目標(biāo)就是純視覺(jué)做超大場(chǎng)景(至少城市級(jí)吧)VSLAM+三維重建。
樂(lè)知者說(shuō)
論文與實(shí)際有差別。
這就看你把orbslam和vinsmono用來(lái)干什么了。
先作為Vio來(lái)說(shuō),結(jié)論vinsmono優(yōu)于orb3(沒(méi)有了回環(huán)檢測(cè)、多地圖功能和重定位的orb3,不如vins一根毛)。理由如下:
1、運(yùn)行資源。orb3遠(yuǎn)比vins消耗的多,不解釋。
2、前段跟蹤穩(wěn)定性。lk光流跟蹤比orb3 track跟蹤穩(wěn)定很多。orb3在實(shí)際場(chǎng)景中,tracklocalmap容易失敗。orb3在室外場(chǎng)景中容易reset,然后新建地圖。
3、后端優(yōu)化這塊。怎么說(shuō)呢,orb3確實(shí)強(qiáng),但是不符合導(dǎo)航要求的定位。因?yàn)槟銜?huì)經(jīng)??吹剿鏖_(kāi)始跟飛很遠(yuǎn),然后又給你突然拉回來(lái)。這種跟飛又來(lái)回來(lái)很蛋疼。沒(méi)有vins-mono那邊平滑。
4、精度這塊(假設(shè)你成功運(yùn)行完一個(gè)數(shù)據(jù)集),精度orb3會(huì)比vins強(qiáng)(vio初始化好的話,orb3可以到達(dá)1%)。然并軟,因?yàn)閛rb3并不穩(wěn)定,跑同一個(gè)書(shū)籍,你可能得到的結(jié)果都差異很大。
5、外參和實(shí)延。orb受外參數(shù)影響特別大,不如vins一根毛。
6、調(diào)試。vins參數(shù)量小于orb3,且穩(wěn)定性比orb3強(qiáng)多了,不然你都不知道這次結(jié)果比上次好到底是什么原因?qū)е碌摹?/p>
結(jié)論:
vio1 vins-mono+orb3初始化策略
vio2 msckf前段+orb后端
這兩個(gè)YYDS。
作為slam (三維重建,語(yǔ)義地圖),orb3遠(yuǎn)優(yōu)越于vins。自己理解。忠告:遠(yuǎn)離vslam或者Vio,擁抱感知或者激光。
余世杰說(shuō)
說(shuō)下自己的理解,ORB強(qiáng)在是一個(gè)完整的系統(tǒng),代碼結(jié)構(gòu)邏輯非常清晰,比較模塊化,要做修改替換啥的比較方便,同時(shí)地圖的部分對(duì)于需要的項(xiàng)目來(lái)說(shuō)很省事兒,可以直接拿來(lái)用。缺點(diǎn)是,代碼中還是存在一些致命的bug,會(huì)跑崩(程序掛了),以及作為一個(gè)VIO系統(tǒng)來(lái)說(shuō),穩(wěn)定性不夠強(qiáng),若視覺(jué)失效,幾乎立馬就整體丟了,所以精度高的意義沒(méi)那么大了又。若要求視覺(jué)必須穩(wěn)定,那為啥我還要加IMU呢,這也是一個(gè)ORB3精度可能不如ORB2的一個(gè)原因。
VINS強(qiáng)在一個(gè)對(duì)外參依耐性沒(méi)那么強(qiáng),畢竟自己可以估計(jì),導(dǎo)致就算初始化有點(diǎn)點(diǎn)問(wèn)題,也可以很快穩(wěn)定下來(lái)。而穩(wěn)定性更是不用說(shuō),在視覺(jué)失效個(gè)5秒左右,系統(tǒng)都能比較正常的跑下來(lái)。還可以融合GPS輸出個(gè)對(duì)齊結(jié)果,對(duì)于需要的項(xiàng)目也是一個(gè)加分項(xiàng)。缺點(diǎn)的話,大概就是缺少了地圖一部分吧,自身是比較強(qiáng)的。
格雷茨卡說(shuō)
因?yàn)閂INS-Mono在真實(shí)場(chǎng)景中的穩(wěn)定性遠(yuǎn)遠(yuǎn)好于ORB-SLAM3,雖然ORB-SLAM3在論文中的精度指標(biāo)大幅度好于VINS-Mono,但是,你總不能一直在那幾個(gè)數(shù)據(jù)集刷指標(biāo)吧,在工程中的應(yīng)用就要求一個(gè)系統(tǒng)必須能夠魯棒穩(wěn)定,本人實(shí)測(cè)ORB-SLAM3對(duì)外參,特別是rotation,非常敏感,標(biāo)定差一些直接就跑飛了,而VINS就不會(huì)有這個(gè)問(wèn)題,可能雖然整體誤差有一些大,但是實(shí)時(shí)性和魯棒性足夠了,ORB-SLAM3的VI初始化很耗時(shí)間,同時(shí)在自己實(shí)際設(shè)備上的有效性一般,VINS的初始化簡(jiǎn)單明了,實(shí)測(cè)也不會(huì)跑飛,而且又有一個(gè)250HZ的IMU預(yù)積分線程,能夠很好的保證實(shí)時(shí)性,因此工程應(yīng)用無(wú)腦VINS,會(huì)省很多事情
審核編輯:黃飛
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
27984瀏覽量
205533 -
移動(dòng)機(jī)器人
+關(guān)注
關(guān)注
2文章
755瀏覽量
33512 -
SLAM
+關(guān)注
關(guān)注
23文章
411瀏覽量
31738 -
增強(qiáng)現(xiàn)實(shí)
+關(guān)注
關(guān)注
1文章
706瀏覽量
44886 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
782文章
13523瀏覽量
165724
原文標(biāo)題:為什么工程上選擇VINS而不是ORB-SLAM?
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論