機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐 課件 第9、10章 基于視覺(jué)的機(jī)械臂抓取、移動(dòng)機(jī)器人視覺(jué)SLAM_第1頁(yè)
機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐 課件 第9、10章 基于視覺(jué)的機(jī)械臂抓取、移動(dòng)機(jī)器人視覺(jué)SLAM_第2頁(yè)
機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐 課件 第9、10章 基于視覺(jué)的機(jī)械臂抓取、移動(dòng)機(jī)器人視覺(jué)SLAM_第3頁(yè)
機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐 課件 第9、10章 基于視覺(jué)的機(jī)械臂抓取、移動(dòng)機(jī)器人視覺(jué)SLAM_第4頁(yè)
機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐 課件 第9、10章 基于視覺(jué)的機(jī)械臂抓取、移動(dòng)機(jī)器人視覺(jué)SLAM_第5頁(yè)
已閱讀5頁(yè),還剩145頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章基于視覺(jué)的機(jī)械臂抓取機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐目錄content深度相機(jī)9.19.5基于深度學(xué)習(xí)的物體識(shí)別9.2本章小結(jié)手眼標(biāo)定原理和過(guò)程9.3基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)9.49.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)雙目相機(jī)雙目立體視覺(jué)算法是模擬人眼系統(tǒng)的一種算法,因低廉的成本、較快的速度得到廣泛使用。該算法用雙目模擬人眼,基于視差原理,利用成像設(shè)備從不同的角度、位置對(duì)目標(biāo)物體進(jìn)行觀察,實(shí)時(shí)采集左右兩個(gè)圖像,利用匹配算法實(shí)現(xiàn)左右圖像特征點(diǎn)對(duì)的匹配,進(jìn)而得到視差圖,然后利用三角幾何原理,實(shí)現(xiàn)對(duì)目標(biāo)物體的三維信息恢復(fù)。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)雙目相機(jī)采用雙目立體視覺(jué)算法獲取深度圖像的設(shè)備稱(chēng)為雙目相機(jī)。雙目相機(jī)的主要優(yōu)點(diǎn)如下。對(duì)硬件要求低,成本也低。對(duì)室內(nèi)外場(chǎng)景的適應(yīng)性好。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)雙目相機(jī)采用雙目立體視覺(jué)算法獲取深度圖像的設(shè)備稱(chēng)為雙目相機(jī)。但是雙目相機(jī)的缺點(diǎn)也非常明顯,具體如下。對(duì)環(huán)境光照敏感,光線變化易導(dǎo)致匹配失敗或精度降低。計(jì)算復(fù)雜度較高,涉及左右兩個(gè)攝像頭的特征匹配,需要消耗較多的計(jì)算資源?;€(兩個(gè)攝像頭間距)限制了測(cè)量范圍,測(cè)量范圍和基線成正比。不適用于缺乏紋理的場(chǎng)景(如白墻場(chǎng)景),因?yàn)殡p目視覺(jué)算法根據(jù)視覺(jué)特征進(jìn)行圖像匹配,沒(méi)有特征會(huì)導(dǎo)致匹配失敗。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)RGB-D深度相機(jī)通過(guò)結(jié)構(gòu)光或ToF測(cè)量物體深度信息,相比于雙目相機(jī)通過(guò)視差計(jì)算深度的方式,RGB-D深度相機(jī)能夠主動(dòng)測(cè)量每個(gè)像素的深度。RGB-D深度相機(jī)最大的特點(diǎn)是不僅能夠像普通相機(jī)一樣去獲取圖像信息,還能夠得到深度圖,深度圖中包含每個(gè)像素點(diǎn)的深度數(shù)據(jù)(即空間中的點(diǎn)到相機(jī)成像平面的距離),避免了雙目相機(jī)需要利用視差,通過(guò)軟件計(jì)算每個(gè)像素點(diǎn)深度信息的煩瑣過(guò)程。RGB-D深度相機(jī)除含有一個(gè)普通的光學(xué)攝像頭外,還含有一個(gè)發(fā)射器和一個(gè)接收器。RGB-D深度相機(jī)主動(dòng)向物體發(fā)射并接收返回光,通過(guò)物理手段計(jì)算出相機(jī)與物體之間的距離。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)如圖所示,微軟公司2012年發(fā)布的KinectV1相機(jī)是一種基于結(jié)構(gòu)光的RGB-D深度相機(jī),中間的元件為RGB攝像頭(ColorCamera),可采集彩色圖像;左邊的元件為紅外發(fā)射器(IRProject),右邊的元件為紅外接收器(IRCamera),左右兩個(gè)元件組成了深度傳感器(DepthSensor)。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)基于結(jié)構(gòu)光的RGB-D深度相機(jī)的基本原理是:通過(guò)紅外發(fā)射器,將具有一定結(jié)構(gòu)特征的紅外線圖案(Pattern)投影到物體表面,再由專(zhuān)門(mén)的攝像頭進(jìn)行采集。這種具備一定圖案結(jié)構(gòu)的光線到達(dá)被攝物體表面時(shí),被攝物體表面結(jié)構(gòu)的不同會(huì)導(dǎo)致圖案結(jié)構(gòu)變形,通過(guò)運(yùn)算單元可將這種圖案結(jié)構(gòu)變形換算成深度信息,以此來(lái)獲得被攝物體的三維結(jié)構(gòu)。根據(jù)結(jié)構(gòu)光圖案的不同,其一般可分為線掃描結(jié)構(gòu)光(也叫條紋結(jié)構(gòu)光)和面陣結(jié)構(gòu)光。其中,線掃描結(jié)構(gòu)光比面陣結(jié)構(gòu)光簡(jiǎn)單,精度也比較高,在工業(yè)中廣泛用于物體體積測(cè)量、三維成像等領(lǐng)域。面陣結(jié)構(gòu)光大致可分為兩類(lèi):編碼結(jié)構(gòu)光和隨機(jī)結(jié)構(gòu)光。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)編碼結(jié)構(gòu)光又可以分為時(shí)序編碼結(jié)構(gòu)光和空間編碼結(jié)構(gòu)光。時(shí)序編碼結(jié)構(gòu)光是在一定時(shí)間范圍內(nèi),通過(guò)投影器向被測(cè)空間投射的一系列明暗不同的結(jié)構(gòu)光。每次投射都通過(guò)相機(jī)進(jìn)行成像,對(duì)每個(gè)像素生成唯一的編碼值。時(shí)序編碼結(jié)構(gòu)光的優(yōu)點(diǎn)是精度高,缺點(diǎn)是只適用于靜態(tài)場(chǎng)景,而且需要拍攝大量圖像,實(shí)時(shí)性不好。為滿(mǎn)足動(dòng)態(tài)場(chǎng)景的需要,可以采用空間編碼結(jié)構(gòu)光。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)編碼結(jié)構(gòu)光又可以分為時(shí)序編碼結(jié)構(gòu)光和空間編碼結(jié)構(gòu)光??臻g編碼結(jié)構(gòu)光特指向被測(cè)空間中投影的經(jīng)過(guò)數(shù)學(xué)編碼的、一定范圍內(nèi)的、光斑不具備重復(fù)性的結(jié)構(gòu)光。這樣,某個(gè)點(diǎn)的編碼值可以通過(guò)其鄰域獲得。重建的精度取決于空間編碼的像素?cái)?shù)量(窗口大?。?。常用的空間編碼方式有方波、正弦波、德布魯因序列、二維空間編碼??臻g編碼結(jié)構(gòu)光的優(yōu)點(diǎn)是無(wú)須很多圖像,只需要一對(duì)圖像即可進(jìn)行三維重建,實(shí)時(shí)性好,常用于動(dòng)態(tài)環(huán)境中;缺點(diǎn)是易受噪聲干擾,反光、照明等原因可能導(dǎo)致成像時(shí)部分區(qū)域的編碼信息缺失,對(duì)空間中的遮擋比較敏感,相較于時(shí)序編碼結(jié)構(gòu)光精度較低。9.1深度相機(jī)1雙目相機(jī)和RGB-D深度相機(jī)RGB-D深度相機(jī)隨機(jī)結(jié)構(gòu)光較為簡(jiǎn)單,也更加常用。隨機(jī)結(jié)構(gòu)光是投影器向被測(cè)空間中投射的亮度不均和隨機(jī)分布的點(diǎn)狀結(jié)構(gòu)光(不帶編碼信息)。隨機(jī)結(jié)構(gòu)光通過(guò)雙目相機(jī)成像,所得的圖像經(jīng)過(guò)極線校正后再進(jìn)行雙目稠密匹配(與雙目算法相似),即可重建出對(duì)應(yīng)的深度圖。由于結(jié)構(gòu)光容易受環(huán)境光干擾,在室外場(chǎng)景中精度差,同時(shí)隨著檢測(cè)距離的增加,其精度也會(huì)變差,只適合中短距離使用。因此,出現(xiàn)了結(jié)構(gòu)光與雙目立體視覺(jué)融合的技術(shù),采用這種技術(shù)的深度相機(jī)包括圖漾雙目深度相機(jī)、IntelRealSenseD4系列雙目深度相機(jī)等。9.1深度相機(jī)2雙目相機(jī)模型和RGB-D深度相機(jī)模型雙目相機(jī)模型雙目相機(jī)測(cè)距的原理與人眼類(lèi)似,通過(guò)對(duì)兩圖像視差的計(jì)算,實(shí)現(xiàn)對(duì)兩圖像中同一物點(diǎn)距離的測(cè)量。雙目立體視覺(jué)測(cè)距模型如圖所示,模型假設(shè)左右兩個(gè)相機(jī)的光軸平行,成像平面共面,且焦距等內(nèi)在參數(shù)一致。9.1深度相機(jī)2雙目相機(jī)模型和RGB-D深度相機(jī)模型雙目相機(jī)模型設(shè)相機(jī)的焦距為f、相機(jī)間的基線長(zhǎng)度(左右相機(jī)光心之間的距離)為b,根據(jù)幾何關(guān)系,可以列出以下方程:xl和xr為P點(diǎn)在左右兩個(gè)成像平面的投影點(diǎn)在X方向上的坐標(biāo),yl和yr為P點(diǎn)在左右兩個(gè)成像平面的投影點(diǎn)在Y方向上的坐標(biāo)。進(jìn)而可解得:9.1深度相機(jī)1雙目相機(jī)模型和RGB-D深度相機(jī)模型雙目相機(jī)模型定義視差

,即左成像平面上的點(diǎn)

和右成像平面上的對(duì)應(yīng)點(diǎn)

的橫坐標(biāo)之差,則有:通過(guò)上式,能夠得到相機(jī)坐標(biāo)系與圖像坐標(biāo)系之間的變換關(guān)系??梢?jiàn),如果知道相機(jī)的焦距、兩相機(jī)間基線長(zhǎng)度和視差,就可以計(jì)算點(diǎn)P的深度z。焦距及基線長(zhǎng)度可通過(guò)相機(jī)標(biāo)定獲得,而視差的計(jì)算則是雙目立體視覺(jué)需要解決的核心問(wèn)題,一般通過(guò)對(duì)左右相機(jī)采集到的兩圖像進(jìn)行特征點(diǎn)匹配來(lái)實(shí)現(xiàn)。9.1深度相機(jī)2雙目相機(jī)模型和RGB-D深度相機(jī)模型RGB-D深度相機(jī)模型KinectV2相機(jī)通過(guò)ToF法測(cè)量相機(jī)與目標(biāo)物體之間的距離,而ToF法利用紅外線在空氣中傳播的時(shí)間,通過(guò)紅外發(fā)射器向物體發(fā)射紅外線,然后記錄紅外線從發(fā)射到返回之間的時(shí)間,再通過(guò)計(jì)算確定相機(jī)與物體之間的距離,原理如圖所示。9.1深度相機(jī)2雙目相機(jī)模型和RGB-D深度相機(jī)模型RGB-D深度相機(jī)模型對(duì)于RGB-D深度相機(jī),需要求解深度相機(jī)與2D彩色相機(jī)之間的外參矩陣,將RGB圖像與深度圖像對(duì)齊,雙相機(jī)幾何關(guān)系如圖所示。9.1深度相機(jī)2雙目相機(jī)模型和RGB-D深度相機(jī)模型RGB-D深度相機(jī)模型假設(shè)物體表面上有一點(diǎn)P,它在深度圖像上的投影坐標(biāo)為pir,在深度相機(jī)坐標(biāo)系下的坐標(biāo)為Pir,則有:式中,Hir為深度相機(jī)的內(nèi)參矩陣。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別MaskR-CNNMaskR-CNN(MaskRegion-ConvolutionNeuralNetwork,帶掩碼的區(qū)域卷積神經(jīng)網(wǎng)絡(luò))是目前流行的實(shí)例分割架構(gòu),能夠?qū)θ我獯笮〉妮斎雸D像進(jìn)行特征學(xué)習(xí)。MaskR-CNN擴(kuò)展自FasterR-CNN,由何凱明在2017年提出。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別MaskR-CNNFasterR-CNN是一個(gè)流行的目標(biāo)檢測(cè)框架,MaskR-CNN在FasterR-CNN的基礎(chǔ)上,將RoIPooling(RegionofInterestPooling,感興趣區(qū)域池化)層替換成了RoIAlign(區(qū)域特征聚集)層,并添加了一個(gè)預(yù)測(cè)分割掩碼(Mask)的分支(FCN層,即全連接層),將其擴(kuò)展為實(shí)例分割框架。MaskR-CNN網(wǎng)絡(luò)結(jié)構(gòu)如圖所示。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSDSSD(SingleShotMultiBoxDetector,單步多框目標(biāo)檢測(cè))是基于Caffe框架實(shí)現(xiàn)的一種目標(biāo)檢測(cè)算法,其特點(diǎn)是識(shí)別速度快且準(zhǔn)確率高。SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖所示。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSDSSD網(wǎng)絡(luò)的主體結(jié)構(gòu)是在一個(gè)基礎(chǔ)網(wǎng)絡(luò)的基礎(chǔ)上,增加一系列小的卷積神經(jīng)網(wǎng)絡(luò)對(duì)目標(biāo)位置與目標(biāo)所屬種類(lèi)的信任程度進(jìn)行預(yù)測(cè)。SSD在用于圖像分類(lèi)的基礎(chǔ)網(wǎng)絡(luò)上,增加若干不同尺度的特征映射圖,它們的尺度逐漸降低,用于獲得不同大小的感受野(ReceptiveField,RF)。尺度較大的特征映射圖的感受野較小,可以對(duì)小的目標(biāo)進(jìn)行感知,尺度較小的特征映射圖的感受野較大,可以對(duì)較大的目標(biāo)進(jìn)行感知。SSD通過(guò)多種尺度的特征映射圖,對(duì)多種尺度的目標(biāo)進(jìn)行感知。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSD與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相比,SSD網(wǎng)絡(luò)修改了輸入層以用于數(shù)據(jù)擴(kuò)充,除輸入圖像信息之外,其還通過(guò)一個(gè)基礎(chǔ)網(wǎng)絡(luò)獲得圖像的高層次特征(目標(biāo)框的位置及形狀信息),并在其后擴(kuò)展出若干不同尺度的特征映射圖。在每張?zhí)卣饔成鋱D的后面,分別添加一個(gè)小的卷積神經(jīng)網(wǎng)絡(luò)作為特征檢測(cè)器,稱(chēng)為CNN特征檢測(cè)器(CNNDetector),對(duì)目標(biāo)的位置及其所屬種類(lèi)做出識(shí)別,最后經(jīng)過(guò)損失層整合,進(jìn)行非極大值抑制后輸出。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSD對(duì)于SSD網(wǎng)絡(luò)而言,在訓(xùn)練階段,有兩個(gè)輸入:待提取目標(biāo)的圖像,以及目標(biāo)的位置、大小和形狀信息;在識(shí)別階段,則只需要輸入圖像即可。除此之外,為了使訓(xùn)練出的網(wǎng)絡(luò)能夠具有更好的泛化能力(即在目標(biāo)尺寸較小、發(fā)生形變、部分遮擋等情況出現(xiàn)時(shí),依舊能夠很好第識(shí)別目標(biāo)),需要在原始訓(xùn)練數(shù)據(jù)的基礎(chǔ)上進(jìn)行數(shù)據(jù)擴(kuò)充,豐富訓(xùn)練集樣本的種類(lèi)。SSD網(wǎng)絡(luò)中采用的數(shù)據(jù)擴(kuò)充方式主要有隨機(jī)采樣、圖像變換兩種。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSDCNN特征檢測(cè)器的組成如圖所示,每個(gè)CNN特征檢測(cè)器由三部分組成:先驗(yàn)框生成器(PriorBoxGenerator)、位置回歸器(CNNforPredicting(x,y,w,h))及種類(lèi)置信度回歸器(CNNforPredictingConfidence)。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別SSD對(duì)于一個(gè)卷積神經(jīng)網(wǎng)絡(luò),損失的計(jì)算方式是由訓(xùn)練目標(biāo)決定的,即期望輸出與網(wǎng)絡(luò)輸出的差值。在訓(xùn)練階段,損失層計(jì)算得到損失以后,進(jìn)行反向傳播和權(quán)值修正。在SSD網(wǎng)絡(luò)中,損失層共有四個(gè)輸入,分別為網(wǎng)絡(luò)輸入中的標(biāo)注信息、先驗(yàn)框生成器生成的先驗(yàn)框、位置回歸器得到的位置信息、種類(lèi)置信度回歸器得到的各個(gè)類(lèi)別的置信度。在損失層,將根據(jù)這四的組成輸入計(jì)算損失并進(jìn)行反向傳播,同時(shí)發(fā)掘具有代表性的負(fù)樣本用于網(wǎng)絡(luò)的進(jìn)一步訓(xùn)練。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別YOLOYOLO(YouOnlyLookOnce)是RedmonJ在2015年提出的一種全新的端到端的目標(biāo)檢測(cè)算法。在檢測(cè)過(guò)程中,YOLO將目標(biāo)檢測(cè)算法的生成目標(biāo)候選區(qū)域、提取檢測(cè)目標(biāo)特征、檢測(cè)目標(biāo)候選驗(yàn)證的三個(gè)階段,用一個(gè)神經(jīng)網(wǎng)絡(luò)加以整合,直接快速地完成目標(biāo)檢測(cè)任務(wù)。YOLO提取整個(gè)圖像的特征信息,分析每個(gè)邊界框的坐標(biāo)參數(shù)和其中的目標(biāo)所屬類(lèi)別的概率,將目標(biāo)檢測(cè)分為邊界框坐標(biāo)參數(shù)的回歸問(wèn)題和類(lèi)別的分類(lèi)問(wèn)題來(lái)處理,從而得到目標(biāo)所屬類(lèi)別及其位置坐標(biāo)。YOLO算法在保證較高平均精度的同時(shí),實(shí)現(xiàn)了端到端的訓(xùn)練和實(shí)時(shí)識(shí)別,標(biāo)準(zhǔn)的YOLO算法每秒能夠檢測(cè)45個(gè)圖像,F(xiàn)astYOLO算法每秒能夠檢測(cè)155個(gè)圖像。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別YOLOYOLO目標(biāo)檢測(cè)流程如圖所示。首先將輸入的圖像劃分為

