劉力瑋 馬振興 張志輝 謝淋東 張國續(xù)
(河南科技大學(xué) 機電工程學(xué)院,河南 洛陽471003)
SLAM (simultaneous localization and mapping) 算法是一種實現(xiàn)定位并進(jìn)行地圖構(gòu)建的系統(tǒng),ORB-SLAM2 算法是SLAM 發(fā)展過程中較為完善的一種算法,它囊括了機器人ORB 特征、多線程共同實現(xiàn)追蹤Tracking、地圖構(gòu)建LocalMapping 和關(guān)鍵幀KeyFrameshe 的提取?;诖耍O(shè)計一種以SLAM算法為核心的移動機器人,能夠?qū)崿F(xiàn)實時構(gòu)建地圖并進(jìn)行路徑規(guī)劃,根據(jù)算法采用合理路線進(jìn)行移動工作,及時反饋收集信息的功能。
該移動機器人通過激光雷達(dá)與Kinect相機作為傳感器收集地圖信息,使用ORB-SLAM2 系統(tǒng)進(jìn)行地圖構(gòu)建,篩選關(guān)鍵幀,探查障礙物及周邊環(huán)境,再將地圖網(wǎng)格化,篩選目標(biāo)路徑上的障礙點,結(jié)合Dijkstra算法進(jìn)行最優(yōu)路徑規(guī)劃。機器人在移動過程中,激光雷達(dá)時刻發(fā)出360°全覆蓋激光對地圖進(jìn)行實時分析,配合Kinect 相機將探索畫面展現(xiàn)至操作終端顯示屏中,實時反饋信息。該移動機器人結(jié)合機械、電控、傳感器于一體,是操作簡單,實用性高的機電一體化產(chǎn)物。
移動機器人是機器視覺和機器人控制的有機結(jié)合,是一個非線性的復(fù)雜系統(tǒng),利用視覺傳感器得到圖像作為反饋信息,構(gòu)建而成的全閉環(huán)伺服反饋系統(tǒng)。ROS 機器人系統(tǒng)(Robot Operating System)可以提供環(huán)境感知、運動控制、路徑規(guī)劃等研究領(lǐng)域經(jīng)典并且前沿的算法代碼庫,可以加強機器人代碼的復(fù)用率的模塊化。該移動機器人基于ROS 系統(tǒng)并通過激光雷達(dá)和Kinect 相機采集環(huán)境信息,在STM32 單片機中進(jìn)行數(shù)據(jù)處理,借助ORB-SLAM2 系統(tǒng)構(gòu)建地圖,生成地圖關(guān)鍵幀,篩選目標(biāo)方向位置路線上的障礙物,再在系統(tǒng)中使用優(yōu)化算法進(jìn)行路徑路徑,避開障礙物,驅(qū)動電機使機器人按規(guī)劃路徑移動。由于激光雷達(dá)360°時刻發(fā)射激光進(jìn)行環(huán)境采集,機器人在整個工作過程中,時刻將采集的地圖信息反饋至操作系統(tǒng)的顯示界面,操作人員可通過操作系統(tǒng)對機器人下達(dá)指令。機器人控制結(jié)構(gòu)框架如圖1 所示。
圖1 機器人系統(tǒng)控制結(jié)構(gòu)圖
地圖構(gòu)建需要激光雷達(dá)、Kinect 相機和ORB-SLAM2 系統(tǒng)共同完成。激光本身具有非常精確的測距能力,測距精度在厘米級別,探測精度高,在探測過程中激光朝360°全方向發(fā)散,結(jié)合激光發(fā)射情況,構(gòu)建當(dāng)前位置信息,將之傳遞至STM32 之后,進(jìn)行地圖構(gòu)建。Kinect 相機則通過發(fā)射紅外光進(jìn)行光譜分析,將探查畫面數(shù)字化傳遞回控制界面,經(jīng)過相應(yīng)的圖像處理系統(tǒng)后得到的畫面清晰度高,結(jié)合激光雷達(dá)的測定距離,即可標(biāo)記出地圖中一些重要地形的位置,和一些障礙物的具體分布情況。地圖構(gòu)建則依靠ORB-SLAM2 系統(tǒng),該系統(tǒng)是一個完整的SLAM系統(tǒng),包括視覺里程計、跟蹤、回環(huán)檢測、路線規(guī)劃,被廣泛應(yīng)用于移動機器人領(lǐng)域。激光雷達(dá)、Kinect 相機和ORB-SLAM2 相互配合,能得到一份清晰的探索地圖,系統(tǒng)結(jié)構(gòu)如圖2 所示。
ORB-SLAM2 系統(tǒng)進(jìn)行真實場景的實際應(yīng)用時,需要在ROS 系統(tǒng)中瀏覽相機發(fā)布的彩色圖像和深度圖像,結(jié)合激光反射情況確定距離,進(jìn)行關(guān)鍵幀和地圖點的提取,生成局部點云地圖,最終經(jīng)過閉環(huán)檢測和全局優(yōu)化生成全局點云地圖,并生成優(yōu)化路徑,驅(qū)動電機,使機器人進(jìn)行避障或直行運動。
圖2 ORB-SLAM2 系統(tǒng)結(jié)構(gòu)圖
通過ORB-SLAM2 算法得到地圖關(guān)鍵幀之后,為方便路徑規(guī)劃,采取柵格解耦法,將機器人工作空間劃分為若干點塊,標(biāo)記存在障礙物的域塊,在行進(jìn)方向上將這些域塊篩選出來,在地圖中以目標(biāo)方向最遠(yuǎn)的域塊作為目標(biāo)域塊,在這個過程中即可標(biāo)記出當(dāng)前地圖重要域塊位置。確定障礙物所在域格后,可將其轉(zhuǎn)變?yōu)閿?shù)學(xué)建模中的圖論優(yōu)化問題,找到機器人避開這些點位抵達(dá)目標(biāo)點的最優(yōu)路徑,也就是最短路問題。在這個過程中,因為機器人本身具有一定大小,所以在通過障礙物區(qū)域時要適當(dāng)增大轉(zhuǎn)角與轉(zhuǎn)彎距離,確保機器人不會與障礙物發(fā)生碰撞。Dijkstra 算法常被用來解決最短路問題對每個障礙點做上標(biāo)記,計算相鄰兩點之間最短距離,生成帶權(quán)鄰接矩陣,再從矩陣中篩選兩點之間的最短路徑,即可找到從起點至目標(biāo)點的最優(yōu)路徑。因該算法的到的是通過各點抵達(dá)目標(biāo)點的路線,所以需要在路線上做些改動,在抵達(dá)各障礙點時進(jìn)行一定的轉(zhuǎn)向,避開該障礙物。
設(shè)計一種基于ORB-SLAM2 系統(tǒng)結(jié)合激光雷達(dá)與相機實現(xiàn)智能避障的探索機器人。依靠SLAM系統(tǒng)構(gòu)建地圖篩選地圖關(guān)鍵幀,通過柵格解法定位處在目標(biāo)路線上的障礙點,再利用Dijkstra 算法找到最優(yōu)路線,周期化機器人運動,完成探索工作。整個過程具有自主能力,基本不需要人工操控,方便進(jìn)行未知環(huán)境探索,且具有體積小,重量輕,易于攜帶特點,在接收相關(guān)指令后還可以抓取小物體進(jìn)行攜帶,缺點是算法復(fù)雜性較高,對處理器有較高要求。此外機器人可以針對具體使用環(huán)境可以進(jìn)行部分硬件結(jié)構(gòu)的調(diào)整和材料的更換,也可實現(xiàn)多臺智能機器人共同工作,相互配合,高效的探索未知區(qū)域的,具有較強應(yīng)用價值。