黃廣偉,陳夢婷,廖偉濤
(東莞城市學(xué)院 智能制造學(xué)院,廣東 東莞 523419)
同時(shí)定位和建圖(Simultaneous Localization and Mapping,SLAM)[1-2]是指將移動(dòng)機(jī)器人置于未知環(huán)境中的未知位置時(shí),移動(dòng)機(jī)器人自動(dòng)逐步構(gòu)建與環(huán)境一致的地圖,并同時(shí)使用該地圖確定其自身在地圖中的位置,SLAM一直是研究的熱點(diǎn)問題之一。SLAM技術(shù)是機(jī)器人實(shí)現(xiàn)自主移動(dòng)的關(guān)鍵,傳統(tǒng)的激光SLAM技術(shù)比較成熟,但其成本比較高,另外在靈活性、操作性、部署性等表現(xiàn)差,無法滿足室外環(huán)境需要。本文采用“RGB-D+IMU+激光雷達(dá)”多傳感融合SLAM策略可實(shí)現(xiàn)移動(dòng)機(jī)器人在未知環(huán)境下快速自主定位與建圖(SLAM),并使用Dijkstra算法[3]、DWA算法[4-5]相結(jié)合的方法,實(shí)現(xiàn)了自主移動(dòng)機(jī)器人的全局路線規(guī)劃與局部路線規(guī),可實(shí)現(xiàn)精準(zhǔn)路徑規(guī)劃與避障功能,具有一定的工程參考意義。
自主移動(dòng)機(jī)器人主要由控制器處理系統(tǒng)、傳感器系統(tǒng)與運(yùn)動(dòng)執(zhí)行系統(tǒng)等組成(如圖1)。控制器處理系統(tǒng)由上位機(jī)英偉達(dá)Jetson nano、下位機(jī)STM32F407VET6控制板兩部分組成。其中Jetson nano是基于Linux系統(tǒng)的主控制器,主要功能是處理深度相機(jī)RGB-D、高精度慣性測量傳感器IMU、激光雷達(dá)等多傳感信息,完成同時(shí)定位和建圖(SLAM)任務(wù),并進(jìn)行精準(zhǔn)的路徑規(guī)劃及避障等,另外通過串行端口接收下位機(jī)STM32傳輸?shù)臄?shù)據(jù)并對其發(fā)送控制命令;而下位機(jī)STM32主要是負(fù)責(zé)控制電動(dòng)機(jī)。傳感器系統(tǒng)主要由深度相機(jī)RGB-D、高精度慣性測量傳感器IMU、激光雷達(dá)等組成,實(shí)時(shí)完成信號檢測與姿態(tài)反饋等任務(wù)。運(yùn)動(dòng)執(zhí)行系統(tǒng)主要由4個(gè)直流無 刷 電 動(dòng) 機(jī)MG513、電動(dòng)機(jī)驅(qū)動(dòng)器TB6612FNG等組成,完成運(yùn)動(dòng)執(zhí)行任務(wù)。

圖1 自主移動(dòng)機(jī)器人實(shí)物圖
自主移動(dòng)機(jī)器人控制系統(tǒng)如圖2所示,以英偉達(dá)Jetson nano為上位機(jī),以單片機(jī)STM32為下位機(jī)。傳感器系統(tǒng)(深度相機(jī)RGB-D、激光雷達(dá))實(shí)時(shí)采集數(shù)據(jù)后輸送回上位機(jī),上位機(jī)根據(jù)采集數(shù)據(jù)信號應(yīng)用ORB-SLAM3算法同時(shí)完成定位和建圖(SLAM)任務(wù),同時(shí)上位機(jī)通過串行端口與下位機(jī)通信,將控制命令發(fā)送給下位機(jī)(單片機(jī)STM32),單片機(jī)STM32接受控制命令后,發(fā)送控制信號給運(yùn)動(dòng)執(zhí)行系統(tǒng),從而實(shí)現(xiàn)運(yùn)動(dòng)控制。高精度慣性測量傳感器IMU將自主移動(dòng)機(jī)器人運(yùn)動(dòng)姿態(tài)反饋給主控制器,供及時(shí)調(diào)整路徑、避障策略提供參考。

圖2 控制系統(tǒng)框架
為了便于對自主移動(dòng)機(jī)器人的實(shí)時(shí)控制,PC機(jī)通過Wi-Fi與主控制器(Jetson nano)連接,采用SSH方式實(shí)現(xiàn)遠(yuǎn)程登陸到自主移動(dòng)機(jī)器人的主控制器(Jetson nano)。
自主移動(dòng)機(jī)器人上位機(jī)與下位機(jī)通信架構(gòu)如圖3所示,從圖3中可知上位機(jī)Jetson nano處理器與下位機(jī)STM32主控板之間的通過串口通信。Jetson nano作為計(jì)算單元并通過串口通信方式和STM32 進(jìn)行數(shù)據(jù)交互,STM32作為實(shí)時(shí)主控板,直接控制底盤。

圖3 自主移動(dòng)機(jī)器人通信架構(gòu)
Jetson nano、STM32程序啟動(dòng)后,當(dāng)Jetson nano收到速度訂閱信息后,會(huì)直接通過串口給STM32單片機(jī)發(fā)送信號;只有當(dāng)Jetson nano向STM32單片機(jī)發(fā)送{0xff,0xfe,'e'} 指令之后,STM32單片機(jī)會(huì)立即按照通信協(xié)議反饋數(shù)據(jù)給Jetson nano,反之則STM32單片機(jī)只接收和執(zhí)行串口發(fā)送來的速度與轉(zhuǎn)向數(shù)據(jù)幀。
為了快速處理傳感信息,本控制系統(tǒng)采用多線程設(shè)計(jì),如圖4所示,信息采集線程、控制信號線程可同時(shí)進(jìn)行,可提高系統(tǒng)處理信息速度。

