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