版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第頁緒論課題背景近年來,二維圖像的三維化已經(jīng)成為計算機視覺領域日漸重要的研究方向。基于二維圖相的三維重建就是使用相機或者傳感器拍攝現(xiàn)實生活中的物體,對其進行掃描并創(chuàng)建對象的三維描述,并在計算機中生成一個可以顯示的三維版本的技術。新創(chuàng)建的模型可以廣泛應用于三維測量,增強現(xiàn)實、逆向工程和其他技術。然而,大多數(shù)的三維重建算法中圖像深度數(shù)據(jù)的輸入必不可少,該輸入需要的專業(yè)設備例如微軟公司生產(chǎn)的Kinect傳感器,激光雷達等,這些設備也限制了該技術在用戶中的廣泛應用性。社交,教育,醫(yī)療,游戲等許多傳統(tǒng)行業(yè)隨著移動終端設備的普及和發(fā)展而逐漸轉(zhuǎn)型,換而言之,手機在不知不覺中悄然改變著人們的生活方式,在人們的生活它中成了不可或缺的必需品,將來會有越來越多的社會生產(chǎn)活動圍繞著移動終端展開。在未來的工作中如何使用安裝在移動設備上的攝像頭進行三維重建是重要的研究方向。對于移動端的三維重建來說,其中一項比較關鍵的技術就是如何能讓移動端設備感知當前的環(huán)境,即SLAM問題(SimulataneousLocalizationandMapping,SLAM)。Smith等最早提出SLAM的概念,定位與建圖是SLAM算法要解決的問題。對自身位姿和周圍環(huán)境的感知是移動機器人定位導航系統(tǒng)必備的能力。通過30多年的穩(wěn)定發(fā)展,SLAM被應用于人們生產(chǎn)生活的多個方面,如機器人、虛擬現(xiàn)實、無人駕駛等領域。自2015年起,SLAM進入了魯棒感知階段,與發(fā)展之初相比,其更加注重智能化、自動化,為移動機器人在室內(nèi)環(huán)境下的運行帶來了技術方向。移動機器人通過添加自適應模塊來增強SLAM系統(tǒng)的自適應性,提高系統(tǒng)對故障感知的能力,同時,幾何建圖也在朝著語義建圖方向發(fā)展,著重增強移動機器人系統(tǒng)的智能感知能力。目前,激光SLAM和視覺SLAM都在不斷的發(fā)展和優(yōu)化,近年來在多個領域都有所應用:VR/AR方面:輔助增強視覺效果。SLAM技術能夠構建視覺效果更為真實的地圖,從而針對當前視角渲染虛擬物體的疊加效果,使之更真實沒有違和感。VR/AR代表性產(chǎn)品中微軟Hololens、谷歌ProjectTango以及MagicLeap都應用了SLAM作為視覺增強手段。無人機領域:地圖建模。SLAM可以快速構建局部3D地圖,并與地理信息系統(tǒng)(GIS)、視覺對象識別技術相結合,可以輔助無人機識別路障并自動避障規(guī)劃路徑,曾經(jīng)刷爆美國朋友圈的Hovercamera無人機,就應用到了SLAM技術。根據(jù)移動機器人搭載的傳感器不同,可以將SLAM分為激光SLAM和視覺SLAM,為了更好地適應環(huán)境,目前還出現(xiàn)了多傳感器融合的SLAM。激光SLAM搭載的是2D或3D激光雷達,根據(jù)所處的不同環(huán)境特點來選擇適合的激光雷達。激光雷達在工作過程中,通過掃描環(huán)境信息獲得分散的點,這些點中包含各種信息,如距離和角度,此類分散的點聚集時稱為點云。每兩個點中的信息存在差異,機器人系統(tǒng)要將每個點的信息進行對比來獲得距離和角度的變化程度,通過計算距離和角度的差異可以得出移動機器人的位置在如何變化,從而知曉機器人的位姿。視覺SLAM依靠相機進行移動機器人的自身定位,其計算量相對激光SLAM較大。按照工作方式的不同,相機分為單目相機、雙目相機和深度相機3類,它們有各自的特點。單目相機擁有一個攝像頭,記錄二維的空間信息,通過采集環(huán)境的圖像信息,再運用視覺幾何原理獲得機器人的位姿變換。單目相機由于結構問題,在三維空間或靜態(tài)空間中無法獲取到距離信息,容易產(chǎn)生誤差,但其結構簡單、成本低的優(yōu)勢備受初學者關注。雙目相機有兩個攝像頭,類似人的雙眼判斷距離,解決了單目相機易產(chǎn)生誤差的劣勢,但計算量較單目相機有所加大。由于雙目相機測量環(huán)境深度信息的距離有限,雙目視覺SLAM往往不適合在大場景下工作。深度相機則運用了紅外傳感器技術,類似激光雷達通過發(fā)射并返回光來判斷距離,相比于單目、雙目相機,深度相機更容易獲得環(huán)境的深度信息。其操作流程簡潔,但其成本高、搭載困難,使得其應用場景有限,更適合室內(nèi)的定位和導航,故深度相機目前還存在諸多局限??傮w上來說,視覺SLAM的環(huán)境描述更加精細,可比對環(huán)境的紋理信息,提高了精確度,可以辨識兩處環(huán)境的差異度。與激光SLAM相比,視覺SLAM搭載的相機雖然在內(nèi)部結構方面更加穩(wěn)定,但仍然存在局限性,移動機器人在室內(nèi)環(huán)境只搭載單一的相機作為傳感器會受到環(huán)境條件的制約,魯棒性較差,無法勝任在復雜環(huán)境中建圖的任務。正因為移動設備小巧,易于得到,通過移動終端掃描重建三維物體的應用情況也更加靈活,根據(jù)使用場景可以分為場景重建、人臉重建和對象重建,本文研究的是基于Android移動設備實時的對象三維重建方法,其應用場景多在于3D打印,游戲和場景建模等。移動設備上的三維重建也有很多難點,第一,大部分的移動設備只有便攜的RGB攝像頭,無法提供拍攝內(nèi)容的深度信息,這也就是說無法得知掃描物體與相機的距離。第二,現(xiàn)存的一些從二維信息中提取三維結構的方法,大部分都是離線處理,無法給用戶提供視覺的反饋,同時它的計算量也很大,對于移動設備的CUP的負荷過高??傊苿釉O備上實時的三維建模技術還存在許多挑戰(zhàn),相比于PC上的建模難度也大很多。本文工作針對以上的這些挑戰(zhàn),本文對目前已有的三維重建算法進行了研究,在移動設備的三維重建過程中,通過引入MIT的Kimera算法庫,提高了移動終端相機位姿估計的穩(wěn)定性。本文設計并實現(xiàn)了一種基于移動設備的對象三維重建方法,利用手機上普通的便攜RGB攝像頭拍攝的圖像序列幀和手機芯片中的IMU慣導數(shù)據(jù)作為輸入,通過視覺慣性狀態(tài)估計,全局一致的相機軌跡估計、用于快速避障的低延時局部網(wǎng)絡地圖構建、全局語義標注的3D網(wǎng)絡地圖幾個算法模塊,最后生成一個三維立體模型。篇章結構本文章節(jié)安排如下:第一章介紹文本的課題背景,研究意義和難點,以及本文的工作。第二章介紹三維重建常用的方法以及目前的發(fā)展趨勢,并分析各個算法的優(yōu)缺點和適用場景。第三章介紹本文的移動設備三維重建算法的算法框架,工作流程。第四章著重介紹重建過程中移動設備圖像和IMU慣導數(shù)據(jù)的獲取,即移動終端和PC之間的連接第五章介紹Kimera算法庫中各個模塊的作用和彼此之間的聯(lián)系第六章通過實驗和結果分析,驗證了使用Kimera算法進行實時三維建模的可行性。研究現(xiàn)狀與相關工作本章敘述三維重建相關的基礎概念與研究現(xiàn)狀。首先介紹的是多視圖立體幾何的基礎概念,接著選擇三個目前流行的相關領域:同時定位與建圖、基于深度的三維重建、移動設備的三維重建和總結三維重建課題的研究現(xiàn)狀。多視圖立體幾何基礎多視圖立體幾何主要解決就是如何從若干幅關于某一個物體的二維圖像中恢復三維信息的問題。本文所要解決的問題也是多實圖立體幾何視覺范圍,接下來將作一些簡單介紹。三維空間剛體運動的表示因為我們的日常生活中所處的空間是三維的,所以我們生來就習慣三維空間中物體的運動。三維空間由三個軸組成,因此在三維空間中任何一點都可以由三個坐標指定。相機就可以當成一個剛體,在三維空間中,要準確地描述一個剛體,就需要“位置”和“姿態(tài)”信息。位置是指相機在空間中的哪個地方,而姿態(tài)則指的是相機的朝向,而這兩點很恰當?shù)貙藬?shù)學語言中的“點”和“向量”,因此我們可以使用點和向量來精確地描述一個剛體在三維空間中的位置和姿態(tài)信息。不過,只有點和向量信息是不夠的。一個向量是空間當中的一樣東西,只有當指定一個三維空間中的某個坐標系時,才能夠討論這個向量在此坐標系下的坐標。所以我們可以引入一個線性空間的基(e1,e2,e3),就可以討論向量在基下的坐標了:(1.1)根據(jù)基本的線性代數(shù)知識,我們可以談論向量與向量,以及向量與數(shù)之間的運算,例如數(shù)乘、加法,減法,內(nèi)積,外積等等。內(nèi)積可以表示為:(1.2)它描述的是向量之間的投影關系。外積則表示為:(1.3)外積的方向垂直于這兩個向量,大小是。我們可以通過外積來描述a到b是如何旋轉(zhuǎn)的,即描述三維空間中兩個向量的旋轉(zhuǎn)關系。在右手法則下,我們用右手的四個指頭從a轉(zhuǎn)向b,其大拇指朝向就是旋轉(zhuǎn)向量的方向,事實上也是a×b的方向。它的大小則由a和b的夾角決定。通過這種方式,我們構造了從a到b的一個旋轉(zhuǎn)向量。圖SEQ圖\*ARABIC1但是三維空間中只有剛體的旋轉(zhuǎn)信息是不夠的,我們還需要加入平移的信息才能描述剛體的位置變化。在機器人的運動過程中,常見的做法是設定一個慣性坐標系(或者叫世界坐標系),通常認為它是固定不動的,同時,相機或機器人則是一個移動坐標系,相機視野中某個向量p,它的坐標為pc,而從世界坐標系下看,它的坐標為pw。這兩個坐標之間是如何轉(zhuǎn)換的呢?這時,就需要先得到該點針對機器人坐標系坐標值,再根據(jù)機器人位姿轉(zhuǎn)換到世界坐標系中,這個轉(zhuǎn)換關系由一個矩陣T來描述:圖SEQ圖\*ARABIC2這種變化稱為歐氏變換。我們設某個單位正交基(e1,e2,e3)經(jīng)過一次旋轉(zhuǎn),變成了(e'1,e'2,e'3)。那么,對于同一個向量a(注意該向量并沒有隨著坐標系的旋轉(zhuǎn)而發(fā)生運動),它在兩個坐標系下的坐標為[a1,a2,a3]T和[a'1,a'2,a'3]T根據(jù)坐標的定義,有:(1.4)對上面的等式左右同時左乘,則等式就變成了:(1.5)我們把中間的陣拿出來,定義成一個矩陣R。這個矩陣由兩組基之間的內(nèi)積組成,刻畫了旋轉(zhuǎn)前后同一個向量的坐標變換關系。只要旋轉(zhuǎn)是一樣的,那么這個矩陣也是一樣的。在歐氏變換中,除了旋轉(zhuǎn)之外還有一個平移??紤]世界坐標系中的向量a,經(jīng)過一次旋轉(zhuǎn)(用R描述)和一次平移t后,得到了a′,那么把旋轉(zhuǎn)和平移合到一起,有a′=Ra+t(1.6)其中,t稱為平移向量。通過上式,我們用一個旋轉(zhuǎn)矩陣R和一個平移向量t完整地描述了一個歐氏空間坐標變換關系。相機模型相機的拍照過程是將三維世界中的坐標點投影到二維平面,這個過程可以用針孔模型來描述,如圖:圖SEQ圖\*ARABIC3相機在時刻t時,從位姿Ti拍攝空間點p=(X,Y,Z)T的過程,可以用矩陣K描述:(1.7)其中fx,fy分別是相機x軸和y軸的焦距(單位為像素);cx,cy分別是相機光心在x軸和y軸的坐標(單位為像素)。(x,y)是點P投影到圖像上的二維位置(單位為像素)矩陣K依賴于相機的固有參數(shù),所以被稱為內(nèi)參矩陣,與此相對的相機位姿也被稱為外參矩陣齊次坐標雖然式(1.6)表達了歐氏空間的旋轉(zhuǎn)與平移,但是這個變換關系并不是線性關系。如果進行了兩次變換,R1,t1和R2,t2滿足:b=R1a+t1,c=R2b+t2.但是a到c的變換為:c=R2(R1a+t1)+t2。因此需要引入齊次坐標和變換矩陣:(1.7)該式中,矩陣T稱為變換矩陣(TransformMatrix)。通過添加最后一維,我們用四個實數(shù)描述了一個三維向量,這顯然多了一個自由度,當我們把變換寫成線性的形式時,在齊次坐標中,某個點x的每個分量同乘一個非零常數(shù)k后,仍然表示的是同一個點。因此,一個點的具體坐標值不是唯一的。如[1,1,1,1]T和[2,2,2,2]T是同一個點。但是,當最后一項不為0時,可以通過除法讓最后一位變?yōu)?,其他三個數(shù)就成了唯一確定的數(shù)。然后忽略掉最后一項1,依靠齊次坐標和變換矩陣,兩次變換的累加就可以有很好的形式:(1.8)通過變換矩陣我們就能夠很好的描述一個剛體在歐氏空間中坐標轉(zhuǎn)換的關系了。同時定位與建圖SLAM(simultaneouslocalizationandmapping)即同時定位與地圖構建。SLAM所要解決的核心問題就是,當一個機器人處于未知環(huán)境中,如何能讓機器人在一邊移動的過程中感知自身所處的位置一邊掃描周圍的環(huán)境,并逐步描繪出環(huán)境完全的地圖。本文所要解決的問題也就是如何讓移動端設備感知當前的環(huán)境并繪制地圖?;玖鞒虉DSEQ圖\*ARABIC4SLAM的工作流程主要兩個部分,分別為前端的視覺里程計和后端的路徑優(yōu)化兩部分。前端視覺里程計的目標就是相機位姿的預測,后端的目的主要是對相機的軌跡進行全局的調(diào)整。環(huán)境重建部分通過將前面得到的深度信息結合到三維模型上,達到重建的目的。發(fā)展現(xiàn)狀一般的SLAM系統(tǒng)可以由前端算法的不同分為:基于濾波的方法、基于特征點的方法和基于稠密算法的直接法。下面將簡單介紹一下目前常用的SLAM算法:基于激光雷達的SLAMGmapping算法:Gmapping是一種基于粒子濾波的二維SLAM算法,它搭載了激光雷達傳器。該算法目前常用于對室內(nèi)環(huán)境進行二維的定位與建圖。粒子濾波的中心思想是隨機采樣,其主要分為:初始化階段、搜索階段、決策階段、重采樣階段。初始化階段即對移動機器人的位姿進行初始化;搜索階段隨機分布粒子,然后獲得反饋的目標相似度信息;決策階段利用一系列隨機樣本的加權和近似后驗概率密度函數(shù),并通過求和來獲得近似積分,其次進行粒子的權值計算,為選擇性地重采樣做準備;重采樣階段按照粒子權值在整體粒子權值中的占比復制粒子,有目的地重新分布粒子。粒子濾波算法將重復以上過程,最后進行地圖估計。其工作流程如圖所示:圖SEQ圖\*ARABIC5Cartographer算法:Cartographer算法是谷歌公司開發(fā)的基于圖優(yōu)化的開源SLAM算法,在背包上面搭載激光雷達傳感器和IMU可以實現(xiàn)二維和三維建圖。Cartographer框架主要分為兩個部分:前端LocalSLAM)和后端(GlobalSLAM)。較其他激光雷達SLAM算法不同的是,Cartographer算法的前端引入了子圖(Submap)的概念,前端進行數(shù)據(jù)提取和數(shù)據(jù)關聯(lián)時,激光雷達每掃描一次會形成一個子圖,每次掃描而得的數(shù)據(jù)幀會與上一次得到的子圖進行比對并且插入到上一次得到的子圖中,子圖的更新優(yōu)化依賴于數(shù)據(jù)幀的不斷插入,當沒有數(shù)據(jù)幀插入時則形成完整優(yōu)化的子圖,此處主要應用非線性最小二乘法求解。如此反復,獲得若干個子圖,即局部地圖。后端首先進行閉環(huán)檢測,再對前端獲得的若干個子圖進行優(yōu)化。通過全局計算得到優(yōu)化后的位姿,可用來消除累計誤差,得到最優(yōu)的全局地圖,其工作流程如圖所示圖SEQ圖\*ARABIC6Hector算法:Hector算法也是基于圖優(yōu)化的SLAM算法,采用了高斯-牛頓法,通過搭載激光雷達傳感器進行地圖構建。與Cartographer算法流程類似,Hector算法也分為前端和后端,前端負責對機器人的運動進行估計,后端對位姿進行優(yōu)化,但后端缺少了閉環(huán)檢測環(huán)節(jié)。Liu等在此基礎上提供了一種可用的、具有完整的6自由度運動的平臺,可以應用到空中飛行狀態(tài)下的建圖工作中。在建圖過程中,首先前端進行激光掃描,獲得柵格地圖。每當激光雷達獲得新的數(shù)據(jù)時,將其與上一時刻的地圖進行匹配。為使激光雷達數(shù)據(jù)映射到柵格地圖中,采用雙線性插值的方法來獲得連續(xù)的柵格地圖。后端采用了高斯-牛頓法對鄰近幀進行匹配,使地圖數(shù)據(jù)誤差最小,得到優(yōu)化的地圖。表1對以上三種室內(nèi)激光SLAM算法作了比較:激光SLAM優(yōu)點缺點Gmapping易實現(xiàn);在室內(nèi)小場景且特征較少時表現(xiàn)優(yōu)良;改善了粒子耗散問題缺少閉環(huán)檢測環(huán)節(jié),精確度較低Cartographer可進行閉環(huán)檢測,利于在室內(nèi)較大場景下建圖,精度較高優(yōu)化時計算量較大Hector不需要里程計對激光雷達要求較高;缺少閉環(huán)檢測環(huán)節(jié)表SEQ表\*ARABIC1基于視覺的SLAMORB-SLAM:ORB-SLAM算法(OrientedFASTandRotatedBRIEF)是Mur-Arta提出的一種V-SLAM系統(tǒng),是一種應用于單目相機的SLAM算法,也是一種基于特征的SLAM算法,它保持著和早期其他算法同樣的效果:定位和建圖同時進行。與早期的SLAM算法相比,其添加了閉環(huán)檢測功能來檢測閉合回路,以減小累積誤差。ORB-SLAM算法的核心思想為基于ORB描述量進行特征匹配和重定位。該算法分3個線程運行,包括特征檢測與跟蹤、建立地圖、閉環(huán)檢測與校正。特征檢測與跟蹤線程,跟蹤環(huán)節(jié)首先從環(huán)境圖像中提取ORB特征,根據(jù)前一幀的圖像對當前幀進行優(yōu)化,做出當前的位姿估計;其次,通過相鄰的地圖點匹配更多的特征來進行位姿優(yōu)化;最后選取出關鍵幀為建立局部地圖做準備。建立地圖線程,建圖部分主要完成局部地圖的構建,通過加入關鍵幀來更新局部地圖,同時剔除多余或重復的關鍵幀,以此對構建的局部地圖進行優(yōu)化。閉環(huán)檢測與校正線程,閉環(huán)檢測進行閉環(huán)的檢測和修正。閉環(huán)檢測使用了Bow2(詞袋模型)方法,相當于將特征集合構建為字典,首先從采集到的圖像中提取特征點并對其進行描述,其次使用K-means算法或貝葉斯算法進行聚類操作,最后以樹的方式表示字典,以便搜索閉環(huán)。基于詞袋模型方法的閉環(huán)檢測的優(yōu)勢是可以快速地通過檢測圖像相似度來檢測到閉環(huán)。其工作流程如圖所示:圖SEQ圖\*ARABIC7SVO-SLAM算法:基于特征的方法依靠提取圖像中顯著的特征來描述環(huán)境的特征信息,根據(jù)描述進行鄰近幀間的特征匹配。SVO-SLAM算法是半直接法(稀疏直接法)中的常用算法,不同于利用圖像特征點匹配的基于特征的方法,以及對整個圖像直接匹配的直接法,半直接法的核心思想是對圖像中的特征點周圍的小圖像塊進行直接匹配[43],提高了效率和精度。其主要分為兩個線程——前端運動估計、后端地圖構建。當單目相機獲得環(huán)境信息后,運動估計線程首先根據(jù)相鄰幀之間的像素灰度差異,建立優(yōu)化函數(shù)來優(yōu)化光度誤差,其次優(yōu)化特征點位置,最后分別優(yōu)化三維的空間點和相機的位置,構建像素重投影誤差的優(yōu)化函數(shù)。后端通過深度估計來建立地圖,當出現(xiàn)新的關鍵幀時,選取若干個點,將選取的點通過矩陣變換獲得各自相應的極線,在極線上找到特征點的對應點,再使用三角測量方法計算深度;然后不斷更新,直到深度估計收斂到一定的范圍,在地圖中融入該三維點坐標。SVO-SLAM算法通過同時進行前端和后端,可以同時進行定位與建圖,這使得SVO-SLAM算法系統(tǒng)能夠快速和高效地對相機運動姿態(tài)進行估計,同時能夠迅速、及時地對周圍環(huán)境地圖進行拓展和延伸。SVO-SLAM算法的工作流程如圖所示:圖SEQ圖\*ARABIC8表2對以上室內(nèi)視覺SLAM算法作了比較:視覺SLAM優(yōu)點缺點ORB-SLAM精確度高可兼容多種類型相機特征不豐富環(huán)境建圖效果較差SVO-SLAM采用半直接法提高了效率和精度計算量較小,實時性好不能兼容多種類型相機表SEQ表\*ARABIC2基于視覺SLAM的三維重建基于視覺SLAM的三維重建,一般利用相機直接得到的環(huán)境的圖像信息,再將圖像信息與傳感器的慣導數(shù)據(jù)相結合,得到與自身的位姿相匹配的圖像信息,其更加側(cè)重于實時性并且有較好的魯棒性。視覺SLAM首先需要通過直接法或者特征點法先從圖像數(shù)據(jù)中提取特征點并進行預處理,特征點不僅能起到簡化圖像的作用,并且能夠保證圖像的關鍵信息不丟失。隨著人臉識別和指紋識別相關的研究日漸深入,提取特征點的算法已經(jīng)有很多,但是為了保證實時性,在SLAM中一般采用的是ORB算法。ORB算法是在Fast算法的基礎上,對特征點使用BRIEF進行進一步的描述,使得提取到的特征角的點旋轉(zhuǎn)和尺度不發(fā)生改變,ORB算法在實際中得到廣泛的應用。之后SLAM算法會在圖片或者相鄰幀之間尋找匹配,結合IMU慣導數(shù)據(jù),使用ORB算法的二進制描述子計算漢明距離。匹配時,SLAM通常只進行相鄰幀或者一個窗口內(nèi)的連續(xù)幀的匹配,在得到候選匹配之后都會使用RANSAC加上一個幾何模型來過濾外點。然后,在建圖的過程中,SLAM算法采用增量的方式,相機的狀態(tài)隨著時間的增量進行計算,因為在運動測量的過程中必然存在誤差,并且隨著時間的累積誤差也會進一步的累積,使得與實際的漂移越來越多,為此SLAM會在后端線程上加上回環(huán)檢測,估計一個變換矩陣來消除誤差。最終可以獲得一個完整的實時三維模型。移動設備上的三維重建隨著移動終端的普及和發(fā)展,有許多三維重建的課題將目光轉(zhuǎn)向輕便快捷的移動設備。有一些針對移動設備的三維重建方法,例如Autodesk的123d,基于深度傳感器的BundFusion和基于移動設備上德勞內(nèi)三角化的全景圖重建等等?;贙IMERAC++庫開展三維重建Kimera庫的介紹Kimera庫是一個開源的實時度量語義SLAM的C++庫。它提供以慣性測量單元速率的視覺慣性狀態(tài)估計,以及全局一致和離群點魯棒的軌跡估計,計算可用于快速避障的場景的低延遲局部網(wǎng)格,并構建全局語義注釋的3D網(wǎng)格,其準確反映地面真實模型。該庫超越了現(xiàn)有的視覺和視覺慣性SLAM庫(如ORB-SLAM、VINSMono、OKVIS、ROVIO),支持3D網(wǎng)格重建和語義標注。Kimera的設計考慮了模塊化,有四個關鍵組件:用于快速準確狀態(tài)估計的視覺慣性里程計(VIO)模塊;用于全局軌跡估計的魯棒姿態(tài)圖優(yōu)化器;用于快速網(wǎng)格重建的輕量級3D網(wǎng)格模塊和密集3D度量語義重建模塊。這些模塊可以單獨或組合運行,因此Kimera可以很容易地回到最先進的VIO或一個完整的SLAM系統(tǒng)。Kimera在CPU上實時運行,并從語義標記的圖像中產(chǎn)生3D度量語義網(wǎng)格,這可以通過現(xiàn)代深度學習方法獲得。Kimera提供的靈活性、計算效率、魯棒性和準確性將為未來的度量-語義SLAM和感知研究奠定堅實的基礎,并將允許跨多個領域(例如,VIO、SLAM、3D重建、分割)的研究人員無需從頭開始就能對自己的工作進行基準化和原型化。Kimera的框架圖SEQ圖\*ARABIC9Kimera使用圖像和IMU數(shù)據(jù)作為輸入,并輸出姿態(tài)估計和多個度量語義重建。圖9顯示了Kimera的體系結構。Kimera將立體聲幀和高速率慣性測量值作為輸入并返回以IMU速率進行的高精度狀態(tài)估計,全局一致的軌跡估計以及環(huán)境的多個網(wǎng)格,包括快速局部網(wǎng)格和全局語義注釋的網(wǎng)格。Kimera高度并行化,并使用四個線程以不同的速率容納輸入和輸出。Kimera有4個關鍵模塊:Kimera-VIO,Kimera-RPGO,Kimera-Mesher,Kimera-Semantics。我們通過線程來描述體系結構,而在以下各節(jié)中將對每個模塊進行描述。Kimera-VIOKimera-VIO(視覺慣性里程計模塊):該模塊實現(xiàn)了基于關鍵幀的最大后驗視覺慣性估計器。在Kimera的里程計中,根據(jù)指定的時間范圍,估計器可以執(zhí)行完全平滑或固定滯后平滑的操作,一般利用后者來限制估計時間。不僅如此,Kimera-VIO還能夠擴展來處理單目和立體框架,將兩者一起使用。它包括了一個負責處理原始傳感數(shù)據(jù)的(視覺和慣性)的前端和一個用于融合處理后的測量結果,以獲得傳感器狀態(tài)的估計值(即姿態(tài)、速度和傳感器偏差)的后端。VIO前端:IMU前端執(zhí)行流形預集成,以從原始IMU數(shù)據(jù)中獲得兩個連續(xù)關鍵幀之間相對狀態(tài)的緊湊預集成測量值。視覺前端檢測Shi-Tomasi角,使用Lukas-Kanade跟蹤器跨幀跟蹤它們,找到左右立體匹配,然后執(zhí)行幾何驗證。使用5點RANSAC執(zhí)行單(目)驗證,并使用3點RANSAC進行立體聲驗證。該代碼還提供了使用IMU旋轉(zhuǎn)并分別使用2點和1點RANSAC執(zhí)行單聲道和立體聲驗證的選項。特征檢測,立體匹配和幾何驗證在每個關鍵幀處執(zhí)行,而kimera算法中僅在中間幀處跟蹤特征。VIO后端:負責融合經(jīng)過處理的各種測量量,生成傳感器的狀態(tài)預測(位姿,速度,偏移等)。在每個關鍵幀處,將預先集成的IMU和視覺測量值添加到構成的VIO后端的固定滯后平滑器(因子圖)中。使用預集成的IMU模型和的無結構視覺模型。使用GTSAM中的iSAM2求解因子圖。在每次iSAM2迭代中,無結構視覺模型都使用DLT估計觀察到的特征的3D位置,并從VIO狀態(tài)中消除相應的3D點。在消除之前,先去除退化點(即相機后方的點或沒有足夠的視差以進行三角測量)和離群點(即具有較大重投影誤差的點),以提供額外的魯棒性層。最后,使用GTSAM將超出平滑范圍的狀態(tài)邊緣化。Kimera-RPGOKimera-RPGO(強大的姿勢圖優(yōu)化模塊):該模塊檢測當前關鍵幀與過去關鍵幀之間的環(huán)路閉合,以及使用強大的PGO計算全局一致的關鍵幀姿態(tài)。循環(huán)閉合檢測:循環(huán)閉合檢測依賴于DBoW2庫,并使用詞袋表示法來快速檢測假定的循環(huán)閉合。對于每個推定的閉環(huán),Kimera-RPGO使用單聲道和立體幾何驗證拒絕異常閉環(huán),并將其余的閉環(huán)傳遞給強大的PGO解算器。值得注意的是由于感知混疊(例如,建筑物不同樓層上的兩個相同的房間),最終的環(huán)路閉合仍可能包含異常值。強大的PGO:此子模塊在GTSAM中實現(xiàn),并且包括現(xiàn)代異常值剔除方法,即增量一致的測量集最大化(PCM),這個功能是為單機器人和在線設置量身定做。PGO中分別存儲里程數(shù)邊緣(由Kimera-VIO生產(chǎn))和循環(huán)閉合(由循環(huán)閉合檢測產(chǎn)生)中的數(shù)據(jù)。每次執(zhí)行PGO時,首先使用修改后的最大的一組的PCM版本一致回路閉合,然后在包括里程表和一致回路閉合的姿態(tài)圖上執(zhí)行GTSAM。動力系統(tǒng)控制模塊是為多機器人情況設計的,僅檢查機器人之間的回路閉合是否一致。Kimera算法還開發(fā)了一個PCM的C++,該實現(xiàn)在循環(huán)封閉上增加了里程計一致性檢查,并且遞增更新了一組一致的測量集以實現(xiàn)在線操作。里程計檢查可驗證每個閉環(huán)回路與里程計一致:在沒有噪聲的情況下,由里程計和循環(huán)L1形成的沿循環(huán)的姿態(tài)必須組成相同。(如圖10)如同在PCM中一樣,我們將異常循環(huán)標記為異常值,這些異常值沿循環(huán)累積的誤差與使用卡方檢驗的測量噪聲不一致。如果在當前時間t檢測到的循環(huán)通過了里程計檢查,那么將測試它是否與先前循環(huán)閉包成對一致。當PCM從頭開始構建鄰接矩陣A∈?L×L來跟蹤成對一致的循環(huán)(其中L是檢測到的循環(huán)閉包的數(shù)量)時圖SEQ圖\*ARABIC10最后,我們使用最快速的,最大的集團實現(xiàn)來計算最大的回環(huán)檢測。這組一致的測量值被添加到姿態(tài)圖中(與里程表一起使用),并使用高斯-牛頓算法進行了優(yōu)化。Kimera-Mesher:3DMeshReconstructionKimera-Mesher(三維網(wǎng)格重建):可以快速生成兩種類型的3D網(wǎng)格:(1)每幀3D網(wǎng)格(2)在VIO固定滯后平滑器中跨越關鍵幀的多幀3D網(wǎng)格。每幀網(wǎng)格:首先在當前關鍵幀中成功跟蹤的2D特征(由VIO前端生成)上執(zhí)行2D德勞奈三角測量。然后,使用來自VIO后端的3D點估計,反投影2D德勞奈三角測量來生成3D網(wǎng)格。(如圖b)雖然每幀網(wǎng)格被設計為提供低延遲障礙檢測,但是我們還提供了通過用2D標簽紋理化網(wǎng)格來對結果網(wǎng)格進行語義標記的選項(如圖2c)。圖SEQ圖\*ARABIC11圖SEQ圖\*ARABIC12多幀網(wǎng)格:多幀網(wǎng)格將在VIO后退地平線上收集的每幀網(wǎng)格融合成單個網(wǎng)格(圖d)。每幀和多幀3D網(wǎng)格都被編碼為頂點位置列表,以及描述三角形面的頂點標識三元組列表。假設在時間t1已經(jīng)有一個多幀網(wǎng)格,對于在時間t生成的每個新的每幀3D網(wǎng)格,在它的頂點和三元組上循環(huán),并添加在每幀網(wǎng)格中但在多幀網(wǎng)格中缺失的頂點和三元組。然后在多幀網(wǎng)格頂點上循環(huán),并根據(jù)最新的VIO后端估計更新它們的3D位置。最后,移除對應于在VIO時間范圍之外觀察到的舊特征的頂點和三元組。結果是一個最新的三維網(wǎng)格,跨越當前VIO時間范圍內(nèi)的關鍵幀。如果在網(wǎng)格中檢測到平面,則正則因子被添加到VIO后端,這導致VIO正則化和網(wǎng)格正則化之間的緊密耦合。Kimera-SemanticsKimera-Semantics(語義度量分割):Kimera采用了捆綁光線投射技術達成了兩個目標。第一個是構建精確的全局3D網(wǎng)格(覆蓋整個軌跡),第二個是對網(wǎng)格進行語義注釋。1)全局網(wǎng)格:在Voxblox框架的基礎上,Kimera使用基于體素的(TSDF)模型來濾除噪聲并提取全局網(wǎng)格。在每個關鍵幀,Kimera算法使用密集立體(半全局匹配)從當前立體對獲得3D點云。然后,使用Voxblox應用捆綁的光線投射,使用其中討論的“快速”選項。這個過程在每個關鍵幀重復,并產(chǎn)生一個TSFD,從中使用行進立方體提取網(wǎng)格。2)語義標注:Kimera-Semantics使用2D語義標注的圖像(在每個關鍵幀產(chǎn)生)對全局網(wǎng)格進行語義標注。2D語義標簽可以使用用于像素級2D語義分割的現(xiàn)成工具來獲得,例如,深度神經(jīng)網(wǎng)絡或基于經(jīng)典MRF的方法。為此,在捆綁的光線投射過程中還傳播語義標簽。使用2D語義分割,意味著要將標簽附加到由密集立體生成的每個3D點。然后,要將從束射線投射中的每束射線觀察到的標記的頻率構建標記概率向量。接著,僅在TSDF截斷距離內(nèi)(即表面附近)沿射線傳播該信息,以節(jié)省計算。換句話說,這個過程省去了更新“空”標簽概率的計算工作。當沿著射線遍歷體素時,使用貝葉斯更新來更新每個體素的標簽概率。在捆綁語義光線投射之后,每個體素都有一個標簽概率向量,從中提取最可能的標簽。最終使用行進立方體提取度量語義網(wǎng)格,其生成的網(wǎng)格比多幀網(wǎng)格精確得多,但計算速度較慢。語義標注的效果如下圖13所示:圖SEQ圖\*ARABIC13基于Android設備的三維重建方法重建算法的設計本文主要解決的問題是在Android設備上實時的對象三維重建,輸入是通過Android設備搭載的RGB攝像機進行拍攝得到的序列幀圖像,輸出的是點云模型。針對Android設備相機一般不搭載深度攝像頭,無法獲取深度信息,本文采用的Kimera算法可以很好地利用相機采集的圖像和Android設備自身傳感器產(chǎn)生的慣導數(shù)據(jù)得到相機的位姿信息。對于一些老型號的Android設備的處理器性能較低的問題,本文采用利用無線WIFI或者移動熱點的方式,連接Android設備和PC設備,并在PC設備上的Ubuntu系統(tǒng)中的ROS機器人系統(tǒng)下進行實時三維建模。重建算法的工作流程如圖14流程圖所示,對于相機采集圖像的每一幀而言,輸入的是RGB圖像,輸出的是當前重建中的三維點云模型。圖SEQ圖\*ARABIC14Ros機器人系統(tǒng)與Android設備連接由于PC系統(tǒng)與Android設備上使用的系統(tǒng)不同,我們需要尋找一個在兩種系統(tǒng)中都兼容運行的平臺,ROS機器人系統(tǒng)是一個功能強大并且兼容性強的平臺。下面將簡單介紹一下ROS 機器人系統(tǒng)的架構以及如何實現(xiàn)各種功能。圖SEQ圖\*ARABIC15如圖15所示,這是一個ROS機器人程序所包含的基本的框架。工作空間:工作空間是一個包含功能包、可編輯源文件和編譯包的文件夾,當同時編譯不同的功能包時非常有用,并且可以保存本地開發(fā)包。用戶可以根據(jù)自己的需要創(chuàng)建多個工作空間,在每個工作空間中開發(fā)不同用途的功能包。在圖中是一個名為catkin_ws的工作空間,該工作空間下會有3個文件夾:src、build、devel。其中src源文件空間放置各個功能包和一個用于這些功能包的CMake配置文件CMakeLists.txt。由于ROS中的源碼采用catkin工具進行編譯,而catkin工具又是基于cmake技術的,所以我們會在src源文件空間和各個功能包中都會見到一個文件CMakeLists.txt,這個文件就是起編譯配置的作用。build編譯空間文件夾放置CMake和catkin編譯功能包時產(chǎn)生的緩存、配置、中間文件等。devel開發(fā)空間文件夾放置編譯好的可執(zhí)行程序,這些可執(zhí)行程序是不需要安裝就能直接運行的。功能包:功能包是ROS中軟件組織的基本形式,一個功能包具有用于創(chuàng)建ROS程序的最小結構和最少內(nèi)容,它可以包含ROS運行的進程(節(jié)點)、配置文件等。如圖,一個功能包中主要包含這幾個文件:CMakeLists.txt功能包配置文件:用于這個功能包cmake編譯時的配置文件。package.xml功能包清單文件:用xml的標簽格式標記這個功能包的各類相關信息,比如包的名稱、依賴關系等。主要作用是為了更容易的安裝和分發(fā)功能包。include/<package_name>功能包頭文件目錄:你可以把你的功能包程序包含的*.h頭文件放在這里,include下之所以還要加一級路徑<package_name>是為了更好的區(qū)分自己定義的頭文件和系統(tǒng)標準頭文件,<package_name>用實際功能包的名稱替代。msg非標準消息定義目錄:消息是ROS中一個進程(節(jié)點)發(fā)送到其他進程(節(jié)點)的信息,消息類型是消息的數(shù)據(jù)結構,ROS系統(tǒng)提供了很多標準類型的消息可以直接使用,如果你要使用一些非標準類型的消息,就需要自己來定義該類型的消息,并把定義的文件放在這里。不過這個文件夾不是必要項,比如程序中只使用標準類型的消息的情況。srv服務類型定義目錄:服務是ROS中進程(節(jié)點)間的請求/響應通信過程,服務類型是服務請求/響應的數(shù)據(jù)結構,服務類型的定義放在這里。如果要調(diào)用此服務,需要使用該功能包名稱和服務名稱。scripts可執(zhí)行腳本文件存放目錄:用于存放bash、python或其他腳本的可執(zhí)行文件。不過這個文件夾不是必要項,比如程序中不使用可執(zhí)行腳本的情況。launch文件目錄:用于存放*.launch文件,*.launch文件用于啟動ROS功能包中的一個或多個節(jié)點,在含有多個節(jié)點啟動的大型項目中很有用。src功能包中節(jié)點源文件存放目錄:一個功能包中可以有多個進程(節(jié)點)程序來完成不同的功能,每個進程(節(jié)點)程序都是可以單獨運行的,這里用于存放這些進程(節(jié)點)程序的源文件,源文件可以用c++、python等來書寫。以上就是ROS機器人系統(tǒng)的基礎框架。為了解釋它是如何工作的,還需要介紹“消息”“服務”“主題”的相關概念。ROS會創(chuàng)建一個連接所有進程(節(jié)點)的網(wǎng)絡,其中的任何進程(節(jié)點)都可以訪問此網(wǎng)絡,并通過該網(wǎng)絡與其他進程(節(jié)點)交互,獲取其他進程(節(jié)點)發(fā)布的信息,并將自身數(shù)據(jù)發(fā)布到網(wǎng)絡上,這個計算圖網(wǎng)絡中的節(jié)點(node)、主題(topic)、服務(server)等都要有唯一的名稱做標識。圖SEQ圖\*ARABIC16節(jié)點:是主要的計算執(zhí)行進程,功能包中創(chuàng)建的每個可執(zhí)行程序在被啟動加載到系統(tǒng)進程中后,該進程就是一個ROS節(jié)點,如圖中的節(jié)點1、節(jié)點2、節(jié)點3等都是節(jié)點(node)。節(jié)點都是各自獨立的可執(zhí)行文件,能夠通過主題(topic)、服務(server)或參數(shù)服務器(parameterserver)與其他節(jié)點通信。ROS通過使用節(jié)點將代碼和功能解耦,提高了系統(tǒng)的容錯力和可維護性。ROS提供了處理節(jié)點的工具,用于節(jié)點信息、狀態(tài)、可用性等的查詢操作。消息:節(jié)點通過消息(message)完成彼此的溝通。消息包含一個節(jié)點發(fā)送給其他節(jié)點的信息數(shù)據(jù)。主題:每個消息都必須發(fā)布到相應的主題(topic),通過主題來實現(xiàn)在ROS計算圖網(wǎng)絡中的路由轉(zhuǎn)發(fā)。當一個節(jié)點發(fā)送數(shù)據(jù)時,意味著該節(jié)點正在向主題發(fā)布消息;節(jié)點可以通過訂閱某個主題,接收來自其他節(jié)點的消息。通過主題進行消息路由不需要節(jié)點之間直接連接,這就意味著發(fā)布者節(jié)點和訂閱者節(jié)點之間不需要知道彼此是否存在,這樣就保證了發(fā)布者節(jié)點與訂閱者節(jié)點之間的解耦合。同一個主題可以有多個訂閱者也可以有多個發(fā)布者,不過要注意必須使用不同的節(jié)點發(fā)布同一個主題。每個主題都是強類型的,不管是發(fā)布消息到主題還是從主題中訂閱消息,發(fā)布者和訂閱者定義的消息類型必須與主題的消息類型相匹配。通過APK程序記錄Rosbag數(shù)據(jù)集本次設計采用的是Github上一款開源Android系統(tǒng)APK,其主要功能就是基于ROS系統(tǒng)下的信息發(fā)布和訂閱,使得移動設備和PC在一個局域網(wǎng)下進行信息(圖像信息和IMU慣導數(shù)據(jù))的傳輸。Android手機和PC連接同一個無線網(wǎng)絡Ubuntu終端運行roscore,啟動一個ROS的masterUbuntu終端運行ifconfig查看自己的IP(如9),用它替換APP初始界面文本框中http://localhost:11311的localhost部分,端口號11311保持不變,修改后點擊Connect。若連接成功,則進入相機界面。圖SEQ圖\*ARABIC17Ubuntu終端運行rostopiclist。顯示/camera/image/compressed和/android/imu表示ROS系統(tǒng)已經(jīng)成功訂閱了服務。圖SEQ圖\*ARABIC18通過Rosbagrecord命令錄制正在運行的Ros系統(tǒng)中節(jié)點的數(shù)據(jù)打包成Rosbag數(shù)據(jù)集,并且可以指定想要的主題。例如/android/imu和/camera/iamge_raw這兩個主題就是包含了相機拍攝的圖像信息和IMU慣導數(shù)據(jù)信息。通過RosbagPlay命令,通過kimera算法庫載入Rosbag數(shù)據(jù)集并進行三維模型重建,生成密集的三維點
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新生兒科三基理論考試試題及答案
- 臨床醫(yī)學概論模擬習題(附參考答案)
- 道路交通安全教育試題(附答案)
- 福建省漳州市教師職稱考試(理論知識)在線模擬題庫及答案
- 銀行信貸考試題庫及答案
- 水利水電工程師考2025測試真題及答案
- 商法一期末考試題及答案
- 車險理賠考試1000題(含答案)第四季
- 食品營養(yǎng)學題庫及答案
- 急危重癥護理學練習題(答案)
- 柴油維修技術培訓課件
- DL∕T 5210.6-2019 電力建設施工質(zhì)量驗收規(guī)程 第6部分:調(diào)整試驗
- 2024年度初會《初級會計實務》高頻真題匯編(含答案)
- 績效考核和薪酬方案通用模板
- YY/T 0590.1-2018醫(yī)用電氣設備數(shù)字X射線成像裝置特性第1-1部分:量子探測效率的測定普通攝影用探測器
- GB/T 16927.1-2011高電壓試驗技術第1部分:一般定義及試驗要求
- 政府會計準則優(yōu)秀課件
- 陣發(fā)性室性心動過速課件
- 無機與分析化學理論教案
- 名詞性從句 講義-英語高考一輪復習語法部分
- T∕ZZB 2722-2022 鏈板式自動排屑裝置
評論
0/150
提交評論