圖4 控制系統(tǒng)多線程設(shè)計(jì)示意圖
多線程創(chuàng)建代碼如下:

本控制系統(tǒng)以ROS 為基礎(chǔ)軟件,ROS各節(jié)點(diǎn)之間通信采用Topic 方式。節(jié)點(diǎn)管理器(ROS Master)負(fù)責(zé)管理ROS內(nèi)一切節(jié)點(diǎn)的發(fā)布與訂閱,它會(huì)根據(jù)訂閱者(Listener)節(jié)點(diǎn)所提供的需要訂閱的話題名稱及消息類型,自動(dòng)尋找匹配的發(fā)布者節(jié)點(diǎn)(Talker),并將發(fā)布者的地址發(fā)送給訂閱者。訂閱者收到節(jié)點(diǎn)管理器發(fā)來的信息后,會(huì)通過使用XML/RPC協(xié)議請求發(fā)布者進(jìn)行連接。發(fā)布者接收到XML/RPC協(xié)議請求之后會(huì)向訂閱者發(fā)送確認(rèn)反饋[6],訂閱者接收到反饋并確認(rèn)之后,將會(huì)使用TCPROS創(chuàng)建與發(fā)布者對應(yīng)的連接,最后,發(fā)布者將使用TCPROS向訂閱者發(fā)布消息。
如圖5所示,Talker節(jié)點(diǎn)會(huì)發(fā)布名稱為“bar”的Topic數(shù)據(jù),該節(jié)點(diǎn)啟動(dòng)時(shí),節(jié)點(diǎn)管理器(ROS Master)將接收到Talker的相關(guān)注冊信息,包括節(jié)點(diǎn)的名稱、話題名稱、消息類型、話題緩沖大小等, 相應(yīng)Listener 節(jié)點(diǎn)運(yùn)行時(shí)也會(huì)提交對應(yīng)的注冊信息。從而實(shí)現(xiàn)ROS各節(jié)點(diǎn)之間通信。

圖5 Topic通信模型
本文采用“RGB-D+IMU+激光雷達(dá)”多傳感融合SLAM策略,使用深度相機(jī)RGB-D、激光雷達(dá)作為采集器,應(yīng)用ORB-SLAM3算法進(jìn)行自動(dòng)逐步構(gòu)建與環(huán)境一致的地圖,可實(shí)現(xiàn)移動(dòng)機(jī)器人在未知環(huán)境下快速自主定位與建圖(SLAM),使用高精度慣性測量傳感器IMU,將自主移動(dòng)機(jī)器人六軸姿態(tài)角(或角速率)及加速度等信息反饋至主控制器,以便更好地調(diào)整姿態(tài),其基本原理如圖6所示。

圖6 SLAM基本原理圖
本控制系統(tǒng)主要應(yīng)用了ROS機(jī)器人操作系統(tǒng)下的navigation框架,使用了Dijkstra算法作為全局算法和DWA動(dòng)態(tài)窗口算法作為局部算法以實(shí)現(xiàn)自主移動(dòng)機(jī)器人路徑規(guī)劃功能,具體流程如圖7(a)、圖7(b)所示。

圖7 路徑規(guī)劃流程圖
自主移動(dòng)機(jī)器人選用室內(nèi)實(shí)驗(yàn)室作為實(shí)驗(yàn)環(huán)境,以buntu為操作系統(tǒng),以ROS系統(tǒng)為軟件基礎(chǔ),使用ORBSLAM3算法對室內(nèi)環(huán)境進(jìn)行建圖。實(shí)驗(yàn)場景如圖8所示,為開放性實(shí)驗(yàn)室學(xué)生制作區(qū),圖8(a)中過道有障礙物,圖8(b)中過道無障礙物,對自主移動(dòng)機(jī)器人在光線變化不均、有無障礙物的不同場景下,同時(shí)定位與建圖(SLAM)功能進(jìn)行了測試。

圖8 實(shí)驗(yàn)場景
另外對自主移動(dòng)機(jī)器人路徑規(guī)劃,精確度進(jìn)行了試驗(yàn),試驗(yàn)過程如圖9所示;對避障功能進(jìn)行測試,如圖10所示。
從真實(shí)環(huán)境試驗(yàn)結(jié)果來看,自主移動(dòng)機(jī)器人可實(shí)現(xiàn)基于精確建圖下的自主導(dǎo)航、路徑規(guī)劃及避障功能,同時(shí)精度達(dá)到了預(yù)期目標(biāo)。
本文采用“RGB-D+IMU+激光雷達(dá)”多傳感融合SLAM策略,結(jié)合ORB-SLAM3算法,可實(shí)現(xiàn)快速實(shí)時(shí)定位與建圖(SLAM),采用Dijkstra算法為全局路線規(guī)劃算法、DWA算法為局部路線規(guī)劃算法,以開放性實(shí)驗(yàn)室學(xué)生制作區(qū)為真實(shí)實(shí)驗(yàn)場景,從實(shí)驗(yàn)結(jié)果來看,能實(shí)現(xiàn)精確自主時(shí)定位和建圖(SLAM),并能實(shí)現(xiàn)路徑規(guī)劃及避障功能,定位精度達(dá)到了±6 mm,實(shí)現(xiàn)了預(yù)期目標(biāo)。