亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向ARM同構(gòu)處理器的單目視覺SLAM方法

        2023-03-08 10:57:06王俊豐郭植星
        軟件導(dǎo)刊 2023年2期
        關(guān)鍵詞:單目關(guān)鍵幀樹莓

        王俊豐,曾 碧,郭植星

        (廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣東 廣州 510006)

        0 引言

        同時(shí)定位與地圖構(gòu)建(Simultaneous Localization and Mapping,SLAM)技術(shù)是指搭載特定傳感器的物體,對(duì)未知環(huán)境進(jìn)行地圖構(gòu)建的同時(shí)估計(jì)自己的運(yùn)動(dòng),是智能移動(dòng)機(jī)器人的關(guān)鍵技術(shù)之一。按所搭載的傳感器類型不同,可以將SLAM 主要分為激光和視覺兩大類。激光傳感器因能直接獲取環(huán)境的距離信息,在早期SLAM 的研究發(fā)展中得到關(guān)注,目前激光SLAM 的理論研究和工程應(yīng)用都已比較成熟。伴隨著計(jì)算機(jī)視覺技術(shù)的發(fā)展,相機(jī)因其成本低廉、體積更小且能提供更加豐富的環(huán)境語(yǔ)義信息而備受關(guān)注,視覺傳感器在近年來(lái)的SLAM 研究中開始占據(jù)主導(dǎo)地位。

        然而,視覺SLAM 一方面為機(jī)器人感知環(huán)境提供了更多元的數(shù)據(jù)支撐,另一方面也要求機(jī)載平臺(tái)有更高的運(yùn)行效率來(lái)滿足系統(tǒng)的實(shí)時(shí)性需要,而這無(wú)疑在提高整體方案的工程實(shí)現(xiàn)成本。以視覺SLAM 的代表作——ORBSLAM[1-3]為例,其經(jīng)歷了三個(gè)版本的迭代更新,雖然系統(tǒng)整體穩(wěn)健性得到了提升,但最新版本工程量大,軟件編譯和運(yùn)行都有了更高的要求,已無(wú)法直接在樹莓派等嵌入式設(shè)備上編譯運(yùn)行。

        盡管主流的視覺SLAM 方法在x86-64 處理器上表現(xiàn)良好,但卻沒有針對(duì)ARM 處理器等資源有限的嵌入式系統(tǒng)進(jìn)行優(yōu)化。本文以O(shè)RB-SLAM 為基礎(chǔ),以樹莓派為實(shí)驗(yàn)平臺(tái),研究一種面向ARM 同構(gòu)處理器的單目視覺SLAM 方法,有效解決視覺SLAM 在樹莓派上編譯困難、單目視覺尺度模糊、實(shí)時(shí)效率低、存儲(chǔ)空間與運(yùn)算能力有限等問(wèn)題,助力視覺SLAM 技術(shù)在嵌入式系統(tǒng)平臺(tái)的落地應(yīng)用。

        1 相關(guān)工作

        一個(gè)完整的視覺SLAM 框架包含前端、后端、回環(huán)檢測(cè)和地圖構(gòu)建[4]。由于嵌入式設(shè)備資源有限,前期面向嵌入式設(shè)備的視覺SLAM 方法主要研究前端里程計(jì)的應(yīng)用,而不是完整的視覺SLAM 方法。以樹莓派為例,Sukvichai等[5]提出了一種單目相機(jī)融合IMU 和壓力傳感器的視覺里程計(jì)方法,通過(guò)提取Shi-Tomasi 特征并使用KLT 光流跟蹤來(lái)估計(jì)運(yùn)動(dòng)的單應(yīng)矩陣,但該方法無(wú)法在樹莓派上實(shí)時(shí)運(yùn)行;而ARM-VO 則是一種可在樹莓派上實(shí)時(shí)運(yùn)行的視覺里程計(jì)算法,該方法同樣采用光流跟蹤,但其使用了ARM自帶的NEON 協(xié)處理器對(duì)算法進(jìn)行硬件加速,同時(shí)采用固定相機(jī)高度的方法來(lái)恢復(fù)單目視覺尺度信息,板載運(yùn)行的實(shí)時(shí)性優(yōu)于ORB-SLAM2[6]。近年來(lái),隨著硬件設(shè)備的發(fā)展,衍生出了眾多面向ARM+GPU[7]和ARM+FPGA[8]等異構(gòu)處理器的視覺SLAM 方法。得益于硬件加速,這類方法可以在嵌入式設(shè)備上進(jìn)行應(yīng)用。但是硬件資源的增加提高了整體方案的實(shí)現(xiàn)成本,眾多傳統(tǒng)的ARM 同構(gòu)多核處理器平臺(tái)仍無(wú)法運(yùn)行主流的視覺SLAM 方法。

        一方面,目前主流的視覺SLAM 方法大部分都是面向x86-64 處理器設(shè)計(jì)的,且在該平臺(tái)上表現(xiàn)優(yōu)越,如ORBSLAM、LSD-SLAM[9]和DSO-SLAM[10]等。ORB-SLAM 是特征法的代表之一,通過(guò)提取具備光照變化不敏感、旋轉(zhuǎn)不變性和尺度不變性等優(yōu)點(diǎn)的像素點(diǎn)作為特征,為后端優(yōu)化估計(jì)提供了穩(wěn)定且準(zhǔn)確的初始值,因此該方法的穩(wěn)定性強(qiáng),魯棒性高。但是,特征法在紋理不豐富的場(chǎng)景下容易丟失,特征點(diǎn)的提取和描述子的計(jì)算過(guò)程亦相對(duì)耗時(shí)。Fu等[11]基于ORB-SLAM 進(jìn)行優(yōu)化,提出了一種與描述子無(wú)關(guān)的特征匹配方法來(lái)避免無(wú)效且耗時(shí)的描述子計(jì)算。LSD-SLAM、DSO-SLAM 則采用直接法,基于兩幀圖像之間灰度不變的假設(shè),通過(guò)最小化相鄰圖像之間的灰度誤差來(lái)估計(jì)相機(jī)的運(yùn)動(dòng)。直接法只關(guān)注光度信息而忽略特征,速度快且適用于紋理信息較少的場(chǎng)景,但因其對(duì)光照和動(dòng)態(tài)干擾敏感,且由于缺少圖像特征信息而無(wú)法實(shí)現(xiàn)回環(huán)檢測(cè)和重定位功能,因此,直接法的精度一般劣于特征法。Forster 等[12]提出的SVO 方法,基于直接法跟蹤又依賴于特征法進(jìn)行優(yōu)化,兼顧了兩者的優(yōu)點(diǎn),但該方法只適用于平面運(yùn)動(dòng),且不是一個(gè)完整的視覺SLAM 方法。

        另一方面,視覺傳感器存在著一些固有缺陷,如尺度不確定性、高速運(yùn)動(dòng)視覺模糊等。相比于雙目、深度相機(jī),單目相機(jī)無(wú)需處理圖像同步和相機(jī)聯(lián)合標(biāo)定等問(wèn)題,計(jì)算量更低,性價(jià)比更高,因此單目相機(jī)的應(yīng)用也更為廣泛。然而,僅采用單目相機(jī)的系統(tǒng)都存在尺度不確定性問(wèn)題,無(wú)法直接恢復(fù)具有絕對(duì)尺度信息的三維結(jié)構(gòu)和相機(jī)運(yùn)動(dòng)。解決這一問(wèn)題,至少要引入一個(gè)絕對(duì)尺度作為先驗(yàn)信息。Zhou 等[13]提出了一種基于地平面的單目視覺里程計(jì)絕對(duì)尺度估計(jì)方法,該方法通過(guò)RANSAC 方法擬合地平面并計(jì)算出歸一化尺度下的地面高度,根據(jù)已知相機(jī)絕對(duì)高度信息求解歸一化尺度和真實(shí)尺度的比例關(guān)系,進(jìn)而恢復(fù)視覺尺度。顯然,這類方法限制了相機(jī)的運(yùn)動(dòng)范圍,不具備普遍適用性。此外,Eigen 等[14]提出基于深度學(xué)習(xí)進(jìn)行單目深度估計(jì),但計(jì)算量大且不適用于嵌入式設(shè)備。針對(duì)快速運(yùn)動(dòng)導(dǎo)致視覺模糊等問(wèn)題,一般采用視覺與慣性測(cè)量單元(Inertial Measurement Unit,IMU)融合的方法,如VINS[15]。利用IMU 能夠跟隨運(yùn)動(dòng)速度變化,不受運(yùn)動(dòng)場(chǎng)景和運(yùn)動(dòng)速度的限制而準(zhǔn)確測(cè)量出角速度和線性加速度的優(yōu)點(diǎn),彌補(bǔ)視覺失效的問(wèn)題。

        本文提出一種面向ARM 同構(gòu)處理器的單目視覺SLAM 方法(Visual SLAM Method for ARM,ARM-SLAM)。具體地,以O(shè)RB-SLAM 為基礎(chǔ),解決以樹莓派為代表的嵌入式設(shè)備存在編譯困難、單目視覺尺度模糊、實(shí)時(shí)性低、計(jì)算量大等問(wèn)題。首先,基于純視覺構(gòu)建無(wú)尺度的初始地圖,通過(guò)對(duì)齊IMU 帶尺度的測(cè)量數(shù)據(jù)來(lái)恢復(fù)視覺尺度因子;其次,基于良好的關(guān)鍵幀特征點(diǎn),對(duì)后續(xù)幀采取快速跟蹤策略,通過(guò)減少特征提取與描述子的計(jì)算量來(lái)提升傳統(tǒng)特征法的運(yùn)行速度;最后,對(duì)后端優(yōu)化問(wèn)題規(guī)模進(jìn)行滑動(dòng)限制并及時(shí)推送歷史數(shù)據(jù)作邊緣處理,有效地避免了長(zhǎng)時(shí)間運(yùn)行下嵌入式設(shè)備本地計(jì)算量和存儲(chǔ)量的激增。

        2 面向ARM同構(gòu)處理器的視覺SLAM方法

        本文提出的ARM-SLAM 方法,選取樹莓派作為嵌入式設(shè)備代表,以單目相機(jī)和IMU 作為系統(tǒng)輸入,以O(shè)RBSLAM 為基礎(chǔ),面向嵌入式設(shè)備進(jìn)行優(yōu)化。該方法的主要步驟如下:

        (1)純視覺初始化構(gòu)建無(wú)尺度的初始地圖,將IMU 帶絕對(duì)尺度的測(cè)量數(shù)據(jù)與各關(guān)鍵幀的位姿對(duì)齊,以尺度因子作為顯式變量參與迭代優(yōu)化,進(jìn)而恢復(fù)單目視覺的尺度信息。

        (2)一方面,基于OpenMP 對(duì)特征法的工程實(shí)現(xiàn)采取并行加速;另一方面,基于快速跟蹤策略,有選擇地進(jìn)行特征點(diǎn)提取,僅對(duì)關(guān)鍵幀才進(jìn)行描述子計(jì)算,避免無(wú)效計(jì)算,提高實(shí)時(shí)幀率。

        (3)基于滑動(dòng)窗口算法對(duì)舊關(guān)鍵幀進(jìn)行邊緣化,有效地限制了優(yōu)化問(wèn)題規(guī)模,對(duì)歷史數(shù)據(jù)僅作緩存處理且不參與后續(xù)的任何優(yōu)化,避免了因后端非實(shí)時(shí)性優(yōu)化而影響前端的實(shí)時(shí)性跟蹤。

        (4)嵌入式設(shè)備存儲(chǔ)空間有限,如果邊緣設(shè)備存在,則對(duì)歷史數(shù)據(jù)進(jìn)行序列化并作周期性推送,否則,根據(jù)本地剩余存儲(chǔ)空間大小對(duì)本地地圖進(jìn)行裁剪。

        圖1 展示了ARM-SLAM 方法的整體框架,主要包含尺度因子、快速跟蹤、滑動(dòng)窗口與數(shù)據(jù)推送等四大部分。

        Fig.1 Overall method flow diagram of ARM-SLAM圖1 ARM-SLAM 方法整體流程

        2.1 尺度因子

        假設(shè)純視覺在初始化階段所估計(jì)的相機(jī)位姿是準(zhǔn)確的,本文通過(guò)對(duì)齊IMU 帶尺度的測(cè)量信息求解視覺尺度因子。與傳統(tǒng)方法不同,該方法無(wú)需場(chǎng)景高度信息作為先驗(yàn),更具普遍適用性。

        本文約定:(·)w表示世界坐標(biāo)系,(·)c表示相機(jī)坐標(biāo)系,(·)b表示IMU 本體坐標(biāo)系。表示相機(jī)坐標(biāo)系到本體坐標(biāo)系的旋轉(zhuǎn)。表示含噪聲的測(cè)量數(shù)據(jù),表示無(wú)尺度數(shù)據(jù)。

        假設(shè)起始速度為0,如式(1)所示,可以根據(jù)IMU 所測(cè)量的加速度,估計(jì)下一時(shí)刻的位移和速度。

        其中,bat表示加速度偏置,nat表示加速度測(cè)量噪聲,gw表示重力向量,Δtk表示相鄰幀的間隔時(shí)間。

        因?yàn)槭澜缱鴺?biāo)系下的位姿會(huì)隨后端算法的優(yōu)化而在不斷更新調(diào)整,所以式(1)會(huì)因而對(duì)IMU 數(shù)據(jù)進(jìn)行反復(fù)的計(jì)算。為了避免上述問(wèn)題,如式(2)所示,本文采用IMU預(yù)積分模型[16-17],使得式(1)中的積分項(xiàng)是相對(duì)于第k 時(shí)刻的位姿進(jìn)行計(jì)算,而不是世界坐標(biāo)系。

        其中,s 是視覺尺度因子。將式(3)代入到式(2)中,可以得到IMU 預(yù)積分增量的預(yù)測(cè)值,如式(5)所示。

        由于IMU 的測(cè)量數(shù)據(jù)是離散的,因此,如式(6)所示,可以采用中值積分對(duì)式(2)的IMU 預(yù)積分增量進(jìn)行計(jì)算,得到觀測(cè)值。

        式(7)定義了問(wèn)題所要估計(jì)的狀態(tài)量,包含了世界坐標(biāo)系下各關(guān)鍵幀的速度、重力向量和視覺尺度因子。

        式(8)定義了相鄰兩幀之間的IMU 預(yù)積分測(cè)量值與估計(jì)值之間的殘差。

        令殘差為零,并轉(zhuǎn)為Hx=b形式,如式(9)所示。

        因此,可以通過(guò)構(gòu)建最小二乘問(wèn)題,在系統(tǒng)初始化階段,求解出包含視覺尺度因子在內(nèi)的參數(shù),如式(10)所示。

        2.2 快速跟蹤

        基于特征法的視覺SLAM 方法會(huì)對(duì)所有圖像進(jìn)行特征點(diǎn)提取和描述子計(jì)算,該操作相對(duì)耗時(shí)且只有被選為關(guān)鍵幀之后,才會(huì)對(duì)該圖像的描述子進(jìn)行使用。本文一方面基于OpenMP 對(duì)特征點(diǎn)提取和描述子計(jì)算環(huán)節(jié)采取了并行加速;另一方面,為了節(jié)省計(jì)算以保證實(shí)時(shí)性,本文利用系統(tǒng)持續(xù)運(yùn)動(dòng)過(guò)程中相鄰圖像具有的連貫性和相似性,提出了一種基于稀疏光流算法對(duì)已知特征點(diǎn)進(jìn)行快速跟蹤的方法。該方法無(wú)需對(duì)所有圖像幀都進(jìn)行特征點(diǎn)提取和匹配,有效地節(jié)省了計(jì)算量。

        假設(shè)相鄰幀之間滿足以下特性:①灰度不變性:實(shí)際場(chǎng)景目標(biāo)在相鄰幀之間所表示的像素灰度值保持不變。②鄰域內(nèi)光流一致性:同一鄰域內(nèi)的像素點(diǎn)具有一致的運(yùn)動(dòng)速度。

        在t時(shí)刻,圖像中像素點(diǎn)(x,y) 的灰度可以表示為I(x,y,t),假設(shè)t+dt時(shí)刻該像素點(diǎn)運(yùn)動(dòng)到(x+dx,y+dy)處,根據(jù)灰度不變性,可得式(11)。

        對(duì)式(11)等號(hào)右邊進(jìn)行泰勒展開,可得式(12)。

        將式(12)代入式(11),可得式(13)。

        將式(13)轉(zhuǎn)成矩陣形式,可得式(14)。

        其中,Ix、Iy和It是已知的,分別表示灰度在像素x、y軸和時(shí)間上的偏導(dǎo)。根據(jù)領(lǐng)域內(nèi)光流一致性,可以假設(shè)在一個(gè)大小為w*w的窗口內(nèi),所有的像素點(diǎn)都具有相同的運(yùn)動(dòng)。因此,可以構(gòu)建一個(gè)關(guān)于變量u和v的超定線性方程,并用最小二乘法進(jìn)行求解,如式(15)所示。

        然而,當(dāng)相機(jī)運(yùn)動(dòng)較快導(dǎo)致兩張圖像的差異明顯時(shí),僅對(duì)原圖的求解容易得到一個(gè)局部極小值,因此需要引入圖像金字塔對(duì)同一個(gè)圖像進(jìn)行縮放,當(dāng)像素運(yùn)動(dòng)較快時(shí),從金字塔頂層圖像看來(lái),仍然是一個(gè)相對(duì)較小的運(yùn)動(dòng)。本文從金字塔頂層的圖像開始計(jì)算,然后把上一層的結(jié)果作為下一層的初始值,如此迭代至底層原圖,最終得到最優(yōu)解。同時(shí),光流跟蹤存在一定的匹配錯(cuò)誤,需要檢查跟蹤點(diǎn)是否滿足對(duì)極約束,并使用RANSAC 方法消除誤跟蹤點(diǎn)。如圖2 所示,隨著時(shí)間的推移,從關(guān)鍵幀所提取的特征點(diǎn)將逐漸跟丟,則需重新進(jìn)行特征點(diǎn)提取。

        Fig.2 Diagram of fast tracking圖2 快速跟蹤示意圖

        已知地圖空間點(diǎn)的三維坐標(biāo)以及在當(dāng)前幀下的像素投影,可以采用PnP[18]算法對(duì)當(dāng)前相機(jī)的位姿進(jìn)行估計(jì)。該算法的偽代碼表示如下。

        Input:set last keyframe as reference frame Ir,current camera frame Ic,use the map points and feature points of the key frame as the initial set mpts,kpts.

        2.3 滑動(dòng)窗口

        系統(tǒng)長(zhǎng)時(shí)間運(yùn)行下,關(guān)鍵幀和地圖點(diǎn)數(shù)量會(huì)逐步增多,后端優(yōu)化問(wèn)題的計(jì)算規(guī)模也會(huì)隨之增大,進(jìn)而影響前端跟蹤的實(shí)時(shí)性,這一問(wèn)題在嵌入式設(shè)備上的表現(xiàn)尤為突出。因此,本文采取滑動(dòng)窗口策略來(lái)限制待優(yōu)化的關(guān)鍵幀數(shù)量,控制光束平差法(Bundle Adjustment,BA)優(yōu)化問(wèn)題規(guī)模。

        當(dāng)窗口內(nèi)幀數(shù)超過(guò)預(yù)設(shè)上限,將執(zhí)行滑動(dòng)策略:如圖3(a),如果窗內(nèi)第二幀不屬于關(guān)鍵幀,則直接刪除該幀觀測(cè)數(shù)據(jù),但保留該幀IMU 數(shù)據(jù)以確保IMU 預(yù)積分的連貫性;反之,如圖3(b),如果第二幀屬于關(guān)鍵幀時(shí),則邊緣化[19]最舊幀,將該幀的觀測(cè)數(shù)據(jù)轉(zhuǎn)為先驗(yàn)信息。

        Fig.3 Sliding window strategy圖3 滑動(dòng)窗口策略

        2.4 數(shù)據(jù)推送

        一方面,隨著時(shí)間推移,本地地圖的數(shù)據(jù)量必然遞增,而嵌入式設(shè)備因資源有限也必然無(wú)法滿足SLAM 的運(yùn)行需要。另一方面,SLAM 作為一種底層技術(shù),所構(gòu)建的地圖除了用于自身定位之外,也要為更上層的應(yīng)用提供用戶級(jí)交互所需的數(shù)據(jù)基礎(chǔ),換言之,SLAM 地圖數(shù)據(jù)需要上傳共享。因此,為了進(jìn)一步解決本地平臺(tái)資源是有限的問(wèn)題,本文對(duì)地圖數(shù)據(jù)采用異地緩存處理的方法,對(duì)滑動(dòng)窗口外的歷史數(shù)據(jù)進(jìn)行周期性序列化推送。

        本文基于COVINS[20]構(gòu)建一個(gè)邊緣計(jì)算平臺(tái),一方面為上層應(yīng)用提供地圖接口,另一方面可以構(gòu)建后端優(yōu)化平臺(tái)對(duì)緩存的歷史數(shù)據(jù)進(jìn)行深度優(yōu)化,包含位置識(shí)別、地圖融合和回環(huán)檢測(cè)等功能,以此在邊緣平臺(tái)構(gòu)建全域地圖。值得注意的是,回環(huán)檢測(cè)屬于一種長(zhǎng)期的數(shù)據(jù)關(guān)聯(lián),當(dāng)邊緣計(jì)算存在時(shí),前端設(shè)備將不進(jìn)行回環(huán)檢測(cè)。這樣,在滿足實(shí)際業(yè)務(wù)需要的同時(shí),更可以降低本地計(jì)算量,減少對(duì)實(shí)時(shí)性的影響。

        3 實(shí)驗(yàn)及分析

        實(shí)驗(yàn)以樹莓派4B 作為目標(biāo)機(jī),搭載型號(hào)為BCM2835的64 位4 核處理器,內(nèi)存為4G,如圖4 所示。同時(shí),設(shè)置一臺(tái)PC 電腦作為邊緣計(jì)算設(shè)備以及數(shù)據(jù)展示之用,其搭載型號(hào)為i7-11700的64位16核處理器,內(nèi)存為16G。

        Fig.4 Raspberry Pi 4B bare board圖4 樹莓派4B裸板

        實(shí)驗(yàn)將從嵌入式設(shè)備的交叉編譯、實(shí)時(shí)性對(duì)本文方法進(jìn)行測(cè)試,并在TUM Visual-Inertial 數(shù)據(jù)集上對(duì)方法的軌跡誤差進(jìn)行比較。實(shí)驗(yàn)采用魚眼單目相機(jī),這種相機(jī)允許桶形畸變存在,能達(dá)到180°的超大視角,實(shí)現(xiàn)近距離拍攝更大范圍的場(chǎng)景。實(shí)驗(yàn)相機(jī)圖像分辨率為512x512、16 位灰度圖,幀率為20Hz。同時(shí),實(shí)驗(yàn)采用型號(hào)為Bosch BMI160 的六軸IMU,采集實(shí)時(shí)加速度和角速度數(shù)據(jù),幀率為200Hz。

        3.1 交叉編譯

        主流視覺SLAM 方法由于代碼工程量大且編譯耗時(shí),在一般的個(gè)人電腦上進(jìn)行開滿線程編譯可能會(huì)導(dǎo)致電腦假死情況,在樹莓派這類資源有限的嵌入式平臺(tái)即便只采用單線程進(jìn)行編譯也會(huì)因內(nèi)存不足而被終止,因此只能選擇交叉編譯方式進(jìn)行程序發(fā)布。此外,ROS 機(jī)器人操作系統(tǒng)平臺(tái)所涉及的依賴庫(kù)配置,大部分是絕對(duì)路徑,不利于傳統(tǒng)的交叉編譯工具設(shè)置。

        因此,為了解決視覺SLAM 編譯困難的問(wèn)題,本文基于Docker 容器引擎技術(shù),在x86-64 電腦上運(yùn)行arm64v8/ubuntu20.04 環(huán)境,虛擬了一個(gè)樹莓派環(huán)境進(jìn)行代碼工程編譯。相比于傳統(tǒng)的交叉編譯方式,Docker 容器上的操作與目標(biāo)機(jī)平臺(tái)上一致,而無(wú)需深究項(xiàng)目具體的每一個(gè)依賴項(xiàng)。

        表1 展示了同一套代碼工程分別在樹莓派、PC 和Docker 上的編譯結(jié)果和耗時(shí)情況。雖然同時(shí)開啟多個(gè)線程進(jìn)行編譯,將有利于縮短編譯時(shí)間,但同時(shí)也要求平臺(tái)有更高的運(yùn)行內(nèi)存支持。樹莓派單線程編譯,PC 滿線程編譯,兩種情況的失敗原因都是因?yàn)閮?nèi)存不足導(dǎo)致編譯器終止了編譯過(guò)程?;贒ocker 生成ARM64 容器環(huán)境,可以確保在軟件環(huán)境一致情況下完成編譯任務(wù),直接推送到樹莓派上即可運(yùn)行。

        然而,由于Docker 是基于QEMU 虛擬化技術(shù)實(shí)現(xiàn)在x86 架構(gòu)下運(yùn)行ARM 架構(gòu)程序,所有指令都需要通過(guò)QEMU 進(jìn)行軟件動(dòng)態(tài)代碼翻譯,實(shí)際性能相比于x86 程序?qū)⒂兴档汀R虼?,雖然Docker 借助于PC 硬件資源可以完成編譯任務(wù),但其耗時(shí)明顯高于編譯PC 版程序。

        Table 1 Compilation results of code engineering on each platform表1 各平臺(tái)代碼工程編譯情況

        3.2 實(shí)驗(yàn)效果分析

        實(shí)驗(yàn)以室內(nèi)長(zhǎng)走廊作為測(cè)試場(chǎng)景,并采用單目魚眼相機(jī)和IMU 傳感器作為系統(tǒng)輸入,圖5(彩圖掃OSID 碼可見,下同)展示了實(shí)驗(yàn)場(chǎng)景原圖以及其特征提取、快速跟蹤效果。

        圖6 實(shí)驗(yàn)表明,在長(zhǎng)走廊場(chǎng)景下,純視覺方法因?yàn)槠骄?jì)算幀率低且場(chǎng)景相似,容易出現(xiàn)跟蹤丟失以及回環(huán)檢測(cè)誤判,由于尺度缺失,從走廊往房間返回時(shí),軌跡無(wú)法回到起點(diǎn)房間,軌跡誤差較大。

        圖7 展示了ARM-SLAM 運(yùn)行效果。得益于IMU 數(shù)據(jù),在初始化時(shí)恢復(fù)了單目視覺的尺度因子,使得本方法能確保經(jīng)歷長(zhǎng)走廊運(yùn)動(dòng)后,仍能返回最初的房間內(nèi),做到全局軌跡一致。同時(shí),視覺與IMU 融合,使本方法在有效幀率較低的情況下仍能保持對(duì)特征點(diǎn)的有效跟蹤。但值得注意的是,由于ARM-SLAM 沒有針對(duì)每幀都進(jìn)行特征點(diǎn)提取,因此其點(diǎn)云地圖相比于ORB-SLAM3更稀疏。

        表2 展示了不同場(chǎng)景下,ORB-SLAM3 和ARM-SLAM方法各自在樹莓派上運(yùn)行的平均幀率情況。因純視覺方法在運(yùn)行期間容易丟失而無(wú)法跑完整個(gè)實(shí)驗(yàn),因此實(shí)驗(yàn)均采用視覺融合IMU 方案。實(shí)驗(yàn)結(jié)果表明,ORB-SLAM3 方法的平均幀率約為6.22fps,而在同一場(chǎng)景下,ARM-SLAM方法的平均幀率則為10.53fps,速度相對(duì)提升了69.29%。這得益于ARM-SLAM 方法基于OpenMP 對(duì)關(guān)鍵幀的特征提取和描述子的計(jì)算環(huán)節(jié)進(jìn)行了并行加速,同時(shí)對(duì)非關(guān)鍵幀采取了快速跟蹤策略,進(jìn)而提升了整體的實(shí)時(shí)幀率。

        Fig.5 Schematic of experimental operation圖5 實(shí)驗(yàn)運(yùn)行效果

        Table 2 Comparison of the average frame rate of ORB-SLAM3 and ARM-SLAM running on Raspberry Pi表2 ORB-SLAM3和ARM-SLAM 在樹莓派上運(yùn)行的平均幀率比較

        Fig.6 Trajectory map generated by pure visual method圖6 純視覺方法運(yùn)行軌跡

        Fig.7 Trajectory map generated by ARM-SLAM method圖7 ARM-SLAM 方法運(yùn)行軌跡

        圖8 展示了在corridor-1 場(chǎng)景下,滑動(dòng)窗口和數(shù)據(jù)推送的軌跡效果。實(shí)驗(yàn)從房間出發(fā),經(jīng)歷長(zhǎng)走廊,并先后進(jìn)入多個(gè)不同的房間,最終回到起始房間。其中,細(xì)線表示全局軌跡,是邊緣緩存本地?cái)?shù)據(jù)并作處理后的結(jié)果;粗線表示本地軌跡,隨著時(shí)間的推移而逐漸消逝,本實(shí)驗(yàn)設(shè)置本地僅保留最近的100幀數(shù)據(jù),因此最后只有起始房間附近才有本地軌跡數(shù)據(jù)。同樣的場(chǎng)景下,不進(jìn)行數(shù)據(jù)推送并進(jìn)行歷史數(shù)據(jù)刪除時(shí),程序占用內(nèi)存約1.02GB;而如果開啟推送,程序內(nèi)存占用則降低到764MB。如此證明,本地設(shè)備僅存儲(chǔ)與維護(hù)有限的本地地圖時(shí),能有效避免了本地存儲(chǔ)和計(jì)算量的激增。

        Fig.8 Schematic of sliding and pushing trajectory data圖8 滑動(dòng)推送軌跡

        3.3 軌跡誤差分析

        由于TUM Visual-Inertial 數(shù)據(jù)集中缺少長(zhǎng)走廊部分的真實(shí)數(shù)據(jù),因此,實(shí)驗(yàn)環(huán)節(jié)僅對(duì)房間內(nèi)的軌跡進(jìn)行誤差分析,包括單目相機(jī)運(yùn)動(dòng)開始和結(jié)束時(shí)在房間內(nèi)的真實(shí)軌跡情況。

        圖9 展示了單目相機(jī)運(yùn)動(dòng)開始和結(jié)束時(shí)在房間內(nèi)的真實(shí)軌跡情況,以及樹莓派在該場(chǎng)景下分別運(yùn)行ORBSLAM3和ARM-SLAM 的軌跡對(duì)齊效果。

        表3 展示了ORB-SLAM3 和ARM-SLAM 方法的在同一場(chǎng)景下運(yùn)行結(jié)果的絕對(duì)軌跡誤差(Absolute Trajectory Error,ATE)情況。

        Table 3 Absolute trajectory error comparison表3 絕對(duì)軌跡誤差比較

        得益于實(shí)時(shí)幀率的提高,ARM-SLAM 方法整體絕對(duì)軌跡誤差均小于ORB-SLAM3,僅在最小值部分略高于ORB-SLAM3,反映了ARM-SLAM 在樹莓派上運(yùn)行的精度和軌跡全局一致性表現(xiàn)更優(yōu)。

        4 結(jié)語(yǔ)

        本文通過(guò)IMU 恢復(fù)視覺尺度因子、快速跟蹤策略、滑動(dòng)窗口與數(shù)據(jù)推送等方式對(duì)ORB-SLAM 進(jìn)行優(yōu)化,研發(fā)出一種面向ARM 同構(gòu)處理器的單目視覺SLAM 方法,并在以樹莓派為代表的嵌入式設(shè)備上進(jìn)行了實(shí)驗(yàn)驗(yàn)證,解決ORB-SLAM 在樹莓派上編譯困難、單目視覺尺度模糊、實(shí)時(shí)效率低、存儲(chǔ)空間與運(yùn)算能力有限等問(wèn)題。該方法體現(xiàn)了低成本視覺SLAM 方法的優(yōu)勢(shì),為進(jìn)一步在嵌入式設(shè)備上的應(yīng)用提供了有效途徑。在未來(lái)的研究中,可以結(jié)合邊緣計(jì)算設(shè)備,進(jìn)一步從前端機(jī)體剝離非實(shí)時(shí)性約束的后端優(yōu)化計(jì)算,逐步從單一智能體的有限作業(yè)轉(zhuǎn)為多智能體協(xié)同作業(yè),實(shí)現(xiàn)視覺SLAM 在虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和搜索救援等大范圍場(chǎng)景下的應(yīng)用。

        Fig.9 Schematic of trajectory alignment圖9 軌跡對(duì)齊示意圖

        猜你喜歡
        單目關(guān)鍵幀樹莓
        基于樹莓派的騎行智能頭盔設(shè)計(jì)
        電子制作(2019年11期)2019-07-04 00:34:32
        一種單目相機(jī)/三軸陀螺儀/里程計(jì)緊組合導(dǎo)航算法
        基于樹莓派的遠(yuǎn)程家居控制系統(tǒng)的設(shè)計(jì)
        電子制作(2017年17期)2017-12-18 06:40:43
        單目SLAM直線匹配增強(qiáng)平面發(fā)現(xiàn)方法
        基于改進(jìn)關(guān)鍵幀選擇的RGB-D SLAM算法
        基于CAD模型的單目六自由度位姿測(cè)量
        基于相關(guān)系數(shù)的道路監(jiān)控視頻關(guān)鍵幀提取算法
        響應(yīng)面法優(yōu)化紅樹莓酒發(fā)酵工藝
        基于聚散熵及運(yùn)動(dòng)目標(biāo)檢測(cè)的監(jiān)控視頻關(guān)鍵幀提取
        基于單目立體視覺的三坐標(biāo)在線識(shí)別技術(shù)研究
        久久人人爽人人爽人人av东京热| 在线观看国产视频午夜| 亚洲国产精品久久精品| 欧洲freexxxx性少妇播放| 国产啪精品视频网给免丝袜| 亚洲色图视频在线播放| 国产亚洲午夜精品久久久| 男女猛烈xx00免费视频试看| 国产喷水福利在线视频| 黑人巨大亚洲一区二区久| 放荡成熟人妻中文字幕| 大地资源中文第3页| yeyecao亚洲性夜夜综合久久| 亚洲情精品中文字幕有码在线| 国产亚洲精品在线视频| 国产精品久久久久乳精品爆| 婷婷成人亚洲| 亚洲中文字幕高清乱码毛片| 亚洲乱码av中文一区二区| 无码一区二区三区在线| 韩国精品一区二区三区| 五十路在线中文字幕在线中文字幕 | 成人综合激情自拍视频在线观看| 国产一区二区黄色录像| 青青草原精品99久久精品66| 中文字幕有码一区二区三区| 国产精品高清国产三级国产av| 亚洲av首页在线| 亚洲中文字幕第一页在线| 99精品国产av一区二区| 日韩精品中文一区二区三区在线 | 国产一区二区黄色的网站| 亚洲中文字幕久久无码精品| 亚洲国产午夜精品乱码| 色综合中文字幕综合网| 亚洲午夜久久久久久久久电影网 | 国产成人亚洲综合一区| 亚洲精品中文字幕乱码三区99| 粉嫩av国产一区二区三区| 亚洲级αv无码毛片久久精品| 成在线人免费视频播放|