個(gè)網(wǎng)格(GridCell),如果圖像中某一個(gè)目標(biāo)的中心剛好落在其中的某一個(gè)網(wǎng)格中,那么這個(gè)目標(biāo)就由該網(wǎng)格進(jìn)行預(yù)測(cè)。9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別YOLO每個(gè)網(wǎng)格預(yù)測(cè)B個(gè)邊界框及其置信度評(píng)分,每個(gè)預(yù)測(cè)邊界框包含5個(gè)預(yù)測(cè)值:x、y、w、h和置信度(Confidence)。(x,y)坐標(biāo)表示邊界框的中心相對(duì)其網(wǎng)格的位置,(w,h)為邊界框相對(duì)于整個(gè)圖像的寬和高。置信度反映了所預(yù)測(cè)的邊界框內(nèi)是否含有目標(biāo),以及邊界框預(yù)測(cè)的準(zhǔn)確度,其計(jì)算公式為:9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別YOLO如果網(wǎng)格中不存在目標(biāo),則式中的

,即置信度也為0。如果存在某一目標(biāo)的中心落在網(wǎng)格中,則

,置信度等于預(yù)測(cè)目標(biāo)框面積與真實(shí)目標(biāo)框面積之間的交集與并集之比(IntersectionoverUnion,IOU),計(jì)算公式為:9.2基于深度學(xué)習(xí)的物體識(shí)別1基于卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別YOLO同時(shí),每個(gè)單元網(wǎng)格還在網(wǎng)格內(nèi)存在目標(biāo)的條件下,對(duì)目標(biāo)是C個(gè)類(lèi)別中的某一類(lèi)的概率進(jìn)行預(yù)測(cè),得到C個(gè)類(lèi)別概率

