蔣江紅,張鍥石
(1.陜西師范大學(xué) 計算機(jī)科學(xué)學(xué)院,陜西 西安 710119;2.中國科學(xué)院深圳先進(jìn)技術(shù)研究院 集成所,廣東 深圳 518055;3.香港中文大學(xué)(深圳),廣東 深圳 518055)
智能機(jī)器人種類繁多,目前應(yīng)用比較廣泛的為輪式移動機(jī)器人,其主要是由微機(jī)控制的智能車輛[1-2]。輪式移動機(jī)器人z主要應(yīng)用于室內(nèi)或庫房的巡邏、行星探測、教學(xué)、科研以及民用運(yùn)輸?shù)确矫?。具備在環(huán)境信息感知基礎(chǔ)上實(shí)現(xiàn)路徑規(guī)劃和自定位成為輪式移動機(jī)器人的必備功能,同時也是此領(lǐng)域機(jī)器人的研究重點(diǎn)。在機(jī)器人運(yùn)動估計和建圖算法中SLAM算法起到了關(guān)鍵作用[3],通過優(yōu)化慣性測量單元獲取的機(jī)器人的位姿信息來提升SLAM算法的精度[4]?;赟LAM技術(shù),文中設(shè)計了一個可以在陌生場景下完成環(huán)境感知、定位、地圖構(gòu)建、動態(tài)路徑規(guī)劃和運(yùn)動控制等自主控制的機(jī)器人系統(tǒng)。不僅可以用于安防監(jiān)控、危險場所巡檢、外星球探測、家庭服務(wù)、自動駕駛等領(lǐng)域,同時為相關(guān)領(lǐng)域的科研工作者提供了一個完整的研究平臺??蒲泄ぷ髡呖梢詫γ恳荒K的算法進(jìn)行替換和改進(jìn),從而不斷提升該移動輪式機(jī)器人的性能。
整個機(jī)器人系統(tǒng)主要由底層運(yùn)動控制器、智能控制器和移動控制終端三部分構(gòu)成。為了提高智能機(jī)器人的工作效率,機(jī)器控制系統(tǒng)采用雙控制器結(jié)構(gòu),其中Arduino控制器用于移動機(jī)器人的速度控制和傳感數(shù)據(jù)的采集,負(fù)責(zé)移動機(jī)器人的移動與轉(zhuǎn)向等具體動作的實(shí)現(xiàn);智能控制器采用全志A31S開發(fā)板,主要負(fù)責(zé)激光雷達(dá)和攝像頭數(shù)據(jù)的采集,并進(jìn)行分析處理形成相應(yīng)的控制指令傳到運(yùn)動控制器,另外結(jié)合采集的數(shù)據(jù),利用SLAM技術(shù)來進(jìn)行路徑規(guī)劃和地圖構(gòu)建并將生成的地圖實(shí)時傳到移動控制終端;移動控制終端用于地圖的顯示以及人機(jī)交互。采用這種架構(gòu)可以使得設(shè)計的移動機(jī)器人在軟硬件方面便于移植、裁剪和進(jìn)行功能上的擴(kuò)展[5]。系統(tǒng)的總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
文中設(shè)計的智能機(jī)器人為輪式移動智能小車,機(jī)器人部件包含車輪、電機(jī)、光電編碼器、視覺傳感器、激光雷達(dá)、電機(jī)驅(qū)動電路、電源控制模塊等組件。機(jī)器人采用差速轉(zhuǎn)向,利用運(yùn)動學(xué)分析,對運(yùn)動過程中各類參數(shù)進(jìn)行調(diào)整才能使機(jī)器人在控制下進(jìn)行移動[6],為了方便控制,移動速度一般在1 m/s左右[7]。綜合實(shí)用性、簡潔性和線路布線易實(shí)現(xiàn)等因素,將車輪、電機(jī)、電源控制模塊、電機(jī)驅(qū)動置于車體底層,將電源、卡片電腦與攝像頭置于車體中間層。根據(jù)激光雷達(dá)的工作原理,將其置于車體頂層,可以有效地提高系統(tǒng)定位的精度。整個系統(tǒng)的結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)實(shí)物
移動機(jī)器人系統(tǒng)搭載了視覺傳感器(攝像頭)、激光雷達(dá)和慣性測量單元(IMU)等主要傳感器,為了能夠?qū)崿F(xiàn)機(jī)器人在狹小空間內(nèi)自主導(dǎo)航避障,機(jī)器人所采用的激光雷達(dá)每秒采集數(shù)據(jù)高達(dá)4 000點(diǎn),采集范圍達(dá)到6米,精度為毫米級。激光雷達(dá)的工作原理類似于聲吶,工作時發(fā)射器發(fā)送經(jīng)過調(diào)制的紅外激光束,激光遇到障礙物體后會有部分激光反射回來被接收視覺采集系統(tǒng)接收物體與雷達(dá)中心的距離以及當(dāng)前距離的夾角信息,并通過通信接口輸出。激光雷達(dá)環(huán)境掃描范圍如圖3所示。
圖3 激光雷達(dá)掃描輪廓
將激光雷達(dá)和攝像頭采集的數(shù)據(jù)進(jìn)行深度融合,可以避免單個傳感器的局限性并有效地提高機(jī)器人定位導(dǎo)航的精度,通過視覺回環(huán)檢測可以降低累計誤差[8-9]。視覺傳感器得到的環(huán)境深度信息能夠匹配到激光雷達(dá)構(gòu)建的2D地圖上,因此可以利用激光雷達(dá)和視覺融合信息發(fā)現(xiàn)單個傳感器所不易發(fā)現(xiàn)的障礙物,結(jié)合激光雷達(dá)得到的邊緣深度和相機(jī)圖像中的深度進(jìn)行自動對齊[10],提高移動機(jī)器人的路徑規(guī)劃和避障性能。
智能控制器軟件平臺采用操作系統(tǒng)Ubuntu12.04LTS,在該操作系統(tǒng)的基礎(chǔ)上建立ROS框架。ROS系統(tǒng)提供了編譯、鏈接和運(yùn)行代碼的工具與庫函數(shù)[11-12],通過創(chuàng)建一個用Arduino控制小車動作的ROS話題,并將該控制算法提前寫入Arduino中,小車在行進(jìn)過程中,采用ORB-SLAM2算法[13]不斷從話題中讀取采集到的實(shí)時圖像信息,首先定位出自身所處的位置,然后再得到實(shí)時運(yùn)動軌跡并繪出所處環(huán)境的地圖信息。
智能機(jī)器人主要通過激光雷達(dá)、視覺傳感器、光電編碼器,驅(qū)動電路、電機(jī)、控制器和移動控制終端等來完成整體控制。通過慣性測量單元和傳感器采集到的數(shù)據(jù),利用卡爾曼濾波器[14]和PID控制算法來實(shí)現(xiàn)機(jī)器人的速度控制[15]。采用卡片電腦作為智能控制平臺,數(shù)據(jù)的采集主要由激光雷達(dá)和光電編碼器完成,將所獲得的數(shù)據(jù)通過一系列的算法完成環(huán)境輪廓掃描、地圖構(gòu)建和自主定位等操作。通過自主設(shè)計的機(jī)械控制與嵌入式智能控制系統(tǒng)相結(jié)合,可以實(shí)現(xiàn)高效的機(jī)器人姿態(tài)獲取,從而實(shí)現(xiàn)精準(zhǔn)的路徑規(guī)劃與導(dǎo)航。
使用激光雷達(dá)作為主要的環(huán)境感知途徑,即使在光線條件較差的情況下仍可以工作。由于采用了高分辨率攝像頭和激光雷達(dá)兩種環(huán)境信息采集工具,機(jī)器人的環(huán)境適應(yīng)性強(qiáng),可以在黑夜與白天兩種環(huán)境下正常工作。并且機(jī)器人具有數(shù)據(jù)回傳功能、自主運(yùn)動功能,可進(jìn)行遠(yuǎn)距離自主或者人為控制下的環(huán)境探索。
整個機(jī)器人系統(tǒng)的工作流程為:移動控制終端發(fā)布運(yùn)動控制和地圖構(gòu)建指令,卡片電腦接收到指令后開始工作??ㄆ娔X根據(jù)激光雷達(dá)點(diǎn)云數(shù)據(jù)實(shí)現(xiàn)地圖構(gòu)建,通過一系列算法實(shí)現(xiàn)定位與路徑規(guī)劃,而后通過USB信號總線傳輸控制信號至Arduino控制板,運(yùn)動控制板接收卡片電腦傳來的控制信號,輸出脈沖寬度調(diào)制信號(PWM),控制電機(jī)驅(qū)動板輸出電流,進(jìn)而驅(qū)動機(jī)器人輪子轉(zhuǎn)動。光電編碼器利用碼盤的轉(zhuǎn)動實(shí)現(xiàn)輸出脈沖電信號,經(jīng)比例運(yùn)算后通過Arduino控制板傳到卡片電腦,實(shí)現(xiàn)機(jī)器人車輪運(yùn)動情況的采集。機(jī)器人通過視覺傳感器接收圖像數(shù)據(jù),經(jīng)過信息整合與數(shù)據(jù)反饋分析,采用SLAM算法先對小車進(jìn)行定位,然后生成小車所處環(huán)境的地圖,最后小車可以根據(jù)地圖上的路徑規(guī)劃行駛,避開障礙物。系統(tǒng)的控制流程如圖4所示。
圖4 系統(tǒng)控制流程
機(jī)器人采用柵格地圖作為地圖模型,由于柵格地圖易于創(chuàng)建和維護(hù)且每個柵格的信息可以和對應(yīng)的環(huán)境中的某個區(qū)域所對應(yīng),便于處理超聲波測量數(shù)據(jù)和激光測量數(shù)據(jù),適用于室內(nèi)和未知環(huán)境下的地圖構(gòu)建。
利用激光雷達(dá)采集的二維幾何信息,可以提取點(diǎn)云密度及距離信息,并將其存儲到一個二維的柵格地圖中。
圖5 路徑規(guī)劃
基于柵格地圖[16]實(shí)現(xiàn)路徑規(guī)劃的步驟為:
(1)獲取智能機(jī)器人當(dāng)前的位姿狀態(tài)并進(jìn)行采樣;
(2)根據(jù)每個采樣的速度來計算機(jī)器人以該速度行駛一段時間后的狀態(tài)及相應(yīng)的移動路徑;
(3)利用一些評價標(biāo)準(zhǔn)為多條路線打分,從而選擇最優(yōu)路徑;
(4)重復(fù)上述過程。測試效果如圖5所示。
文中設(shè)計的智能機(jī)器人采用的硬件平臺為全志A31S卡片電腦和Arduino控制板,其中卡片電腦主要用于地圖構(gòu)建和路徑規(guī)劃算法的實(shí)現(xiàn),Arduino用于控制智能小車的前進(jìn)、后退和轉(zhuǎn)向。為了便于后期智能機(jī)器人功能的擴(kuò)展,Arduino開發(fā)板主要用于機(jī)器人電機(jī)控制以及超聲波傳感器等數(shù)據(jù)的采集;將Arduino利用USB接口連接至卡片電腦,卡片電腦通過ROS操作系統(tǒng)讀取Arduino開發(fā)板采集到的機(jī)器人速度信息和傳感器數(shù)據(jù),從而控制機(jī)器人的電機(jī),使機(jī)器人執(zhí)行相應(yīng)的動作。機(jī)器人通過激光雷達(dá)和視覺傳感器掃描采集周圍環(huán)境信息,通過卡片電腦運(yùn)行的SLAM算法來實(shí)時構(gòu)建地圖,并將構(gòu)建的地圖及時上傳至移動控制終端,通過移動控制終端可以觀察構(gòu)建的地圖并與機(jī)器人進(jìn)行交互。根據(jù)在實(shí)際環(huán)境下對智能機(jī)器人的功能進(jìn)行測試,移動機(jī)器人能夠?qū)崿F(xiàn)在陌生環(huán)境中自主探索導(dǎo)航,主動避障到達(dá)目標(biāo)點(diǎn)。在黑夜環(huán)境中,普通的視覺導(dǎo)航機(jī)器人無法實(shí)現(xiàn)環(huán)境分析與導(dǎo)航功能,紅外成像也是無法做到的。此時激光雷達(dá)機(jī)器人便能充分發(fā)揮它的優(yōu)勢,在環(huán)境光線極低的情況下也能正常工作,與視覺導(dǎo)航機(jī)器人形成互補(bǔ)關(guān)系。實(shí)際測試效果如圖6所示。
從圖中可以看出,在小車的運(yùn)行過程中,ORB_SLAM2會通過不斷在地圖中標(biāo)注出自己的軌跡并根據(jù)周圍的環(huán)境來控制小車的行駛路徑。
設(shè)計了一種利用卡片電腦和Arduino開發(fā)板搭建的雙控制器智能機(jī)器人模型,并且使用SLAM算法實(shí)現(xiàn)了智能機(jī)器人的定位和在未知環(huán)境下的地圖建模,能夠根據(jù)生成的地圖來對小車的路徑進(jìn)行規(guī)劃和自動導(dǎo)航。實(shí)驗表明設(shè)計的智能機(jī)器人能夠有效實(shí)現(xiàn)小車在未知環(huán)境中的定位和實(shí)時地圖構(gòu)建,具有較高的穩(wěn)定性且易于擴(kuò)展。