徐斌 楊東勇
(浙江工業(yè)大學(xué)信息工程學(xué)院 杭州 310023)
同步定位與地圖構(gòu)建(simultaneous localization and mapping,SLAM)是移動機(jī)器人實現(xiàn)自主導(dǎo)航的關(guān)鍵技術(shù),30 多年來一直是移動機(jī)器人領(lǐng)域重要的研究方向,并取得了豐富的研究成果[1],但提高SLAM 的定位和建圖精度一直是研究的熱點[2]。隨著計算機(jī)視覺技術(shù)的發(fā)展,視覺SLAM(visual SLAM,VSLAM)的方法成為活躍的研究領(lǐng)域[3]。與激光測距傳感器相比,VSLAM 的視覺攝像頭輕巧、功耗低、價格便宜,并且具有同時獲取環(huán)境的距離信息、物體外觀、顏色和紋理等豐富信息的技術(shù)優(yōu)勢[4]。但是,VSLAM 在信息檢測、特征提取和特征匹配等環(huán)節(jié)計算負(fù)擔(dān)重,需要強(qiáng)大的處理器和豐富的內(nèi)存資源,對機(jī)器人機(jī)載計算機(jī)的硬件和軟件提出了更高的要求,VSLAM 的實時性問題成為新的研究課題[5]。隨著云技術(shù)的發(fā)展,借助云端巨大的計算能力和海量的存儲空間,解決移動機(jī)器人機(jī)載計算能力和存儲空間受限問題成為研究的熱點領(lǐng)域。
云機(jī)器人為VSLAM 的實現(xiàn)提供了一種新的解決方法[6],同時具有方便實現(xiàn)機(jī)器人之間信息共享等優(yōu)勢[7]。在云環(huán)境下,移動機(jī)器人可以把視覺、語音和模式識別等計算密集型的復(fù)雜任務(wù)卸載到云端,解決了傳統(tǒng)機(jī)器人在計算能力、存儲器和功耗等方面的限制[7]。但是,云技術(shù)受到網(wǎng)絡(luò)通信性能的限制,涉及實時執(zhí)行的任務(wù)需要機(jī)器人機(jī)載計算機(jī)處理;此外,如果移動機(jī)器人完全依賴云端決策控制,當(dāng)網(wǎng)絡(luò)質(zhì)量不佳時,云服務(wù)速度不能適應(yīng)實時性要求,特別是當(dāng)出現(xiàn)網(wǎng)絡(luò)故障時,機(jī)器人就處于“無腦”狀態(tài),面臨極大的風(fēng)險[8]。邊緣計算技術(shù)解決了云技術(shù)中任務(wù)卸載的高時延、網(wǎng)絡(luò)負(fù)載與資源占用等問題,為移動機(jī)器人VSLAM 的實現(xiàn)提供了一種新的技術(shù)解決方案[9]。
本文基于邊緣計算技術(shù)設(shè)計了一種移動機(jī)器人VSLAM 的新方法,主要創(chuàng)新點包括:(1)在移動機(jī)器人端建立局部地圖,設(shè)計了一種新的VSLAM 架構(gòu),即移動機(jī)器人根據(jù)局部地圖實現(xiàn)實時跟蹤功能;邊緣計算端實現(xiàn)地圖構(gòu)建、回環(huán)檢測與全局地圖優(yōu)化、更新機(jī)器人端局部地圖等功能。(2)改進(jìn)ORBSLAM2(oriented FAST and rotated BRIEF-simultaneous localization and mapping2)算法,實現(xiàn)機(jī)器人端和邊緣計算端并行工作,解耦地圖構(gòu)建與回環(huán)檢測過程,進(jìn)一步提高并行性;采用帶有視覺里程計定位結(jié)果的關(guān)鍵幀信息,改進(jìn)移動機(jī)器人重定位功能。(3)當(dāng)移動機(jī)器人與邊緣計算端發(fā)生網(wǎng)絡(luò)通信故障時,機(jī)器人仍可實現(xiàn)基本的定位與運動軌跡生成功能。本文采用TUM 數(shù)據(jù)集驗證了所設(shè)計方法的實時性、地圖構(gòu)建的精度和系統(tǒng)的魯棒性。
SLAM 研究始于20 世紀(jì)80 年代中期。SLAM是指移動機(jī)器人在未知環(huán)境中從一個未知位置開始移動,在移動過程中根據(jù)位置估計和傳感器采集的環(huán)境信息進(jìn)行自身定位,同時構(gòu)建環(huán)境地圖[10]。早期SLAM 系統(tǒng)主要采用測距傳感器,隨著計算機(jī)視覺技術(shù)的發(fā)展,VSLAM 成為研究的熱點。
經(jīng)過十多年的研究,VSLAM 算法和實現(xiàn)技術(shù)都取得了大量研究結(jié)果。文獻(xiàn)[11]對開源VSLAM 算法進(jìn)行了全面的總結(jié),其中ORB-SLAM2 算法功能完善,適用于單目、立體和RGB-D 相機(jī),是一個典型的VSLAM 解決方案[12]。本文方案的實現(xiàn)部分將對ORB-SLAM2 算法進(jìn)行改進(jìn),為適應(yīng)邊緣計算環(huán)境,將算法拆分為機(jī)器人端和云端2 個部分,并在機(jī)器人端增設(shè)局部地圖,在云端增強(qiáng)算法的并行性。
為了解決SLAM 過程中機(jī)器人機(jī)載計算資源不足問題及實現(xiàn)多機(jī)器人協(xié)作SLAM,2010 年“云機(jī)器人”概念應(yīng)運而生,并快速發(fā)展。在云環(huán)境下機(jī)器人VSLAM 的架構(gòu)研究方面,文獻(xiàn)[13]提出了C2TAM 協(xié)同跟蹤與地圖繪制框架,利用VSLAM 跟蹤過程和地圖構(gòu)建過程并行化的特點,在機(jī)器人端完成計算量輕和實時性要求高的跟蹤過程、利用云計算實現(xiàn)地圖優(yōu)化、地圖公共區(qū)域融合等計算量大、實時性要求低的任務(wù)。該方案力求降低機(jī)器人和云服務(wù)器之間所需的通信帶寬。但該框架未充分利用數(shù)據(jù)的獨立性從而實現(xiàn)更強(qiáng)的并行和可伸縮的體系結(jié)構(gòu)。機(jī)器人跟蹤精度依賴于云端回傳的地圖,隨著地圖的擴(kuò)大,云端更新機(jī)器人中地圖的回傳帶寬需求也不斷增大。
文獻(xiàn)[14]針對大型環(huán)境中的服務(wù)機(jī)器人提出了DAvinCi 框架。該框架為移動機(jī)器人節(jié)點提供的云計算具有可擴(kuò)展性和并行性。在該框架中,使用機(jī)器人操作系統(tǒng)(robot operating system,ROS)作為機(jī)器人生態(tài)系統(tǒng)的消息傳遞框架,使用8 節(jié)點Hadoop 集群將SLAM 算法并行化為Map Reduce 任務(wù),提高了算法的并行性。
文獻(xiàn)[15]設(shè)計的Rapyuta 是一個開源的云機(jī)器人平臺。Rapyuta 允許將機(jī)器人機(jī)載計算過程部分或全部卸載到云端。機(jī)器人端運行視覺里程計算法,實現(xiàn)位姿實時跟蹤;云端建立環(huán)境的3D 點云地圖并發(fā)送關(guān)鍵幀位姿給機(jī)器人用于更正機(jī)器人的跟蹤位姿。該平臺中視覺里程計算法基于灰度不變假設(shè),跟蹤精度容易受到環(huán)境光照變化的影響,同時在機(jī)器人中沒有建立環(huán)境地圖。此外,該平臺是針對高帶寬機(jī)器人應(yīng)用而設(shè)計的,SLAM 性能在很大程度上取決于網(wǎng)絡(luò)傳輸延遲、網(wǎng)絡(luò)質(zhì)量以及云端計算的性能。
近年,分散和多層云結(jié)構(gòu)引入到云機(jī)器人研究中。文獻(xiàn)[16]設(shè)計了一個包括邊緣層、霧層和中心云層的3 層分散云體系結(jié)構(gòu),解決機(jī)器人工作流的時間約束問題。文獻(xiàn)[17]為解決SLAM 過程中的復(fù)雜計算、數(shù)據(jù)處理和通信延遲等問題,采用邊緣計算設(shè)計了一種加速計算方案。
本文采用邊緣計算設(shè)計VSLAM 系統(tǒng)的主要目標(biāo)是:機(jī)載計算資源有限的移動機(jī)器人可以實現(xiàn)高性能的VSLAM 功能;網(wǎng)絡(luò)傳輸延遲和網(wǎng)絡(luò)質(zhì)量問題對整個VSLAM 性能的影響得到有效降低;當(dāng)機(jī)器人與邊緣計算端失去網(wǎng)絡(luò)連接時,機(jī)器人能繼續(xù)實現(xiàn)位姿跟蹤功能。綜合考慮這些要求,基于邊緣計算的VSLAM 系統(tǒng)架構(gòu)如圖1 所示。不同于在機(jī)器人機(jī)載計算機(jī)上完成整個VSLAM 過程,本文提出的VSLAM 架構(gòu)中,移動機(jī)器人端和邊緣計算端分別完成VSLAM 的部分功能,兩者協(xié)同工作。
圖1 邊緣計算VSLAM 架構(gòu)圖
移動機(jī)器人端接受視覺傳感器采集的視覺信號,通過執(zhí)行視覺里程計功能,實時估計機(jī)器人的位姿,并進(jìn)行運動軌跡建圖;當(dāng)滿足產(chǎn)生關(guān)鍵幀條件時,生成關(guān)鍵幀并發(fā)送給邊緣計算端。
移動機(jī)器人實現(xiàn)定位和建立運動軌跡時需要地圖,因此,引入一個駐留在機(jī)器人上的局部地圖。局部地圖是全局地圖中一小部分地圖內(nèi)容的備份。在VSLAM 過程中,局部地圖隨全局地圖的更新而更新,但局部地圖的大小保持恒定,從而保證移動機(jī)器人端的計算資源需求不隨SLAM 過程長時間運行而改變。
邊緣計算端接收機(jī)器人端上傳的關(guān)鍵幀信息和視覺里程計估計的位姿信息,實現(xiàn)地圖構(gòu)建、回環(huán)檢測和地圖優(yōu)化等功能,并保存構(gòu)建的全局地圖。邊緣計算端設(shè)置局部地圖更新機(jī)制,即隨著VSLAM過程的進(jìn)行,邊緣計算端構(gòu)建的全局地圖發(fā)生變化時,同步對機(jī)器人端的局部地圖實施更新,保持局部地圖和全局地圖的一致性。
為保證機(jī)器人端和邊緣計算端之間的信息同步,在機(jī)器人端和邊緣設(shè)備之間設(shè)計了兩路獨立的網(wǎng)絡(luò)連接。一路是機(jī)器人端向邊緣計算端發(fā)送關(guān)鍵幀和位姿信息的網(wǎng)絡(luò)連接;另一路是當(dāng)邊緣計算端發(fā)起對機(jī)器人端局部地圖進(jìn)行更新時的地圖數(shù)據(jù)傳送的網(wǎng)絡(luò)連接。兩路通信之間沒有約束關(guān)系,可以加快通信速度,最大可能地減少通信延遲。
與當(dāng)前同行方法相比,本文設(shè)計的基于邊緣計算的VSLAM 方法的主要特點是:解決了云機(jī)器人系統(tǒng)中普遍存在通信數(shù)據(jù)量過大導(dǎo)致的大延遲問題;發(fā)生網(wǎng)絡(luò)通信故障時,機(jī)器人仍然可以繼續(xù)工作,不會出現(xiàn)“無腦”狀態(tài)。
根據(jù)所設(shè)計的邊緣計算環(huán)境下的VSLAM 架構(gòu),本文將ORB-SLAM2 算法拆分成2 部份:(1)機(jī)器人端的算法主要實現(xiàn)運動軌跡跟蹤等功能;(2)邊緣計算端的算法主要實現(xiàn)地圖構(gòu)建、回環(huán)檢測和地圖優(yōu)化等功能。機(jī)器人端與邊緣計算端協(xié)同工作。
ORB-SLAM2 原來是一個集成化的VSLAM 算法,最主要功能由跟蹤定位、地圖構(gòu)建、回環(huán)檢測3個線程組成。為了實現(xiàn)邊緣計算環(huán)境下機(jī)器人端和邊緣計算端并行協(xié)同工作,本文對ORB-SLAM2 算法進(jìn)行功能模塊解耦和并行化改進(jìn),采用流水線方式執(zhí)行跟蹤定位、地圖構(gòu)建、回環(huán)檢測與地圖優(yōu)化等主要線程,如圖2 所示。
區(qū)別于原來ORB-SLAM2 算法共享同一個全局地圖,本文采用了局部地圖和全局地圖的新結(jié)構(gòu)。在移動機(jī)器人上創(chuàng)建局部地圖,其地圖內(nèi)容是包括來自全局地圖的最新創(chuàng)建的關(guān)鍵幀、地圖點、共同可視圖和生成樹的子集。局部地圖是全局地圖的一小部分,局部地圖為移動機(jī)器人實現(xiàn)跟蹤線程提供地圖。為確保機(jī)器端能以有限資源實現(xiàn)跟蹤線程,局部地圖的大小固定,不隨VSLAM 過程而變化。
全局地圖創(chuàng)建并存儲在邊緣計算設(shè)備上,包含完整的關(guān)鍵幀集、地圖點集、共同可視圖和生成樹。共同可視圖基于關(guān)鍵幀的共享地圖點觀察值連接關(guān)鍵幀。生成樹是共同可視圖的子集,將每個關(guān)鍵幀與它們的共享最多地圖點的關(guān)鍵幀連接起來。全局地圖的大小隨著VSLAM 的進(jìn)程不斷加大。
本文采用計算機(jī)技術(shù)中保持高速緩沖存儲器一致的MESI 協(xié)議,實現(xiàn)局部地圖與全局地圖的同步。移動機(jī)器人則將新創(chuàng)建的關(guān)鍵幀及其位姿發(fā)送到邊緣計算端。邊緣計算端接收機(jī)器人端發(fā)來的新關(guān)鍵幀并執(zhí)行地圖構(gòu)建功能。當(dāng)構(gòu)建的地圖發(fā)生變化時,向移動機(jī)器人發(fā)起地圖更新線程,以最新優(yōu)化后的地圖更新機(jī)器人端的局部地圖。本文設(shè)計的基于邊緣計算的VSLAM 實現(xiàn)方案的總流程如圖3 所示。
圖3 基于邊緣計算的VSLAM 實現(xiàn)方案的總流程圖
在本文的實現(xiàn)方案中,ORB-SLAM2 算法解耦后,跟蹤線程運行在移動機(jī)器人端。為了使跟蹤線程能獨立運行,移動機(jī)器人端引入了局部地圖。在跟蹤線程中,機(jī)器人通過深度相機(jī)采集環(huán)境的圖像信息,基于局部地圖求解和優(yōu)化圖像位姿,實現(xiàn)機(jī)器人的定位跟蹤、新關(guān)鍵幀的創(chuàng)建和局部地圖向前擴(kuò)展的功能。本文采用特征點法求解圖像位姿和局部地圖的光束法平差(bundle adjustment,BA)優(yōu)化圖像位姿。特征點法提取的特征點數(shù)目和種類以及BA 中包含的圖像幀數(shù)和地圖點數(shù)直接影響跟蹤線程的計算量[18-19]。本文經(jīng)過反復(fù)實驗驗證,設(shè)定每幀圖像提取500 個ORB 特征點、局部地圖包含5 幀關(guān)鍵幀及其生成的地圖點。當(dāng)滿足關(guān)鍵幀創(chuàng)建條件時,即當(dāng)前幀包含的所有地圖點中,新生成的地圖點占比大于75%時,則把當(dāng)前幀創(chuàng)建為關(guān)鍵幀,并將帶有位姿的關(guān)鍵幀圖像發(fā)送給邊緣計算端。
當(dāng)移動機(jī)器人端收到來自邊緣計算端的局部地圖更新消息時,首先進(jìn)行更新必要性檢查,即如果自上次局部地圖更新以來沒有創(chuàng)建新的關(guān)鍵幀,則實際上地圖沒有更新,就不執(zhí)行地圖更新操作。移動機(jī)器人端實現(xiàn)局部地圖更新操作的時間需要受到限制,以保證跟蹤線程能夠正常運行,因此移動機(jī)器人端局部地圖的大小受到地圖更新時延的限制。
在本文的實現(xiàn)方案中,邊緣計算端除運行原來ORB-SLAM2 的局部建圖和回環(huán)檢測與優(yōu)化線程外,還運行地圖更新與重定位線程。邊緣計算端接收來自機(jī)器人端的帶有位姿的關(guān)鍵幀,創(chuàng)建新的地圖點,同時進(jìn)一步優(yōu)化關(guān)鍵幀圖像的位姿,并定期向移動機(jī)器人發(fā)送最新創(chuàng)建的全局地圖中的一部分及優(yōu)化后的位姿,對機(jī)器人端的局部地圖進(jìn)行更新。
3.3.1 關(guān)鍵幀圖像及其位姿的處理方案
為了使邊緣計算端啟動解耦后ORB-SLAM2 算法的局部建圖和回環(huán)檢測線程,邊緣計算端根據(jù)上傳的關(guān)鍵幀圖像及其位姿建立初始的計算條件。局部建圖線程通過關(guān)鍵幀的可視地圖點和關(guān)鍵幀之間的連接關(guān)系,擴(kuò)展全局地圖和維護(hù)共視圖、生成樹?;丨h(huán)檢測通過比較關(guān)鍵幀之間的詞袋向量值,確定回環(huán)信息。因此,本文首先提取關(guān)鍵幀圖像的特征點,然后通過特征點確定關(guān)鍵幀的可視地圖點和詞袋向量值,最后匹配全局地圖建立連接關(guān)系。
邊緣計算端對每個關(guān)鍵幀提取1000 個ORB 特征點,以提高環(huán)境地圖的豐富度,增強(qiáng)關(guān)鍵幀之間的連接關(guān)系和詞袋向量值的準(zhǔn)確性。同時,利用上傳的關(guān)鍵幀位姿信息,采用領(lǐng)域匹配法,指導(dǎo)并縮小匹配的范圍,減少匹配時間、加快匹配速度。
3.3.2 局部地圖更新方案
本文設(shè)計的邊緣計算VSLAM 系統(tǒng)中,因移動機(jī)器人的計算資源和存儲空間受限,在機(jī)器人端引入的局部地圖體量很小,用于前一次更新后到下一次更新前機(jī)器人短時間實時定位功能。為了使局部地圖與邊緣計算端的全局地圖保持一致,在邊緣計算端設(shè)置局部地圖的更新模塊。
從提高機(jī)器人實時定位跟蹤的精度考慮,局部地圖更新頻率越高,定位跟蹤的精度也越高,但是更新頻率越高對網(wǎng)絡(luò)帶寬資源需求就越大。本文采用運動距離和時間間隔相結(jié)合的更新方法,即邊緣計算端發(fā)起一次局部地圖更新,在完成2 幀新關(guān)鍵幀的處理之后或者2 次局部地圖更新時間間隔超過了5 s 時,發(fā)起一次更新功能。局部地圖更新的內(nèi)容包括全局地圖中5 個最新關(guān)鍵幀的位姿及其所有的地圖點。通過距離和時間的控制,實現(xiàn)及時更新機(jī)器人端局部地圖和減少網(wǎng)絡(luò)帶寬資源占用的目標(biāo)。
更新移動機(jī)器人上的局部地圖對于重疊部分直接進(jìn)行更替,而未被邊緣計算端接收或者優(yōu)化的關(guān)鍵幀和地圖點一般采用2 種方式,即地圖優(yōu)化法和地圖替換法。地圖優(yōu)化法通過BA 的方式,把關(guān)鍵幀位姿和地圖點,融合成為一張局部地圖。地圖替換法首先計算邊緣計算端傳回的最新關(guān)鍵幀的位姿與移動機(jī)器人端對應(yīng)關(guān)鍵幀的相對位姿,然后對未優(yōu)化的關(guān)鍵幀位姿和地圖點疊加該相對位姿,實現(xiàn)地圖的替換。由于地圖優(yōu)化法計算復(fù)雜,計算資源的開銷相對較大,因此,本文采用地圖替換法實現(xiàn)局部地圖更新。
3.3.3 重定位功能實現(xiàn)方案
在邊緣計算VSLAM 系統(tǒng)中,重定位功能分為2種:一種是機(jī)器人與邊緣計算通信正常情況下傳統(tǒng)的重定位功能,另一種是機(jī)器人端跟蹤正常。當(dāng)機(jī)器人與邊緣計算端之間的通信延遲過大或發(fā)生通信異常情況時,通信恢復(fù)后邊緣計算端會有重定位功能。
在通信正常的情況下,當(dāng)機(jī)器人端的定位跟蹤失敗時,機(jī)器人端立即向邊緣計算端發(fā)送重定位請求,即向邊緣計算發(fā)送不帶位姿的當(dāng)前幀圖像,同時新建一個視覺里程計線程。之后相機(jī)圖像幀輸入時,機(jī)器人首先嘗試在本地局部地圖中重定位,若重定位失敗,則進(jìn)入新建視覺里程計線程中計算圖像之間的信息冗余度,當(dāng)冗余度低于設(shè)定值后,再次發(fā)送重定位請求。邊緣計算端接收到機(jī)器人端的重定位請求后,按照相同的關(guān)鍵幀處理方式建立初始計算條件,在局部建圖線程計算出關(guān)鍵幀的位姿之后,則立即進(jìn)行一次機(jī)器人端的局部地圖更新,以便移動機(jī)器人可以嘗試從局部地圖中計算出當(dāng)前最新的圖像的位姿信息。
當(dāng)機(jī)器人與邊緣計算端間發(fā)生通信故障時,邊緣計算端不能接收新關(guān)鍵幀。當(dāng)通信恢復(fù)后,若機(jī)器人已移動了一段距離,則會因為邊緣計算端接收到的關(guān)鍵幀信息難以建立初始的計算條件,而造成邊緣計算端的重定位失敗。本文中,當(dāng)重定位失敗時,增加采用帶位姿圖像的重定位方法,即采用機(jī)器人端視覺里程計計算的圖像位姿,作為重定位后圖像的位姿,在該位姿的基礎(chǔ)上生成地圖點,完成重定位功能。
為檢驗本文設(shè)計的VSLAM 方案的有效性,構(gòu)建了由機(jī)器人端與邊緣計算端構(gòu)成的實驗環(huán)境。機(jī)器人端計算機(jī)和邊緣計算端計算機(jī)的硬件配置分別為:Intel Core i7-4650U CPU@1.70 GHz、8 GB 內(nèi)存和Intel Xeon E5-1620 CPU@3.60 GHz、48 GB 內(nèi)存;2 臺計算機(jī)在軟件上均搭載Ubuntu16.04 操作系統(tǒng)與ROS Kinect Kame 機(jī)器人操作系統(tǒng)?;A(chǔ)網(wǎng)絡(luò)設(shè)備使用百兆接口的斐訊智能路由器K2,連接機(jī)器人端和邊緣計算端。使用TUM 數(shù)據(jù)集中的4 個序列數(shù)據(jù)驗證邊緣計算VSLAM 系統(tǒng)的實時性、精度和魯棒性。四個序列數(shù)據(jù)分別是fr1/desk、fr1/desk2、fr1/floor 和fr1/room,其中的fr1/desk 和fr1/desk2分別有573 幀和620 幀辦公桌區(qū)域的環(huán)境信息,fr1/floor 有1227 幀具有相似規(guī)律紋理的地板區(qū)域環(huán)境信息,fr1/room 有1352 幀繞辦公室一周區(qū)域的環(huán)境信息。
為了檢驗邊緣計算VSLAM 系統(tǒng)的實時性,分別進(jìn)行邊緣計算VSLAM 系統(tǒng)中圖像處理速度和由機(jī)器人機(jī)載計算機(jī)運行ORB-SLAM2 算法全部功能的圖像處理速度的實驗,針對TUM 數(shù)據(jù)集中4 個序列數(shù)據(jù)的幀最大處理時間和幀平均處理時間如圖4和圖5 所示。圖4 表明,邊緣計算VSLAM 系統(tǒng)的一幀圖像最大處理時間都小于33 ms;機(jī)器人運行ORB-SLAM2 算法全部功能的一幀圖像最大處理時間都大幅超過33 ms。圖5 表明,邊緣計算VSLAM系統(tǒng)對4 個序列數(shù)據(jù)保持相對穩(wěn)定的幀平均處理時間;機(jī)器人運行ORB-SLAM2 算法全部功能時,幀平均處理時間隨序列數(shù)據(jù)的不同有較大的變化。
圖4 一幀最大處理時間
圖5 一幀平均處理時間
實驗結(jié)果表明,邊緣計算VSLAM 系統(tǒng)能夠?qū)崟r處理采樣頻率為30 Hz 的深度相機(jī)的圖像數(shù)據(jù),并且其實時性受環(huán)境變化的影響小。因此,邊緣計算VSLAM 系統(tǒng)的實時性得到有效保障,即計算資源受限的移動機(jī)器人具備了實現(xiàn)VSLAM 的能力。
為了驗證邊緣計算VSLAM 系統(tǒng)的軌跡精度,本文采用文獻(xiàn)[20]中比較估計軌跡和地面真實軌跡之間的絕對距離的絕對軌跡誤差計算方法,針對4 個序列數(shù)據(jù)表示的3 種不同情境進(jìn)行實驗。其中由fr1/desk 和fr1/desk2 序列表示的第1 種情境,環(huán)境范圍小、紋理豐富,真實軌跡速度變化平緩;由fr1/room 表示的第2 種情境,環(huán)境范圍大、紋理豐富,真實軌跡速度變化平緩,實現(xiàn)回環(huán)的時間較長;由fr1/floor 表示的第3 種情境,環(huán)境范圍大、紋理單一,真實軌跡中存在速度急劇變化的情況。邊緣計算VSLAM 系統(tǒng)中機(jī)器人的軌跡、ORB-SLAM2 算法全部功能由機(jī)器人機(jī)載計算機(jī)執(zhí)行的軌跡以及由邊緣計算VSLAM 系統(tǒng)中機(jī)器人端單獨運行生成的軌跡的誤差情況如表1 所示。
表1 絕對軌跡誤差對比表
實驗結(jié)果表明,邊緣計算VSLAM 系統(tǒng)的軌跡誤差與機(jī)器人執(zhí)行ORB-SLAM2 算法全部功能的軌跡誤差幾乎沒有差別,既可以在良好的環(huán)境下實現(xiàn)有效的SLAM,也可以在困難的環(huán)境下實現(xiàn)有效的SLAM。
從表1 中可以看出,當(dāng)發(fā)生通信故障、沒有邊緣計算端支持時,機(jī)器人端單獨跟蹤時的軌跡誤差明顯大于邊緣計算VSLAM 系統(tǒng)的軌跡誤差。但是,在小范圍、環(huán)境紋理豐富、實際軌跡變化平緩的環(huán)境下,沒有邊緣計算端支持的機(jī)器人端,也能夠以一定的精度獨立繼續(xù)工作。
實驗結(jié)果表明,邊緣計算VSLAM 系統(tǒng)中機(jī)器人端與邊緣計算端的有效協(xié)作為高精度的軌跡估計提供了保證。在網(wǎng)絡(luò)通信正常的情況下,機(jī)器人端的定位結(jié)果為邊緣計算端提供更好的位姿參考值;在網(wǎng)絡(luò)通信故障時,機(jī)器人端能保持一定的軌跡定位精度。邊緣計算端的全局地圖優(yōu)化、回環(huán)檢測與局部地圖更新功能提高了機(jī)器人端的定位精度,尤其對于大范圍、紋理單一、實現(xiàn)回環(huán)時間較長的SLAM,改進(jìn)效果更明顯。因此,邊緣計算VSLAM系統(tǒng)能以更快的速度實現(xiàn)與原ORB-SLAM2 算法相同精度的SLAM 過程。
為了檢驗邊緣計算VSLAM 系統(tǒng)的魯棒性,本文從機(jī)器人跟蹤失敗后實現(xiàn)重定位的頻次與位置正確性和重定位的快速性方面進(jìn)行實驗。重定位的頻次與位置正確性實驗情境是環(huán)境范圍大、紋理單一,真實軌跡中存在速度急劇變化的fr1/floor 序列數(shù)據(jù),實驗結(jié)果如圖6(a)、(b)和(c)所示。圖6(a)顯示,在SLAM 過程中,機(jī)器人端發(fā)生了3 次重定位,在邊緣計算端支持下機(jī)器人的第1 次和第3 次重定位迅速實現(xiàn),機(jī)器人的軌跡跟蹤功能基本沒有受影響。圖6(b)和(c)顯示,邊緣計算VSLAM 系統(tǒng)和ORB-SLAM2 算法的SLAM 過程,兩者在相同位置各發(fā)生了1 次重定位,重定位后軌跡位置和軌跡跟蹤正確。因此,邊緣計算VSLAM 與原ORBSLAM2 算法具有同樣魯棒性。
圖6 重定位實驗結(jié)果
檢驗重定位快速性的實驗情境是環(huán)境范圍大、紋理豐富、真實軌跡速度變化平緩、實現(xiàn)回環(huán)的時間較長的fr1/room 序列數(shù)據(jù)。實驗過程中設(shè)定發(fā)生網(wǎng)絡(luò)通信故障,檢驗機(jī)器人端與邊緣計算端協(xié)作恢復(fù)定位的能力。設(shè)定在fr1/room 序列數(shù)據(jù)中第500 幀~第800 幀之間發(fā)生網(wǎng)絡(luò)通信故障,這一期間邊緣計算端無法收到機(jī)器人端發(fā)送的關(guān)鍵幀,并假定第800幀圖像在1~500 幀圖像建立的地圖中找不到任何關(guān)聯(lián)關(guān)系,無法通過ORB-SLAM2 原有的重定位方法完成重定位。實驗結(jié)果如圖6(d)、(e)和(f)所示。圖6(d)所示為網(wǎng)絡(luò)通信正常情況下邊緣計算VSLAM 建立的環(huán)境地圖與跟蹤軌跡。圖6(e)顯示為網(wǎng)絡(luò)通信故障結(jié)束后,邊緣計算VSLAM 系統(tǒng)在第800 幀時立即恢復(fù)了定位和建圖,這是因為本文改進(jìn)方法中機(jī)器人端向邊緣計算端提供的關(guān)鍵幀位姿信息的作用。圖6(f)是ORB-SLAM2 算法的重定位情況,在第997 幀圖像的位置才恢復(fù)正確的位姿定位。
因此,本文設(shè)計的邊緣計算VSLAM 系統(tǒng)具有比原始ORB-SLAM2 算法更強(qiáng)的重定位能力,并且能夠在原始的ORB-SLAM2 算法無法重定位的位置,實現(xiàn)快速準(zhǔn)確的重定位。
需要指出的是,根據(jù)實時性比較結(jié)果,如果由實驗中的機(jī)器人運行ORB-SLAM2 算法的全部功能,則ORB-SLAM2 算法難以實時運行,軌跡精度和重定位能力都會下降。在檢驗邊緣計算VSLAM 算法的軌跡精度和重定位能力時,ORB-SLAM2 算法的性能數(shù)據(jù)是沒有考慮實時性要求下的數(shù)據(jù),如果考慮實時性要求,ORB-SLAM2 算法的性能會明顯下降,因而,邊緣計算VSLAM 的性能更具有優(yōu)勢。
為使計算資源受限的移動機(jī)器人具備實時視覺SLAM 能力,本文基于邊緣計算設(shè)計了一種移動機(jī)器人端與邊緣計算端協(xié)同工作的VSLAM 方法。通過在移動機(jī)器人端引入局部地圖,實現(xiàn)機(jī)器人的實時位姿跟蹤功能,并且當(dāng)機(jī)器人與網(wǎng)絡(luò)失去聯(lián)接時仍能繼續(xù)工作。機(jī)器人端向邊緣計算端發(fā)送帶有視覺里程計定位結(jié)果的關(guān)鍵幀數(shù)據(jù),提高了邊緣計算端全局SLAM 的性能和系統(tǒng)重定位的能力。邊緣計算端并行實現(xiàn)運算量大、存儲資源需求大的全局地圖構(gòu)建、回環(huán)檢測和地圖優(yōu)化等功能,提高了整個VSLAM 系統(tǒng)的實時性。邊緣計算端通過更新機(jī)器人端的局部地圖,保證局部地圖和全局地圖的一致性。本文采用TUM 數(shù)據(jù)集對所設(shè)計的邊緣計算VSLAM 方案進(jìn)行了實驗驗證,結(jié)果表明,本文方法具有更好的實時性、軌跡精度和更強(qiáng)的魯棒性。