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

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

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

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

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

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

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

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

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

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