,表示該網(wǎng)格中存在第i類(lèi)物體中心的概率。C為類(lèi)別數(shù)量,與B無(wú)關(guān)。將類(lèi)別預(yù)測(cè)得到的值與預(yù)測(cè)邊界框的置信度相乘,可得到每個(gè)預(yù)測(cè)邊界框在其網(wǎng)格中的某個(gè)類(lèi)別物體i的置信度Confidence(i),即:9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架TensorFlow框架TensorFlow是Google提出的深度學(xué)習(xí)框架,具有Python和C++接口,利用其靈活易用的前端語(yǔ)言,人們可以輕松地構(gòu)建復(fù)雜的算法模型;同時(shí),其后端高效的執(zhí)行系統(tǒng)與分布式架構(gòu)保證了在模型訓(xùn)練和執(zhí)行方面的高性能。TensorFlow從2015年11月開(kāi)源以來(lái),一直是GitHub機(jī)器學(xué)習(xí)門(mén)類(lèi)中最受關(guān)注的項(xiàng)目之一,也是業(yè)界優(yōu)秀的深度學(xué)習(xí)框架之一。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架TensorFlow框架TensorFlow是一個(gè)基于數(shù)據(jù)流圖(DataFlowGraph)的數(shù)值計(jì)算開(kāi)源軟件庫(kù),其靈活的架構(gòu)設(shè)計(jì)允許開(kāi)發(fā)者以單機(jī)或分布式的方式,將計(jì)算部署到臺(tái)式機(jī)或服務(wù)器上。數(shù)據(jù)流圖是TensorFlow中對(duì)計(jì)算過(guò)程的抽象描述,如圖所示。數(shù)據(jù)流圖是有向圖,圖中的各節(jié)點(diǎn)表示各種數(shù)學(xué)計(jì)算操作,每個(gè)邊表示操作與操作之間傳遞的高維數(shù)組數(shù)據(jù),稱(chēng)為tensor。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架TensorFlow框架TensorFlow作為一個(gè)深度學(xué)習(xí)框架,主要具有以下優(yōu)勢(shì)?;赥ensorFlow搭建模型時(shí)使用的代碼量少,可以用非常簡(jiǎn)潔的語(yǔ)言實(shí)現(xiàn)各種復(fù)雜的算法模型,將開(kāi)發(fā)者從非常消耗精力的編碼和調(diào)試工作中解放出來(lái),在提高程序可維護(hù)性的同時(shí)節(jié)省大量的開(kāi)發(fā)時(shí)間。TensorFlow的內(nèi)核執(zhí)行系統(tǒng)使用C++語(yǔ)言編寫(xiě),擁有非常高的執(zhí)行效率。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架TensorFlow框架TensorFlow作為一個(gè)深度學(xué)習(xí)框架,主要具有以下優(yōu)勢(shì)。TensorFlow具有優(yōu)秀的分層架構(gòu)設(shè)計(jì),采用前端編程語(yǔ)言與后端執(zhí)行引擎分離,執(zhí)行引擎與面向硬件的計(jì)算分離的架構(gòu),使模型非常方便地運(yùn)行在異構(gòu)設(shè)備環(huán)境中,充分實(shí)現(xiàn)了“高內(nèi)聚,低耦合”的設(shè)計(jì)思想,開(kāi)發(fā)者在前端可以不用關(guān)心硬件運(yùn)行的特殊機(jī)制,而專(zhuān)心于算法和應(yīng)用方面的研究。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架PyTorch框架PyTorch的前身是Torch。自從互聯(lián)網(wǎng)巨頭原Facebook人工智能研究院(FAIR)開(kāi)源了大量基于Torch框架的深度學(xué)習(xí)模塊后,Torch逐漸流行起來(lái),它是一個(gè)擁有大量機(jī)器學(xué)習(xí)算法支撐的科學(xué)計(jì)算框架,應(yīng)用靈活。Torch框架的一個(gè)特殊之處是采用Lua作為編程語(yǔ)言,后來(lái)PyTorch框架使用Python語(yǔ)言重寫(xiě)了Torch框架底層很多內(nèi)容,不僅更加靈活,支持動(dòng)態(tài)圖,還提供了Python接口。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架PyTorch框架PyTorch具有以下優(yōu)點(diǎn)。TensorFlow與Caffe都采用命令式的編程語(yǔ)言,而且是靜態(tài)的,使用TensorFlow時(shí),首先必須構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),如果想要改變網(wǎng)絡(luò)結(jié)構(gòu),需要從頭開(kāi)始。但是PyTorch是動(dòng)態(tài)的,通過(guò)一次反向求導(dǎo)的技術(shù),開(kāi)發(fā)者可以任意改變神經(jīng)網(wǎng)絡(luò)的行為。到目前為止,PyTorch的實(shí)現(xiàn)是最快的,可以獲得很高的靈活性,這也是PyTorch對(duì)比TensorFlow具有的最大的優(yōu)勢(shì)。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架PyTorch框架PyTorch具有以下優(yōu)點(diǎn)。PyTorch的設(shè)計(jì)思路是線性、直觀且易于實(shí)現(xiàn)的,當(dāng)代碼出現(xiàn)問(wèn)題時(shí),開(kāi)發(fā)者可以輕松地找到出錯(cuò)的代碼,不會(huì)因錯(cuò)誤的指向浪費(fèi)太多的調(diào)試時(shí)間。PyTorch的代碼相對(duì)于TensorFlow而言,更加簡(jiǎn)潔、直觀。對(duì)比TensorFlow高度工業(yè)化的底層代碼,PyTorch的源碼更友好,更容易看懂,開(kāi)發(fā)者對(duì)其框架的理解會(huì)更深。9.2基于深度學(xué)習(xí)的物體識(shí)別1常見(jiàn)深度學(xué)習(xí)框架PyTorch框架PyTorch也存在以下缺點(diǎn)。針對(duì)移動(dòng)端、嵌入式部署及高性能服務(wù)器端的部署,性能表現(xiàn)有待提升。由于PyTorch的流行比TensorFlow晚一些,它的開(kāi)發(fā)社區(qū)沒(méi)有那么強(qiáng)大,實(shí)現(xiàn)的相關(guān)開(kāi)源代碼較少,不支持某些運(yùn)算(如快速傅里葉變換、檢查無(wú)窮與非數(shù)值張量等)。9.3手眼標(biāo)定原理和過(guò)程為了使機(jī)器人能夠根據(jù)相機(jī)采集的圖像信息進(jìn)行操作,需要獲得相機(jī)(機(jī)器人的眼)與機(jī)器人末端夾爪(機(jī)器人的手,以下簡(jiǎn)稱(chēng)機(jī)器人末端)之間的坐標(biāo)變換關(guān)系,即對(duì)相機(jī)坐標(biāo)系與機(jī)器人末端坐標(biāo)系進(jìn)行標(biāo)定,該過(guò)程也叫手眼標(biāo)定。通過(guò)第8章的相機(jī)標(biāo)定,我們得到了相機(jī)的內(nèi)外參數(shù)和畸變系數(shù),建立了物體坐標(biāo)系到像素坐標(biāo)系之間的變換。而通過(guò)機(jī)械臂夾爪去抓取物體,需要建立機(jī)械臂與目標(biāo)物體之間的坐標(biāo)變換關(guān)系,相機(jī)可以作為聯(lián)系兩者的“橋梁”,問(wèn)題就可以轉(zhuǎn)化為求機(jī)械臂與相機(jī)之間的坐標(biāo)變換關(guān)系。因此,通過(guò)手眼標(biāo)定,獲取機(jī)器人末端坐標(biāo)系和相機(jī)坐標(biāo)系之間的關(guān)系,就可以將識(shí)別的目標(biāo)物體位置坐標(biāo)變換到機(jī)器人末端坐標(biāo)系下,進(jìn)而實(shí)現(xiàn)物體抓取等操作。9.3手眼標(biāo)定原理和過(guò)程機(jī)器人的手眼關(guān)系分為eye-in-hand及eye-to-hand兩種,如圖所示。其中eye-in-hand叫眼在手上,機(jī)器人的視覺(jué)系統(tǒng)隨著機(jī)器人末端運(yùn)動(dòng);而eye-to-hand叫眼在手外,機(jī)器人的視覺(jué)系統(tǒng)不會(huì)在世界坐標(biāo)系內(nèi)運(yùn)動(dòng),與機(jī)器人基座的坐標(biāo)變換關(guān)系是固定的。對(duì)于eye-in-hand的情況,機(jī)器人手眼標(biāo)定即標(biāo)定機(jī)器人末端與相機(jī)之間的坐標(biāo)變換關(guān)系;對(duì)于eye-to-hand的情況,機(jī)器人手眼標(biāo)定即標(biāo)定機(jī)器人基座與相機(jī)之間的坐標(biāo)變換關(guān)系。9.3手眼標(biāo)定原理和過(guò)程兩種手眼標(biāo)定方式的基本原理相似,如圖所示,下面介紹標(biāo)定原理。設(shè)

為機(jī)器人末端坐標(biāo)系相對(duì)于機(jī)器人基座坐標(biāo)系的變換矩陣,

為相機(jī)坐標(biāo)系相對(duì)于機(jī)器人末端坐標(biāo)系的變換矩陣,則相機(jī)坐標(biāo)系相對(duì)于機(jī)器人基座坐標(biāo)系的變換矩陣為其中,

可利用機(jī)器人各關(guān)節(jié)角度及正運(yùn)動(dòng)學(xué)方程計(jì)算得到,而

需要通過(guò)手眼標(biāo)定算法來(lái)求解。9.3手眼標(biāo)定原理和過(guò)程又設(shè)

為物體相對(duì)于相機(jī)坐標(biāo)系的變換矩陣,則:在eye-in-hand方式中,機(jī)器人運(yùn)動(dòng)到任意兩個(gè)位姿,有以下公式:令可得:在eye-to-hand方式中,機(jī)器人末端夾著標(biāo)定板,運(yùn)動(dòng)到任意兩個(gè)位姿,有以下公式:令可得:9.3手眼標(biāo)定原理和過(guò)程為進(jìn)一步求解齊次方程

,先將齊次變換矩陣寫(xiě)成旋轉(zhuǎn)矩陣和平移向量的形式:將上式展開(kāi),即可得到待求解的方程組:9.3手眼標(biāo)定原理和過(guò)程在上面的方程組中,RA、RB、tA、tB均可通過(guò)測(cè)量得到,I為單位陣。此方程組有多種解法,其中最經(jīng)典的解法為T(mén)sai-Lenz兩步法,即先利用方程的上式求解出旋轉(zhuǎn)矩陣R,再代入下式求解出平移向量t。求解過(guò)程中,利用旋轉(zhuǎn)向量-旋轉(zhuǎn)角來(lái)描述旋轉(zhuǎn)變換,具體的實(shí)現(xiàn)步驟如下。將旋轉(zhuǎn)矩陣RA、RB變換為旋轉(zhuǎn)向量rA、rB。根據(jù)羅德里格斯旋轉(zhuǎn)公式(Rodrigues’RotationFormula),旋轉(zhuǎn)矩陣R*可以通過(guò)旋轉(zhuǎn)向量

和旋轉(zhuǎn)角

進(jìn)行表示:式中,

為r的反對(duì)稱(chēng)陣:9.3手眼標(biāo)定原理和過(guò)程在上面的方程組中,RA、RB、tA、tB均可通過(guò)測(cè)量得到,I為單位陣。此方程組有多種解法,其中最經(jīng)典的解法為T(mén)sai-Lenz兩步法,即先利用方程的上式求解出旋轉(zhuǎn)矩陣R,再代入下式求解出平移向量t。求解過(guò)程中,利用旋轉(zhuǎn)向量-旋轉(zhuǎn)角來(lái)描述旋轉(zhuǎn)變換,具體的實(shí)現(xiàn)步驟如下。定義新的旋轉(zhuǎn)向量表達(dá)Pr,有:式中,

為旋轉(zhuǎn)向量r的單位向量:進(jìn)而可得:9.3手眼標(biāo)定原理和過(guò)程在上面的方程組中,RA、RB、tA、tB均可通過(guò)測(cè)量得到,I為單位陣。此方程組有多種解法,其中最經(jīng)典的解法為T(mén)sai-Lenz兩步法,即先利用方程的上式求解出旋轉(zhuǎn)矩陣R,再代入下式求解出平移向量t。求解過(guò)程中,利用旋轉(zhuǎn)向量-旋轉(zhuǎn)角來(lái)描述旋轉(zhuǎn)變換,具體的實(shí)現(xiàn)步驟如下。根據(jù)下式,計(jì)算初始旋轉(zhuǎn)向量

:根據(jù)下式,計(jì)算旋轉(zhuǎn)向量P:9.3手眼標(biāo)定原理和過(guò)程在上面的方程組中,RA、RB、tA、tB均可通過(guò)測(cè)量得到,I為單位陣。此方程組有多種解法,其中最經(jīng)典的解法為T(mén)sai-Lenz兩步法,即先利用方程的上式求解出旋轉(zhuǎn)矩陣R,再代入下式求解出平移向量t。求解過(guò)程中,利用旋轉(zhuǎn)向量-旋轉(zhuǎn)角來(lái)描述旋轉(zhuǎn)變換,具體的實(shí)現(xiàn)步驟如下。根據(jù)下式,計(jì)算旋轉(zhuǎn)矩陣R:根據(jù)計(jì)算所得旋轉(zhuǎn)矩陣R,求解平移向量t:9.3手眼標(biāo)定原理和過(guò)程因此,可以將手眼標(biāo)定的具體過(guò)程分為下面四個(gè)步驟進(jìn)行。對(duì)相機(jī)進(jìn)行標(biāo)定,獲得相機(jī)內(nèi)參。使用eye-to-hand或者eye-in-hand方式將相機(jī)、標(biāo)定板固定好,啟動(dòng)機(jī)器人,調(diào)整機(jī)器人末端位姿,并將對(duì)應(yīng)的照片、機(jī)器人末端位姿記錄下來(lái)。利用相機(jī)內(nèi)參,計(jì)算得到照片中相機(jī)與標(biāo)定板之間的坐標(biāo)變換關(guān)系。利用Tsai-Lenz兩步法求解前述方程,先從方程中求解出旋轉(zhuǎn)矩陣,再求解出平移向量,得到4×4

的齊次變換矩陣。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)機(jī)器人的智能化不僅要求其能夠感知環(huán)境,而且要求其能夠與環(huán)境中的物體進(jìn)行交互。抓取便是機(jī)器人與物體進(jìn)行交互的一種典型方式。為了提高機(jī)器人與物體的交互水平,機(jī)器人需要可以很好地進(jìn)行物體感知,這也是計(jì)算機(jī)視覺(jué)與機(jī)器人技術(shù)領(lǐng)域的長(zhǎng)期研究目標(biāo)。隨著傳感器技術(shù)的發(fā)展,目前大多數(shù)機(jī)器人已經(jīng)裝備了單目相機(jī)或深度相機(jī),但相機(jī)獲取的信息僅局限于像素中存儲(chǔ)的RGB信息或深度信息,傳感器的原始數(shù)據(jù)僅能為機(jī)器人提供環(huán)境感知信息。為了使機(jī)器人能夠基于視覺(jué)進(jìn)行物體抓取,通常需要通過(guò)計(jì)算機(jī)視覺(jué)算法,提取環(huán)境中物體的高級(jí)語(yǔ)義信息,如物體的位置、姿態(tài)、抓取點(diǎn)等。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)1目標(biāo)物體定位大多數(shù)機(jī)械臂抓取方法的第一步都是計(jì)算目標(biāo)物體在輸入圖像中的位置,這涉及目標(biāo)檢測(cè)和目標(biāo)分割技術(shù)。目標(biāo)檢測(cè)提供目標(biāo)物體的矩形邊界框,而目標(biāo)分割則提供目標(biāo)物體的精確邊界。后者提供了對(duì)象所在區(qū)域的更準(zhǔn)確的描述,因而其計(jì)算更加耗時(shí)。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)1目標(biāo)物體定位2D目標(biāo)檢測(cè)流程如圖所示。傳統(tǒng)的2D目標(biāo)檢測(cè)算法依賴(lài)于模板匹配,模板匹配利用人工設(shè)計(jì)的描述符(如SIFT、SURF、BagofWords等)訓(xùn)練分類(lèi)器,如神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)或Adaboost。這種基于描述符的算法適用范圍有限,而基于深度學(xué)習(xí)的算法近年來(lái)逐漸流行起來(lái),該算法可以分為兩階段算法和一階段算法。兩階段算法包括區(qū)域建議生成和分類(lèi)兩個(gè)階段,如R-CNN、MaskR-CNN;而一階段算法可直接得出檢測(cè)結(jié)果,如YOLO、SSD。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)1目標(biāo)物體定位2D目標(biāo)分割流程如圖所示。傳統(tǒng)的目標(biāo)分割算法大多基于聚類(lèi)算法或圖分割算法,性能有限。隨著全卷積神經(jīng)網(wǎng)絡(luò)(FullyConvolutionalNetworks)的提出,出現(xiàn)了很多基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)分割算法,如SegNet、DeepLab等。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)1目標(biāo)物體定位3D目標(biāo)檢測(cè)流程如圖所示。除RGB圖像數(shù)據(jù)外,還使用3D點(diǎn)云、3D局部形狀描述符(如FPFH、SHOT等)來(lái)執(zhí)行檢測(cè)任務(wù)。例如,基于深度學(xué)習(xí)的3D目標(biāo)檢測(cè)算法Complex-YOLO結(jié)合激光雷達(dá)輸出的點(diǎn)云數(shù)據(jù)檢測(cè)物體的包圍框。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)1目標(biāo)物體定位3D目標(biāo)分割流程如圖所示。傳統(tǒng)的3D目標(biāo)分割算法通?;诰垲?lèi)算法,其表現(xiàn)通常差強(qiáng)人意。隨著PointNet及PointCNN等3D神經(jīng)網(wǎng)絡(luò)模型的出現(xiàn),人們利用神經(jīng)網(wǎng)絡(luò)進(jìn)行點(diǎn)云的特征提取,取得了不俗的目標(biāo)分割性能。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)姿態(tài)估計(jì)在諸如增強(qiáng)現(xiàn)實(shí)、機(jī)器人操作和無(wú)人駕駛等領(lǐng)域中起著舉足輕重的作用,它可以幫助機(jī)器人了解待抓取物體的位置和方向。物體姿態(tài)估計(jì)的方法大致可分為四種:基于對(duì)應(yīng)關(guān)系的方法、基于模板的方法、基于投票的方法和目標(biāo)檢測(cè)與姿態(tài)估計(jì)組合方法。基于對(duì)應(yīng)關(guān)系的物體姿態(tài)估計(jì)方法的流程如圖所示,這種方法主要針對(duì)具有豐富紋理的物體進(jìn)行姿態(tài)估計(jì),豐富的紋理有利于進(jìn)行2D特征點(diǎn)匹配。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)姿態(tài)估計(jì)在諸如增強(qiáng)現(xiàn)實(shí)、機(jī)器人操作和無(wú)人駕駛等領(lǐng)域中起著舉足輕重的作用,它可以幫助機(jī)器人了解待抓取物體的位置和方向。物體姿態(tài)估計(jì)的方法大致可分為四種:基于對(duì)應(yīng)關(guān)系的方法、基于模板的方法、基于投票的方法和目標(biāo)檢測(cè)與姿態(tài)估計(jì)組合方法?;谀0宓奈矬w姿態(tài)估計(jì)方法的流程如圖所示,這種方法不進(jìn)行目標(biāo)檢測(cè),與基于對(duì)應(yīng)關(guān)系的方法有很大的區(qū)別。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)姿態(tài)估計(jì)在諸如增強(qiáng)現(xiàn)實(shí)、機(jī)器人操作和無(wú)人駕駛等領(lǐng)域中起著舉足輕重的作用,它可以幫助機(jī)器人了解待抓取物體的位置和方向。物體姿態(tài)估計(jì)的方法大致可分為四種:基于對(duì)應(yīng)關(guān)系的方法、基于模板的方法、基于投票的方法和目標(biāo)檢測(cè)與姿態(tài)估計(jì)組合方法?;谕镀钡奈矬w姿態(tài)估計(jì)方法的流程如圖所示。這種方法主要用于計(jì)算有遮擋的對(duì)象姿態(tài)。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)姿態(tài)估計(jì)在諸如增強(qiáng)現(xiàn)實(shí)、機(jī)器人操作和無(wú)人駕駛等領(lǐng)域中起著舉足輕重的作用,它可以幫助機(jī)器人了解待抓取物體的位置和方向。物體姿態(tài)估計(jì)的方法大致可分為四種:基于對(duì)應(yīng)關(guān)系的方法、基于模板的方法、基于投票的方法和目標(biāo)檢測(cè)與姿態(tài)估計(jì)組合方法。目標(biāo)檢測(cè)與姿態(tài)估計(jì)組合方法的流程如圖所示,這類(lèi)方法基于回歸,并結(jié)合目標(biāo)物體識(shí)別模塊,可同時(shí)完成目標(biāo)檢測(cè)和姿態(tài)估計(jì)。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)PoseCNN是一種直接回歸對(duì)象的6D姿態(tài)的新型卷積神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖所示。其通過(guò)在圖像中定位中心并預(yù)測(cè)與物體之間的距離來(lái)估計(jì)對(duì)象的3D平移,然后將其回歸到四元數(shù)表示來(lái)計(jì)算3D旋轉(zhuǎn),其使用ShapeMatchLoss()函數(shù)來(lái)處理對(duì)稱(chēng)對(duì)象。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)2姿態(tài)估計(jì)PoseCNN是一種直接回歸對(duì)象的6D姿態(tài)的新型卷積神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖所示。其通過(guò)在圖像中定位中心并預(yù)測(cè)與物體之間的距離來(lái)估計(jì)對(duì)象的3D平移,然后將其回歸到四元數(shù)表示來(lái)計(jì)算3D旋轉(zhuǎn),其使用ShapeMatchLoss()函數(shù)來(lái)處理對(duì)稱(chēng)對(duì)象。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)抓取姿態(tài)檢測(cè)是指從給定圖像中識(shí)別出物體的抓取點(diǎn)或抓取姿態(tài),也叫抓取點(diǎn)檢測(cè)。抓取策略應(yīng)確保穩(wěn)定性、任務(wù)兼容性和對(duì)新對(duì)象的適應(yīng)性,抓取質(zhì)量可以通過(guò)接觸點(diǎn)的位置和夾爪的配置來(lái)衡量。抓取姿態(tài)檢測(cè)可以分為基于經(jīng)驗(yàn)方法的抓取姿態(tài)檢測(cè)和基于分析方法的抓取姿態(tài)檢測(cè)。基于經(jīng)驗(yàn)方法的抓取姿態(tài)檢測(cè)使用學(xué)習(xí)算法來(lái)選擇夾爪的位置和手形,學(xué)習(xí)算法取決于特定任務(wù)和目標(biāo)對(duì)象的幾何形狀?;诜治龇椒ǖ淖ト∽藨B(tài)檢測(cè)根據(jù)抓取穩(wěn)定性或任務(wù)要求的運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)要求來(lái)選擇夾爪的位置和手形。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)按物體種類(lèi)不同,抓取姿態(tài)檢測(cè)可分為三種:已知物體抓取姿態(tài)檢測(cè),相似物體抓取姿態(tài)檢測(cè),未知物體抓取姿態(tài)檢測(cè)。已知物體抓取姿態(tài)檢測(cè)基于經(jīng)驗(yàn)方法的已知物體抓取姿態(tài)檢測(cè)方法流程如圖所示,這種方法曾經(jīng)是最流行的方法。這種基于經(jīng)驗(yàn)或數(shù)據(jù)驅(qū)動(dòng)的方法從先前已知的成功結(jié)果中學(xué)習(xí),這些結(jié)果是通過(guò)抓取物體或模擬機(jī)器人系統(tǒng)的現(xiàn)有知識(shí)而產(chǎn)生的。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)按物體種類(lèi)不同,抓取姿態(tài)檢測(cè)可分為三種:已知物體抓取姿態(tài)檢測(cè),相似物體抓取姿態(tài)檢測(cè),未知物體抓取姿態(tài)檢測(cè)。已知物體抓取姿態(tài)檢測(cè)基于分析方法的已知對(duì)象抓取姿態(tài)檢測(cè)方法流程如圖所示。分析方法首先生成一系列候選抓取姿態(tài),再借助運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)公式進(jìn)行抓取質(zhì)量分析,其中力閉合分析和任務(wù)兼容性是完成抓取任務(wù)的兩個(gè)主要條件。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)按物體種類(lèi)不同,抓取姿態(tài)檢測(cè)可分為三種:已知物體抓取姿態(tài)檢測(cè),相似物體抓取姿態(tài)檢測(cè),未知物體抓取姿態(tài)檢測(cè)。相似物體抓取姿態(tài)檢測(cè)基于經(jīng)驗(yàn)方法的相似物體抓取姿態(tài)檢測(cè)方法流程如圖所示。在大多數(shù)情況下,目標(biāo)對(duì)象與現(xiàn)有數(shù)據(jù)庫(kù)中的對(duì)象并不完全相同。如果對(duì)象屬于數(shù)據(jù)庫(kù)中已知的類(lèi),則可將其視為相似對(duì)象。在目標(biāo)對(duì)象定位之后,可以使用基于對(duì)應(yīng)關(guān)系的方法將抓取點(diǎn)從相似的完整3D對(duì)象映射到當(dāng)前的局部視圖對(duì)象。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)按物體種類(lèi)不同,抓取姿態(tài)檢測(cè)可分為三種:已知物體抓取姿態(tài)檢測(cè),相似物體抓取姿態(tài)檢測(cè),未知物體抓取姿態(tài)檢測(cè)。未知物體抓取姿態(tài)檢測(cè)基于經(jīng)驗(yàn)方法的未知物體抓取姿態(tài)檢測(cè)方法流程如圖所示。在掌握某些先驗(yàn)知識(shí)(如物體幾何形狀、物理模型或力分析)的前提下,執(zhí)行上述機(jī)械臂抓取的經(jīng)驗(yàn)方法。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)除上述方法外,基于深度學(xué)習(xí)的抓取姿態(tài)檢測(cè)方法利用合成點(diǎn)云和解析性抓取指標(biāo)來(lái)規(guī)劃具有魯棒性的抓取,如圖所示。該方法首先從深度圖像中分割出當(dāng)前的興趣點(diǎn),然后生成多個(gè)候選抓取姿態(tài),再評(píng)價(jià)抓取質(zhì)量,并選擇質(zhì)量最高的抓取姿態(tài)作為最終抓取姿態(tài),取得相對(duì)令人滿(mǎn)意的性能。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)3抓取姿態(tài)檢測(cè)端到端的抓取姿態(tài)檢測(cè)方法跳過(guò)目標(biāo)對(duì)象的定位,直接從輸入圖像中恢復(fù)抓取位置,如圖所示。這種方法可以分為兩階段方法和一階段方法。兩階段方法首先評(píng)價(jià)候選抓取姿態(tài)的抓取位置,然后選擇其中最有可能的一個(gè),而一階段方法直接回歸候選位置。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)4運(yùn)動(dòng)規(guī)劃通過(guò)抓取姿態(tài)檢測(cè)方法檢測(cè)到物體的抓取點(diǎn)后,可以得到從機(jī)械臂到目標(biāo)物體抓取點(diǎn)的多條軌跡,但機(jī)械臂具有局限性,其無(wú)法到達(dá)所有區(qū)域。因此,需要進(jìn)行機(jī)械臂的運(yùn)動(dòng)規(guī)劃。目前主要有三種機(jī)械臂運(yùn)動(dòng)規(guī)劃方法,分別是基于DMP(動(dòng)態(tài)運(yùn)動(dòng)原語(yǔ))的傳統(tǒng)方法、模仿學(xué)習(xí)方法和強(qiáng)化學(xué)習(xí)方法,各方法的流程如圖所示。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)4運(yùn)動(dòng)規(guī)劃模仿學(xué)習(xí)方法也稱(chēng)從演示中學(xué)習(xí)。在基于DMP的傳統(tǒng)方法中,機(jī)器人的運(yùn)動(dòng)學(xué)方程被忽略了,因?yàn)槲覀兗俣梢缘竭_(dá)對(duì)象表面上的任何接觸點(diǎn),并且可以在那些接觸點(diǎn)上施加任意的力。實(shí)際上,機(jī)械臂可以到達(dá)的實(shí)際接觸點(diǎn),受夾爪的幾何形狀的嚴(yán)格限制。通過(guò)模仿學(xué)習(xí),我們可以將從成功抓取中學(xué)到的抓取動(dòng)作,以更自然的方式映射到對(duì)目標(biāo)對(duì)象的抓取上。演示中的動(dòng)作可以分解為DMP。當(dāng)抓取相同或相似的物體時(shí),可以利用相同的運(yùn)動(dòng)軌跡。如果目標(biāo)對(duì)象存在于存儲(chǔ)的數(shù)據(jù)庫(kù)中,則可以直接獲取抓取點(diǎn)。然后問(wèn)題就變成了找到從起點(diǎn)到達(dá)目標(biāo)物體的路徑,并以特定的姿態(tài)抓住物體。如果目標(biāo)對(duì)象與示例對(duì)象相似,則可以先檢測(cè)目標(biāo)對(duì)象的抓取點(diǎn)。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)4運(yùn)動(dòng)規(guī)劃基于模仿學(xué)習(xí)的方法用于在人類(lèi)演示的基礎(chǔ)上學(xué)習(xí)和推廣抓取技能,一種基于模仿學(xué)習(xí)的機(jī)械臂運(yùn)動(dòng)規(guī)劃方法如圖所示。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)4運(yùn)動(dòng)規(guī)劃強(qiáng)化學(xué)習(xí)方法可用于解決機(jī)械臂運(yùn)動(dòng)到目標(biāo)抓取點(diǎn)的問(wèn)題,同時(shí)能夠處理一些運(yùn)動(dòng)過(guò)程中更加復(fù)雜的問(wèn)題,例如,由于存在障礙物,機(jī)器人無(wú)法接近目標(biāo)對(duì)象;由于障礙物太大,機(jī)器人無(wú)法抓住目標(biāo)物體等問(wèn)題。這時(shí)便需要機(jī)器人與環(huán)境互動(dòng)。對(duì)于此類(lèi)抓取任務(wù),最常見(jiàn)的解決方案是以對(duì)象為中心的強(qiáng)化學(xué)習(xí)方法,該方法將目標(biāo)與環(huán)境分開(kāi),這種方法在對(duì)象分離良好的結(jié)構(gòu)化或半結(jié)構(gòu)化設(shè)置中效果很好。9.4基于視覺(jué)的機(jī)械臂抓取實(shí)現(xiàn)4運(yùn)動(dòng)規(guī)劃基于強(qiáng)化學(xué)習(xí)的端到端抓取運(yùn)動(dòng)規(guī)劃方法流程如圖所示,這種方法直接根據(jù)RGB-D深度圖像完成抓取?;趶?qiáng)化學(xué)習(xí)的方法通常結(jié)合任務(wù)場(chǎng)景和任務(wù)目標(biāo)設(shè)計(jì)獎(jiǎng)勵(lì)函數(shù),并結(jié)合狀態(tài)空間的參數(shù)類(lèi)型決定所訓(xùn)練的神經(jīng)網(wǎng)絡(luò)類(lèi)型,如果狀態(tài)空間中涉及圖像操作,則需要卷積神經(jīng)網(wǎng)絡(luò),如果狀態(tài)空間中只涉及單純的向量等類(lèi)型,一般只需要全連接神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)任務(wù)空間中的運(yùn)動(dòng),實(shí)現(xiàn)成功抓取。9.5本章小結(jié)本章主要分析了幾種深度相機(jī)的原理,然后介紹基于深度學(xué)習(xí)的物體識(shí)別算法、兩種手眼標(biāo)定方法,以及基于視覺(jué)的機(jī)械臂抓取。本章通過(guò)物體識(shí)別,抓取姿態(tài)計(jì)算,以及結(jié)合手眼標(biāo)定得到的相機(jī)與機(jī)械臂變換矩陣,生成機(jī)械臂的運(yùn)動(dòng)目標(biāo)位姿,從而進(jìn)行運(yùn)動(dòng)規(guī)劃,完成抓取任務(wù)。第十章移動(dòng)機(jī)器人視覺(jué)SLAM機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐目錄content視覺(jué)SLAM框架10.110.5ORB-SLAM算法10.2本章小結(jié)稠密建圖10.3其他視覺(jué)SLAM算法或框架10.410.1視覺(jué)SLAM框架1視覺(jué)里程計(jì)視覺(jué)里程計(jì)關(guān)心相鄰圖像之間的相機(jī)運(yùn)動(dòng),即兩圖像之間的運(yùn)動(dòng)關(guān)系。例如,觀察圖,我們會(huì)發(fā)現(xiàn)右圖是左圖向左旋轉(zhuǎn)一定角度的結(jié)果。10.1視覺(jué)SLAM框架1視覺(jué)里程計(jì)圖像在計(jì)算機(jī)里用一個(gè)數(shù)值矩陣表示。這個(gè)矩陣?yán)锉磉_(dá)著什么東西,計(jì)算機(jī)毫無(wú)概念。而在視覺(jué)SLAM中,我們只能看到一個(gè)個(gè)像素,知道它們是某些空間點(diǎn)在相機(jī)的成像平面上投影的結(jié)果。所以,為了定量地估計(jì)相機(jī)的運(yùn)動(dòng),必須先了解相機(jī)與空間點(diǎn)的幾何關(guān)系。10.1視覺(jué)SLAM框架1視覺(jué)里程計(jì)視覺(jué)里程計(jì)需要通過(guò)相鄰幀的圖像來(lái)估計(jì)相機(jī)的運(yùn)動(dòng),并恢復(fù)場(chǎng)景的空間結(jié)構(gòu)。視覺(jué)里程計(jì)是視覺(jué)SLAM框架的關(guān)鍵組成部分,其能把相鄰時(shí)刻的圖像運(yùn)動(dòng)“串”起來(lái),構(gòu)成機(jī)器人的運(yùn)動(dòng)軌跡,從而解決定位問(wèn)題。另外,其能根據(jù)每個(gè)時(shí)刻的相機(jī)位置,計(jì)算出各像素對(duì)應(yīng)的空間點(diǎn)的位置,從而得到地圖。然而,僅通過(guò)視覺(jué)里程計(jì)來(lái)估計(jì)軌跡,將不可避免地出現(xiàn)累計(jì)漂移(AccumulatingDrift)誤差(簡(jiǎn)稱(chēng)累計(jì)誤差)問(wèn)題。這是由于視覺(jué)里程計(jì)(在最簡(jiǎn)單的情況下)只估計(jì)兩個(gè)圖像間運(yùn)動(dòng),而每次估計(jì)都帶有一定的誤差,先前時(shí)刻的誤差將會(huì)傳遞到下一時(shí)刻,導(dǎo)致經(jīng)過(guò)一段時(shí)間后,估計(jì)的軌跡不再準(zhǔn)確。10.1視覺(jué)SLAM框架2非線性?xún)?yōu)化在移動(dòng)機(jī)器人系統(tǒng)中,各個(gè)傳感器都帶有一定的噪聲。有的傳感器還會(huì)受磁場(chǎng)和溫度的影響。所以,除解決“如何從圖像中估計(jì)出相機(jī)運(yùn)動(dòng)”的問(wèn)題之外,還要關(guān)心這個(gè)估計(jì)帶有多大的噪聲、這些噪聲是如何從上一時(shí)刻傳遞到下一時(shí)刻的、當(dāng)前的估計(jì)置信度有多大等問(wèn)題。非線性?xún)?yōu)化要解決的問(wèn)題是如何從這些帶有噪聲的數(shù)據(jù)中,估計(jì)機(jī)器人系統(tǒng)的狀態(tài),以及這個(gè)狀態(tài)估計(jì)的不確定性有多大,即要進(jìn)行最大后驗(yàn)概率(Maximum-a-Posteriori,MAP)估計(jì),也稱(chēng)為空間狀態(tài)不確定性估計(jì)(SpatialUncertaintyEstimation)。這里的狀態(tài)既包括移動(dòng)機(jī)器人自身的軌跡,也包括地圖。10.1視覺(jué)SLAM框架2非線性?xún)?yōu)化在移動(dòng)機(jī)器人視覺(jué)SLAM框架中,前端給后端提供待優(yōu)化的數(shù)據(jù),以及這些數(shù)據(jù)的初始值,后端負(fù)責(zé)系統(tǒng)的優(yōu)化過(guò)程,往往面對(duì)的只有數(shù)據(jù),不必關(guān)心這些數(shù)據(jù)到底來(lái)自什么傳感器。前端與計(jì)算機(jī)視覺(jué)研究領(lǐng)域更為相關(guān),需要完成圖像的特征點(diǎn)提取和匹配等,而后端則主要應(yīng)用濾波與非線性?xún)?yōu)化算法。非線性?xún)?yōu)化是SLAM的重要組成部分,其本質(zhì)是對(duì)運(yùn)動(dòng)主體自身和周?chē)h(huán)境空間不確定性的估計(jì),利用狀態(tài)估計(jì)理論,把定位和建圖的不確定性表達(dá)出來(lái),然后去估計(jì)狀態(tài)的均值和不確定性(方差)。10.1視覺(jué)SLAM框架3回環(huán)檢測(cè)回環(huán)檢測(cè),又稱(chēng)閉環(huán)檢測(cè),主要解決位置估計(jì)隨時(shí)間漂移的問(wèn)題。移動(dòng)機(jī)器人經(jīng)過(guò)一段時(shí)間的運(yùn)動(dòng)后回到了原點(diǎn),但是由于存在累計(jì)誤差,它的位置估計(jì)值卻沒(méi)有回到原點(diǎn)。如果可以讓機(jī)器人知道“回到了原點(diǎn)”,或者把“原點(diǎn)”識(shí)別出來(lái),再把位置估計(jì)值“拉”過(guò)去,那么就可以消除累計(jì)誤差了,這就是回環(huán)檢測(cè)?;丨h(huán)檢測(cè)與“定位”和“建圖”都有密切的關(guān)系。地圖存在的一個(gè)重要意義是為了讓移動(dòng)機(jī)器人知道自己到達(dá)過(guò)的地方。為了實(shí)現(xiàn)回環(huán)檢測(cè),需要讓機(jī)器人具有識(shí)別曾到達(dá)過(guò)的地方的能力。最簡(jiǎn)單的方法是,可以在場(chǎng)景中設(shè)置一個(gè)標(biāo)志物(如二維碼圖片),只要移動(dòng)機(jī)器人看到了這個(gè)標(biāo)志物,就表示其回到了原點(diǎn)。但是,應(yīng)用環(huán)境中可能會(huì)限制出現(xiàn)這種輔助標(biāo)志物。10.1視覺(jué)SLAM框架4建圖建圖是指構(gòu)建地圖的過(guò)程。地圖是對(duì)環(huán)境的描述,根據(jù)不同的SLAM應(yīng)用,地圖的常見(jiàn)形式包括2D柵格地圖、2D拓?fù)涞貓D、3D點(diǎn)云地圖(PointCloudMap)和3D柵格地圖等,如圖所示。10.1視覺(jué)SLAM框架4建圖總體上,地圖可以劃分為尺度地圖(MetricMap,也叫度量地圖)、拓?fù)涞貓D(TopologicalMap)和語(yǔ)義地圖(SemanticMap)三種。尺度地圖尺度地圖上的每一點(diǎn)都可以用坐標(biāo)來(lái)表示,它強(qiáng)調(diào)精確地表示地圖中物體的位置,通常用稀疏(Sparse)與稠密(Dense)對(duì)它進(jìn)行分類(lèi)。稀疏地圖進(jìn)行一定程度的抽象,并不需要表達(dá)所有的物體。例如,可以選擇一部分具有代表意義的物體,稱(chēng)為特征點(diǎn),也稱(chēng)為路標(biāo)(Landmark),那么一張稀疏地圖就是由特征點(diǎn)組成的地圖,而不是特征點(diǎn)的部分就可以忽略掉。而稠密地圖著重于建模所有能看到的東西。10.1視覺(jué)SLAM框架4建圖總體上,地圖可以劃分為尺度地圖(MetricMap,也叫度量地圖)、拓?fù)涞貓D(TopologicalMap)和語(yǔ)義地圖(SemanticMap)三種。尺度地圖2D尺度地圖是由許多個(gè)小格子(Grid)組成的,3D尺度地圖則是由許多小方塊(Voxel)組成的。一般地,一個(gè)小格子或小方塊有占據(jù)、空閑、未知三種狀態(tài),以表達(dá)該小格子或小方塊內(nèi)是否有物體。當(dāng)查詢(xún)某個(gè)空間位置時(shí),地圖能夠給出該位置是否可以通過(guò)的信息。但是,這種地圖需要存儲(chǔ)每個(gè)小格子或小方塊的狀態(tài),耗費(fèi)大量的存儲(chǔ)空間,而且多數(shù)情況下地圖的許多細(xì)節(jié)部分是無(wú)用的。10.1視覺(jué)SLAM框架4建圖總體上,地圖可以劃分為尺度地圖(MetricMap,也叫度量地圖)、拓?fù)涞貓D(TopologicalMap)和語(yǔ)義地圖(SemanticMap)三種。拓?fù)涞貓D相比于尺度地圖的精確性,拓?fù)涞貓D則更強(qiáng)調(diào)地圖元素之間的關(guān)系。拓?fù)涞貓D是一種圖論中的圖(Graph),由頂點(diǎn)和邊組成,僅考慮頂點(diǎn)間的連通性,用邊來(lái)連接相鄰的頂點(diǎn),其只考慮兩點(diǎn)之間是否是連通的,而不考慮如何從一點(diǎn)到達(dá)另一點(diǎn)。比如,從地鐵路線圖中,我們可以知道華中科技大學(xué)站與光谷大道站相連,這個(gè)地鐵路線圖便是一種拓?fù)涞貓D。10.1視覺(jué)SLAM框架4建圖總體上,地圖可以劃分為尺度地圖(MetricMap,也叫度量地圖)、拓?fù)涞貓D(TopologicalMap)和語(yǔ)義地圖(SemanticMap)三種。語(yǔ)義地圖語(yǔ)義地圖上的每個(gè)地點(diǎn)和道路都會(huì)用標(biāo)簽的集合來(lái)表示,它是一種對(duì)環(huán)境(室內(nèi)或室外)的增強(qiáng)表示,同時(shí)包含了幾何信息和高層次的定性特征。語(yǔ)義地圖一般是建立在尺度地圖之上的,其能將空間中物體的語(yǔ)義屬性與其周?chē)h(huán)境的幾何感知建立聯(lián)系,進(jìn)而供人們利用。10.2ORB-SLAM算法ORB-SLAM是西班牙Zaragoza大學(xué)的RaulMur-Artal編寫(xiě)的基于稀疏特征點(diǎn)的視覺(jué)SLAM算法,其論文ORB-SLAM:aversatileandaccuratemonocularSLAMsystem發(fā)表在2015年的IEEETransactiononRobotics上。目前開(kāi)源代碼的版本包括ORB-SLAM、ORB-SLAM2和ORB-SLAM3。最早的ORB-SLAM版本主要用于單目視覺(jué)SLAM,從第二個(gè)版本開(kāi)始支持單目相機(jī)、雙目相機(jī)和RGB-D深度相機(jī)三種接口的視覺(jué)傳感器,支持使用ROS。其代碼結(jié)構(gòu)清晰,命名規(guī)范,非常適合移植到實(shí)際項(xiàng)目中。10.2ORB-SLAM算法ORB-SLAM基于圖像特征識(shí)別,可以實(shí)時(shí)運(yùn)行,適用于室內(nèi)或室外,小場(chǎng)景或大場(chǎng)景,包括跟蹤、局部建圖、回環(huán)檢測(cè)等模塊。ORB-SLAM使用ORB(OrientedFASTandRotatedBRIEF)算子進(jìn)行特征點(diǎn)提取與描述,具有旋轉(zhuǎn)不變性,在計(jì)算時(shí)間上比SIFT算法快兩個(gè)數(shù)量級(jí),比SURF算法快一個(gè)數(shù)量級(jí),同時(shí)與它們保持相似的檢測(cè)效果。而且ORB-SLAM對(duì)噪聲有較強(qiáng)的抗干擾能力,因此,ORB-SLAM具有很強(qiáng)的跟蹤魯棒性和可持續(xù)性,可以很好地處理劇烈運(yùn)動(dòng)的圖像,也可以很好地處理回環(huán)檢測(cè)、重定位和位置初始化。10.2ORB-SLAM算法ORB-SLAM算法框架如圖所示,包括三個(gè)線程:跟蹤、局部建圖和回環(huán)檢測(cè)。ORB-SLAM算法中的視覺(jué)里程計(jì)是基于特征點(diǎn)檢測(cè)算法實(shí)現(xiàn)的,利用ORB-SLAM算法的實(shí)時(shí)性,可以實(shí)時(shí)計(jì)算出相機(jī)的旋轉(zhuǎn)和平移數(shù)據(jù),并根據(jù)特征點(diǎn)恢復(fù)出3D稀疏地圖,進(jìn)行建圖和定位。10.2ORB-SLAM算法跟蹤線程跟蹤線程作為ORB-SLAM算法的前端,負(fù)責(zé)特征點(diǎn)跟蹤,不斷獲取相鄰圖像幀之間的位姿變化,同時(shí)通過(guò)投影變換,生成關(guān)鍵幀(KeyFrame)可視區(qū)間內(nèi)的地圖點(diǎn)(MapPoint),更新地圖關(guān)系,并確定關(guān)鍵幀插入的時(shí)機(jī)。該線程首先進(jìn)行建圖的初始化過(guò)程,同時(shí)計(jì)算兩個(gè)模型:?jiǎn)螒?yīng)矩陣(HomographyMatrix)模型和基礎(chǔ)矩陣(FundamentalMatrix)模型,并對(duì)兩個(gè)模型進(jìn)行評(píng)分,根據(jù)各自分值評(píng)估,使用兩者之一:若視差較小,則采用單應(yīng)矩陣模型恢復(fù)運(yùn)動(dòng);反之,則采用基礎(chǔ)矩陣模型恢復(fù)運(yùn)動(dòng)?;謴?fù)運(yùn)動(dòng)后,采用集束調(diào)整(BundleAdjustment,即BA優(yōu)化,也叫光束平差法)優(yōu)化初始化結(jié)果。10.2ORB-SLAM算法跟蹤線程初始化完成后,跟蹤線程從圖像中提取ORB特征點(diǎn),并默認(rèn)從前一幀,采用勻速運(yùn)動(dòng)模型或關(guān)鍵幀模型計(jì)算相機(jī)的位姿,最后進(jìn)行姿態(tài)估計(jì)。若初始化后第一幀跟蹤失敗,則需通過(guò)全局重定位來(lái)初始化位姿估計(jì),此時(shí)當(dāng)前幀會(huì)與所有關(guān)鍵幀進(jìn)行匹配,通過(guò)不斷優(yōu)化得到重定位后的位姿。最后,根據(jù)關(guān)鍵幀插入的條件,判斷是否需要插入新的關(guān)鍵幀。10.2ORB-SLAM算法局部建圖線程局部建圖線程主要完成局部地圖構(gòu)建。首先根據(jù)新加入的關(guān)鍵幀更新共視圖(CovisibilityGraph)、生長(zhǎng)樹(shù)(SpanningTree,也叫擴(kuò)展樹(shù)),同時(shí)對(duì)跟蹤線程中生成的地圖點(diǎn)進(jìn)行剔除,從而控制地圖中的地圖點(diǎn)數(shù)量。隨后,在共視圖中,依據(jù)三角原理生成新的地圖點(diǎn),對(duì)當(dāng)前幀、共視圖中與之相關(guān)聯(lián)的關(guān)鍵幀能夠檢測(cè)到的地圖點(diǎn)進(jìn)行局部BA優(yōu)化。最后,再剔除冗余的關(guān)鍵幀。10.2ORB-SLAM算法局部建圖線程其中,共視圖是無(wú)向加權(quán)圖,如圖所示。共視圖中每個(gè)節(jié)點(diǎn)是一個(gè)關(guān)鍵幀,如果兩個(gè)關(guān)鍵幀之間滿(mǎn)足一定的共視關(guān)系(如至少有15個(gè)共視地圖點(diǎn)),就將它們連成一條邊,邊的權(quán)重是共視地圖點(diǎn)的數(shù)目。共視圖是ORB-SLAM中的一個(gè)核心概念,在視覺(jué)SLAM算法的搜索地圖點(diǎn)、回環(huán)檢測(cè)、重定位和優(yōu)化中起著重要的作用。10.2ORB-SLAM算法局部建圖線程生長(zhǎng)樹(shù)只針對(duì)關(guān)鍵幀而言,在關(guān)鍵幀建立時(shí),需確定生長(zhǎng)樹(shù)的父子關(guān)系,如圖所示。生長(zhǎng)樹(shù)除用于更新局部地圖關(guān)鍵幀外,還用于回環(huán)校正。10.2ORB-SLAM算法回環(huán)檢測(cè)線程回環(huán)檢測(cè)線程是消除累計(jì)誤差最有效的辦法?;丨h(huán)檢測(cè)線程主要分為兩個(gè)過(guò)程:回環(huán)條件檢測(cè)和回環(huán)校正?;丨h(huán)條件檢測(cè)的主要工作是將當(dāng)前幀與候選回環(huán)幀中所有的幀進(jìn)行比較,根據(jù)設(shè)置的條件進(jìn)行比對(duì)及評(píng)分,當(dāng)?shù)玫匠鲩撝档脑u(píng)分后,即得到回環(huán)幀,并開(kāi)始進(jìn)行非線性?xún)?yōu)化。10.2ORB-SLAM算法回環(huán)檢測(cè)線程回環(huán)校正的主要工作是在當(dāng)前幀和回環(huán)幀之間找到更多的對(duì)應(yīng)點(diǎn),通過(guò)這些對(duì)應(yīng)點(diǎn)計(jì)算Sim3變換,求解當(dāng)前幀和回環(huán)幀之間的平移和旋轉(zhuǎn)數(shù)據(jù),如圖所示。Sim3變換使用3對(duì)不共線的匹配點(diǎn)進(jìn)行相似變換(SimilarityTransformation),求解出兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣、平移向量和尺度變換。回環(huán)校正時(shí),局部建圖線程和全局BA優(yōu)化需停止,以完成本質(zhì)圖(EssentialGraph)優(yōu)化和回環(huán)融合。10.2ORB-SLAM算法回環(huán)檢測(cè)線程其中,本質(zhì)圖也叫本征圖,也只針對(duì)關(guān)鍵幀而言,本質(zhì)圖比共視圖更稀疏,其作用是在回環(huán)校正時(shí),用相似變換來(lái)矯正尺度漂移,把回環(huán)誤差均攤在本質(zhì)圖中,如圖所示。本質(zhì)圖中的連接邊更少,僅保留聯(lián)系緊密的邊,使得結(jié)果更精確。同時(shí),相比全局BA優(yōu)化,本質(zhì)圖也可以快速收斂且結(jié)果更精確。10.2ORB-SLAM算法回環(huán)檢測(cè)線程本質(zhì)圖中包含:生長(zhǎng)樹(shù)的連接關(guān)系;形成回環(huán)的連接關(guān)系,即回環(huán)檢測(cè)后,地圖點(diǎn)發(fā)生變動(dòng)后的新增連接關(guān)系;共視關(guān)系非常好(至少有100個(gè)共視地圖點(diǎn))的連接關(guān)系。10.2ORB-SLAM算法ORB-SLAM算法采用g2o(GeneralGraphOptimization,通用圖優(yōu)化)庫(kù)作為非線性?xún)?yōu)化工具,支持全局優(yōu)化和局部?jī)?yōu)化,能有效地減少對(duì)特征點(diǎn)位置和自身位姿的估計(jì)誤差。另外,其采用詞袋算法,使用DBoW2庫(kù)(DBoW2是一種高效的回環(huán)檢測(cè)算法,稱(chēng)為BagsofBinaryWordsforFastPlaceRecognitioninImageSequence)進(jìn)行回環(huán)檢測(cè),減少了尋找特征點(diǎn)的計(jì)算量,同時(shí)回環(huán)匹配和重定位效果好。例如,當(dāng)機(jī)器人遇到一些意外情況時(shí),數(shù)據(jù)流突然被打斷了,ORB-SLAM算法可以在短時(shí)間內(nèi)重新把機(jī)器人在地圖中定位出來(lái)。10.2ORB-SLAM算法ORB-SLAM算法也存在一些缺點(diǎn),主要如下。構(gòu)建出的地圖是稀疏點(diǎn)云圖,保留了圖像中特征點(diǎn)的一部分作為關(guān)鍵點(diǎn),固定在空間中進(jìn)行定位,很難描繪地圖中的障礙物的存在。初始化時(shí)機(jī)器人需要保持低速運(yùn)動(dòng),相機(jī)需要對(duì)準(zhǔn)特征和幾何紋理豐富的物體。相機(jī)旋轉(zhuǎn)時(shí)比較容易丟幀,對(duì)噪聲敏感,不具備尺度不變性。如果使用純視覺(jué)SLAM用于機(jī)器人導(dǎo)航,容易產(chǎn)生累計(jì)誤差,精度不高,因此需要結(jié)合IMU,提高精度。10.2ORB-SLAM算法相比ORB-SLAM,ORB-SLAM2增加了一個(gè)線程,將整個(gè)系統(tǒng)分成四個(gè)相對(duì)獨(dú)立的線程,各線程之間通過(guò)關(guān)鍵幀連接。這四個(gè)線程具體為:跟蹤線程、局部建圖線程、回環(huán)檢測(cè)線程、全局BA優(yōu)化線程。其中,前三個(gè)線程并行執(zhí)行,保證SLAM的實(shí)時(shí)性,第四個(gè)線程依據(jù)回環(huán)檢測(cè)的結(jié)果進(jìn)行全局BA調(diào)整(當(dāng)檢測(cè)到回環(huán)時(shí),回環(huán)融合后會(huì)觸發(fā)全局BA優(yōu)化線程),優(yōu)化全局地圖和軌跡。ORB-SLAM2算法框架如圖所示。10.3稠密建圖1空間地圖的表示方式目前空間地圖的表示方式主要有稀疏特征點(diǎn)地圖、稠密地圖、占據(jù)柵格地圖,這三種地圖均有不同的應(yīng)用場(chǎng)景,各有優(yōu)勢(shì)。在空間環(huán)境建模時(shí),應(yīng)根據(jù)具體的應(yīng)用場(chǎng)景選用不同的地圖,以達(dá)到最高效率。稀疏特征點(diǎn)地圖稀疏特征點(diǎn)地圖主要分為稀疏路標(biāo)地圖及稀疏點(diǎn)云地圖兩種,如圖所示。10.3稠密建圖1空間地圖的表示方式目前空間地圖的表示方式主要有稀疏特征點(diǎn)地圖、稠密地圖、占據(jù)柵格地圖,這三種地圖均有不同的應(yīng)用場(chǎng)景,各有優(yōu)勢(shì)。在空間環(huán)境建模時(shí),應(yīng)根據(jù)具體的應(yīng)用場(chǎng)景選用不同的地圖,以達(dá)到最高效率。稠密地圖稠密地圖目前主要分為稠密點(diǎn)云地圖、TSDF(TruncatedSignedDistanceFunction,截?cái)喾?hào)距離函數(shù))地圖、面元(SurfaceElement,Surfel)地圖,如圖所示。10.3稠密建圖1空間地圖的表示方式目前空間地圖的表示方式主要有稀疏特征點(diǎn)地圖、稠密地圖、占據(jù)柵格地圖,這三種地圖均有不同的應(yīng)用場(chǎng)景,各有優(yōu)勢(shì)。在空間環(huán)境建模時(shí),應(yīng)根據(jù)具體的應(yīng)用場(chǎng)景選用不同的地圖,以達(dá)到最高效率。占據(jù)柵格地圖占據(jù)柵格地圖分為3D占據(jù)柵格地圖和2D占據(jù)柵格地圖,如圖所示。其中,3D占據(jù)柵格地圖也稱(chēng)為3D八叉樹(shù)(Octo-tree)地圖。10.3稠密建圖1空間地圖的表示方式從前面介紹的空間地圖的表示方式可以看出,在機(jī)器人SLAM系統(tǒng)中,地圖的作用包括定位、導(dǎo)航、避障、重建、交互等,需要根據(jù)具體的場(chǎng)景選用不同的地圖,以滿(mǎn)足功能需求。隨著計(jì)算機(jī)視覺(jué)和圖像處理領(lǐng)域的飛速發(fā)展,視覺(jué)SLAM還可以實(shí)現(xiàn)語(yǔ)義地圖構(gòu)建、人機(jī)交互等復(fù)雜多元的功能,基于視覺(jué)圖像語(yǔ)義分割構(gòu)建的語(yǔ)義3D地圖如圖所示。10.3稠密建圖1空間地圖的表示方式激光雷達(dá)的優(yōu)勢(shì)是能夠準(zhǔn)確測(cè)量場(chǎng)景中物體之間的距離,可測(cè)量的距離遠(yuǎn)、抗干擾能力強(qiáng),常用于室內(nèi)外大場(chǎng)景的三維重建。3D激光雷達(dá)可以獲得多個(gè)平面上的信息,拓展了2D激光雷達(dá)的應(yīng)用場(chǎng)景。3D激光雷達(dá)也是無(wú)人駕駛汽車(chē)中的主要傳感器之一。圖是使用3D激光雷達(dá)構(gòu)建的無(wú)人駕駛高精度地圖。10.3稠密建圖1空間地圖的表示方式構(gòu)建地圖需要完成兩方面的工作:3D點(diǎn)云拼接和語(yǔ)義特征點(diǎn)提取。通常使用基于圖優(yōu)化的SLAM算法進(jìn)行分層細(xì)化,然后對(duì)3D點(diǎn)云進(jìn)行拼接,使用機(jī)器學(xué)習(xí)和人工監(jiān)督的迭代算法提取語(yǔ)義特征。下圖是基于3D激光雷達(dá)的場(chǎng)景感知效果。無(wú)人駕駛系統(tǒng)獲得行人,車(chē)輛的體積、速度,與車(chē)輛的距離等信息后,進(jìn)而實(shí)現(xiàn)定位、導(dǎo)航、避障等復(fù)雜功能。10.3稠密建圖1空間地圖的表示方式受限于常規(guī)3D激光雷達(dá)的垂直視場(chǎng)角,移動(dòng)平臺(tái)周邊存在一定的錐形盲區(qū)。目前所使用的激光雷達(dá)多是動(dòng)態(tài)掃描式的,機(jī)械旋轉(zhuǎn)結(jié)構(gòu)的穩(wěn)定性難以保證,信息獲取頻率較低。車(chē)規(guī)級(jí)的激光雷達(dá)常采用固態(tài)激光雷達(dá)和數(shù)字激光雷達(dá),硬件穩(wěn)定性有所提升。為了解決單一傳感器的局限性,人們使用多種類(lèi)別的傳感器進(jìn)行多層次的數(shù)據(jù)融合,從而提高建圖的準(zhǔn)確性和魯棒性。這些傳感器有相機(jī)(單目相機(jī)、多目相機(jī)、深度相機(jī))、2D/3D激光雷達(dá)、IMU、里程計(jì)、北斗衛(wèi)星導(dǎo)航系統(tǒng)、GPS(GlobalPositioningSystem,全球定位系統(tǒng))等。多傳感器融合的SLAM的缺點(diǎn)是數(shù)據(jù)融合復(fù)雜度較大,計(jì)算量較大,維護(hù)困難。10.3稠密建圖1空間地圖的表示方式激光雷達(dá)和相機(jī)在建圖方面的優(yōu)缺點(diǎn)如表所示。10.3稠密建圖1空間地圖的表示方式下表從地圖重構(gòu)效率、環(huán)境內(nèi)容完整性、碰撞檢測(cè)效率及典型算法方面對(duì)比了多種類(lèi)型的地圖。其中,柵格地圖及特征地圖是傳統(tǒng)激光SLAM算法中常用的地圖類(lèi)型,常應(yīng)用于室內(nèi)導(dǎo)航系統(tǒng)中,能夠較準(zhǔn)確地描述環(huán)境的幾何信息,但缺乏語(yǔ)義信息,限制了機(jī)器人的智能化水平。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定一般來(lái)說(shuō),雙目立體視覺(jué)的標(biāo)定精度主要采用對(duì)標(biāo)準(zhǔn)件測(cè)量得到的測(cè)量精度、3D空間中某一特征點(diǎn)三維重建的精度,以及通過(guò)標(biāo)定實(shí)驗(yàn)測(cè)量得到的相機(jī)出廠參數(shù)間接來(lái)評(píng)價(jià)。本節(jié)通過(guò)左右圖像平面上實(shí)測(cè)角點(diǎn)與其在相對(duì)圖像平面上對(duì)應(yīng)極線的匹配程度來(lái)評(píng)價(jià)雙目立體視覺(jué)的標(biāo)定精度,該方法充分考慮兩個(gè)圖像特征之間的匹配對(duì)應(yīng)關(guān)系。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何對(duì)極幾何是同一個(gè)視頻序列中兩個(gè)圖像之間內(nèi)在的射影幾何,它只依賴(lài)于相機(jī)相對(duì)位置及其內(nèi)參,獨(dú)立于圖像中的場(chǎng)景結(jié)構(gòu)。雙目相機(jī)的標(biāo)定利用了對(duì)極幾何模型。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何對(duì)極幾何由3×3的矩陣F表示,稱(chēng)為基礎(chǔ)矩陣(FundamentalMatrix)。對(duì)極幾何的本質(zhì)是兩個(gè)圖像與以相機(jī)基線為軸的平面束相交的幾何關(guān)系。如圖所示,左右相機(jī)的光心O1、O2分別為左右相機(jī)的投影中心,I1和I2為圖像平面,三維空間點(diǎn)P及其在兩個(gè)圖像平面視圖上的成像點(diǎn)P1與P2都處在同一個(gè)平面上,這個(gè)平面稱(chēng)為對(duì)極平面。連接左右相機(jī)投影中心的線為基線O1O2,基線O1O2與左右圖像平面相交的點(diǎn)稱(chēng)為極點(diǎn),分別為e1、e2。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何投影點(diǎn)p1和對(duì)應(yīng)極點(diǎn)e1的連線為極線,同理,p2和e2的連線也為極線。左右極線分別用l1、l2表示。圖像點(diǎn)p1經(jīng)過(guò)反投影,對(duì)應(yīng)三維空間中的一條射線,這條射線由p1和相機(jī)矩陣T確定。將射線投影至第二個(gè)圖像上會(huì)形成一條直線,可見(jiàn)三維空間點(diǎn)P在第二個(gè)圖像上的成像點(diǎn)p2必然在極線l2上。因此,第一個(gè)圖像上的成像點(diǎn)p1與第二個(gè)圖像上的極線l2之間存在著映射:這個(gè)映射的本質(zhì)是基礎(chǔ)矩陣F表示的從p1到l2的射影變換,基礎(chǔ)矩陣F也是對(duì)極幾何的核心。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何設(shè)點(diǎn)P在左相機(jī)坐標(biāo)系下的空間位置為設(shè)矢量

,

,

,

,右相機(jī)坐標(biāo)系相對(duì)于左相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣為R,平移向量為,則有:由于P1與p1同向,P2與p2同向,因而有:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何式中s1、s2為常量,可得:上式兩側(cè)同時(shí)對(duì)t做外積,可得:再同時(shí)左乘

可得:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何由于和均處于對(duì)極平面上,因此,代入上式可得:式中,

,稱(chēng)為本質(zhì)矩陣(EssentialMatrix),反映了點(diǎn)P在左右相機(jī)坐標(biāo)系下的成像點(diǎn)之間的對(duì)應(yīng)關(guān)系。若已知點(diǎn)P在左相機(jī)坐標(biāo)系下成像點(diǎn)p1的坐標(biāo),則可根據(jù)上式求得其在右相機(jī)坐標(biāo)系下成像點(diǎn)p2的坐標(biāo),反之亦然。定義:p1、p2在像素坐標(biāo)系下的矢量分別為

、

,根據(jù)針孔成像原理,有:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何K為相機(jī)內(nèi)參矩陣,根據(jù)

,可得:式中,

,稱(chēng)為基礎(chǔ)矩陣,內(nèi)含雙目相機(jī)之間位姿信息,反映了點(diǎn)P在左右像素坐標(biāo)系下的成像點(diǎn)之間的對(duì)應(yīng)關(guān)系。若已知點(diǎn)P在左像素坐標(biāo)系下成像點(diǎn)的坐標(biāo),則可根據(jù)上式求得其在右像素坐標(biāo)系下成像點(diǎn)

的坐標(biāo),反之亦然。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定2D-2D映射:對(duì)極幾何對(duì)極約束也常用于計(jì)算單目相機(jī)拍攝的兩個(gè)圖像之間的相對(duì)位姿,并三角化一些三維特征點(diǎn),算法包括如下步驟:分別檢測(cè)兩個(gè)圖像中的特征點(diǎn),常用ORB算法;使用五點(diǎn)法或八點(diǎn)法,根據(jù)匹配的特征點(diǎn)對(duì)像素坐標(biāo),求出E或F;通過(guò)奇異值分解,根據(jù)E或F,求出雙目相機(jī)之間的相對(duì)位姿

;通過(guò)三角化計(jì)算特征點(diǎn)三維坐標(biāo)。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定雙目相機(jī)外參標(biāo)定雙目相機(jī)的外參主要指的是左右相機(jī)之間的相對(duì)位姿,雙目相機(jī)外參標(biāo)定即求解左右兩個(gè)相機(jī)坐標(biāo)系之間的變換關(guān)系。若在單目相機(jī)標(biāo)定過(guò)程中,已求得單應(yīng)性矩陣

及相機(jī)內(nèi)參矩陣K,則可求得比例因子

:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定雙目相機(jī)外參標(biāo)定設(shè)相機(jī)坐標(biāo)系到世界坐標(biāo)系的旋轉(zhuǎn)矩陣

,根據(jù)旋轉(zhuǎn)矩陣的性質(zhì)有

,可求得旋轉(zhuǎn)矩陣R及平移向量t,即相機(jī)此時(shí)相對(duì)于標(biāo)定板的外參。在雙目相機(jī)外參標(biāo)定過(guò)程中,若分別求得左右相機(jī)相對(duì)于同一標(biāo)定板的外參R1、t1、Rr和tr,則世界坐標(biāo)系下某一點(diǎn)P在左右相機(jī)坐標(biāo)系下的坐標(biāo)向量p1和pr可以表示為消去P,可得:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定雙目相機(jī)外參標(biāo)定設(shè)有左相機(jī)坐標(biāo)系到右相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣

和平移向量

:根據(jù)上式,若同時(shí)求解出左右相機(jī)相對(duì)于同一標(biāo)定板的外參,即可求得兩相機(jī)之間的外參。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定3D-2D映射:PnPPnP(Perspective-n-Point,n點(diǎn)透視)是求解3D到2D點(diǎn)對(duì)運(yùn)動(dòng)的方法。當(dāng)已知一組(n對(duì))三維特征點(diǎn)及它們?cè)谝晥D中的像素坐標(biāo)(3D-2D點(diǎn)對(duì))時(shí),利用該方法可求解相機(jī)姿態(tài),這樣的對(duì)應(yīng)關(guān)系可以由特征點(diǎn)匹配算法得到。在使用雙目相機(jī)或RGB-D相機(jī)情況下,可以直接使用PnP求解姿態(tài)。若視覺(jué)傳感器是單目相機(jī),首先要利用對(duì)極約束初始化出一些三維特征點(diǎn),才能使用PnP。PnP可以在很少的匹配點(diǎn)對(duì)中獲得較好的運(yùn)動(dòng)估計(jì),能減輕計(jì)算壓力。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定3D-2D映射:PnP典型的PnP問(wèn)題有多種求解方法,經(jīng)常使用的是三對(duì)點(diǎn)估計(jì)位姿的P3P方法。如圖所示,輸入數(shù)據(jù)為三對(duì)3D-2D匹配點(diǎn),3D點(diǎn)為世界坐標(biāo)系中的A、B、C,2D點(diǎn)為相機(jī)坐標(biāo)系中的a、b、c,相機(jī)光心為O。10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定3D-2D映射:PnP圖中的三角形存在如下對(duì)應(yīng)關(guān)系:由余弦定理可得:將上述三式兩邊同除以

,并記

,可得:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定3D-2D映射:PnP記

,

,

,可得:進(jìn)一步可得:10.3稠密建圖2雙目相機(jī)幾何模型與標(biāo)定3D-2D映射:PnP從P3P原理中可以看出,為了求解PnP,需利用三角形相似的性質(zhì),求解投影點(diǎn)a、b、c在相機(jī)坐標(biāo)系下的3D坐標(biāo),從而把問(wèn)題轉(zhuǎn)換成一個(gè)3D到3D的位姿估計(jì)問(wèn)題。然而,P3P也存在以下問(wèn)題。P3P只利用三個(gè)點(diǎn)的信息,當(dāng)給定的配對(duì)點(diǎn)多于三對(duì)時(shí),其難以利用更多的信息。如果3D點(diǎn)或2D點(diǎn)受噪聲影響,或者存在誤匹配,則算法失效。10.3稠密建圖3稠密建圖基于單目相機(jī)的稠密三維重建難點(diǎn)在于快速實(shí)時(shí)恢復(fù)稠密的深度圖像,完成這一過(guò)程需要進(jìn)行大量的計(jì)算,算法需要在效率和精度之間保持平衡。通常選取兩幀具有一定視差的圖像,通過(guò)立體視覺(jué)算法快速計(jì)算每個(gè)像素的深度值。一個(gè)標(biāo)準(zhǔn)的方法是為第一幀圖像的每一個(gè)像素x1在第二幀圖像對(duì)應(yīng)的極線上搜索最相似的像素x2,這個(gè)過(guò)程稱(chēng)為極線搜索。在搜索過(guò)程中,通過(guò)比較像素周?chē)植繄D像塊A,B的相似度來(lái)確定最佳匹配。10.3稠密建圖3稠密建圖常用圖像塊差異性或相似度的度量方法如下。SAD(SumofAbsoluteDifference),即用圖像塊每個(gè)像素灰度差的絕對(duì)值和度量:SSD(SumofSquaredDistance),即用圖像塊每個(gè)像素灰度差的平方和度量:NCC(NormalizedCrossCorrelation),即用圖像塊之間的相關(guān)性度量:10.3稠密建圖3稠密建圖綜上所述,單目稠密建圖的深度估計(jì)完整過(guò)程如下:假設(shè)圖像上的像素深度整體上滿(mǎn)足均勻-高斯混合分布。通過(guò)極線搜索和塊匹配確定重投影像素的位置。根據(jù)搜索結(jié)果三角化出每個(gè)像素的深度值并計(jì)算不確定性。將恢復(fù)的深度圖像與上一次估計(jì)相融合。若收斂,則結(jié)束算法,否則返回步驟(2)。10.3稠密建圖3稠密建圖KinectFusion稠密建圖算法的流程如下。深度圖像轉(zhuǎn)換:將獲得的深度圖像轉(zhuǎn)換成點(diǎn)云,根據(jù)相鄰像素點(diǎn)求得每個(gè)點(diǎn)的法向量。相機(jī)跟蹤:計(jì)算全局模型在上一幀相機(jī)位姿下的深度圖像,將該深度圖像和當(dāng)前幀深度圖像都轉(zhuǎn)換成點(diǎn)云,通過(guò)ICP(IterativeClosestPoint,迭代最近點(diǎn))算法,配準(zhǔn)求得兩幀間的相對(duì)運(yùn)動(dòng)。體素化表示:采用截?cái)喾?hào)距離函數(shù)(TruncatedSignedDistanceFunction,TSDF)表示三維模型,不斷融合深度數(shù)據(jù),將待重建的三維空間均勻劃分成網(wǎng)格,每個(gè)體素中存儲(chǔ)其中心到最近的三維物體表面的距離。經(jīng)步驟(2)后,將當(dāng)前幀點(diǎn)云融合到三維模型中。10.3稠密建圖3稠密建圖KinectFusion稠密建圖算法的流程如下。光線投射:計(jì)算在當(dāng)前視角下場(chǎng)景的可見(jiàn)表面,用來(lái)和下一幀圖像進(jìn)行配準(zhǔn),計(jì)算下一幀相機(jī)的位姿。注意:在步驟(3)中,KinectFusion稠密建圖算法采用GPU更新網(wǎng)格中的值,只要顯卡滿(mǎn)足重建的幀率不低于深度相機(jī)的幀率,就能做到實(shí)時(shí)稠密三維重建。10.3稠密建圖3稠密建圖但KinectFusion稠密建圖算法存在以下局限性。使用ICP算法進(jìn)行相機(jī)位姿跟蹤,十分依賴(lài)場(chǎng)景的紋理豐富程度。基于Kinect相機(jī),預(yù)設(shè)TSDF中的三維網(wǎng)格,限制了場(chǎng)景尺度。沒(méi)有提供類(lèi)似ORB-SLAM算法的回環(huán)檢測(cè)?;谶@些問(wèn)題,人們后來(lái)對(duì)KinectFusion稠密建圖算法進(jìn)行了改進(jìn)。例如,為減少對(duì)紋理的依賴(lài)性,融合ICP和RGB-D深度相機(jī)跟蹤方法;為突破場(chǎng)景尺度限制,令三維網(wǎng)格隨相機(jī)運(yùn)動(dòng),讓三維網(wǎng)格外的區(qū)域不參與計(jì)算;采用DBoW算法進(jìn)行回環(huán)檢測(cè),提高三維稠密建圖的準(zhǔn)確性。10.4其他視覺(jué)SLAM算法或框架1LSD-SLAM基于圖像特征識(shí)別的視覺(jué)SLAM屬于特征點(diǎn)法,特征點(diǎn)法又稱(chēng)為兩視圖幾何(Two-ViewGeometry)法,該算法通過(guò)提取圖像的特征點(diǎn),對(duì)前后幀圖像的特征點(diǎn)進(jìn)行匹配,進(jìn)而恢復(fù)相機(jī)的位姿。特征點(diǎn)法較為成熟,能夠獲得較精確的位姿估計(jì)。在處理輸入圖像時(shí),首先提取圖像中的特征點(diǎn),然后在求解過(guò)程中,最小化特征點(diǎn)的幾何位姿誤差。特征點(diǎn)法會(huì)丟失圖像中許多有效信息,特別是在弱紋理場(chǎng)景中,特征點(diǎn)法無(wú)法提取有效的特征點(diǎn),將失效。10.4其他視覺(jué)SLAM算法或框架1LSD-SLAMLSD-SLAM(LargeScaleDirectmonocularSLAM)與DSO(DirectSparseOdometry)屬于直接法視覺(jué)SLAM,能夠?qū)崟r(shí)構(gòu)建稠密

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論