閆存瑩,王福康,田存偉
(聊城大學物理科學與信息工程學院,聊城 252059)
近年來,國內外地震、煤氣泄漏、火災等災害頻發。這些災害造成了嚴重的人員傷亡和財產損失。災害發生后首要的任務是現場狀況和被困人員的探測工作。然而這些探測行動都遇到了同一個難題,因災害過后現場情況復雜(如:有害物質泄露、現場高溫、災后空間狹小),致使救援人員無法進入現場了解情況,救援工作難以展開[1]。目前已開發的探測機器人一種是多自由度、運動靈活,但是體積大、價格昂貴;另一種是體積小巧、運動靈活但功能單一,可靠性不高。為了有效回避以上探測機器人的缺點,本文設計了一種能在多種環境下進行自主探測的機器人,它具有體積小、運動靈活,能適應多種復雜情況、反饋多種信息的優點。
在環境探測機器人領域,為了滿足低功耗的要求,大多采用低性能的處理器作為機器人中控。這就導致探測機器人僅能處理簡單的遙控指令進行探測和搜索,但在復雜的環境中僅僅通過攝像頭傳輸的圖像畫面,操控手并不能完全掌握環境的各種信息,導致傳統探測機器人效率低下,無法完成較為復雜的探測任務,同時對環境的感知能力也較為薄弱。針對探測機器人工作環境的特點,在保證可靠性、低功耗的前提下選擇高性能的處理器來實現復雜的環境感知和自主探測的任務,成為迫切的需求。
本文針對自主探測機器人的工作特點,提出了一種基于Nvidia Jetson主控和激光雷達的可自主建圖、導航、探測的履帶式機器人系統[2]。并通過gazebo軟件仿真和實際測試,能夠實現復雜環境下的探測任務。
機器人以STM32作為底層控制器,控制底盤的驅動電機、霍爾編碼器、IMU慣性傳感器模塊、電量檢測模塊等設備運行。將機器人姿態傳感器數據和里程計信息以串口通信的方式傳送給主控制器進行分析。
為了滿足復雜環境下自主探測的功能,機器人以高性能的Nvidia Jetson NANO作為主控制器,通過對激光雷達的掃描數據進行分析,構建未知探測環境的地圖,并能通過帶有補光燈的高清攝像頭將環境圖像信息傳送回上位機。
機器人以PC為上位機,在Ubantu遠程虛擬機下處理機器人傳回的各種信息和狀態數據、圖像數據,并最終通過ROS可視化工具等展示出來。
機器人的控制方式分為自主搜索模式和手動控制機器人搜索模式。在手動模式下,機器人可根據上位機遙控指令進行運動,將圖像信息和激光雷達信息傳回上位機[3],同時構建環境的2D地形地圖并通過Rviz可視化軟件展示。機器人在自主搜索模式下分為兩種情況:①已獲取環境的電子地圖的情況;②探測環境的地圖未知的情況。在①情況下,上位機可在電子地圖上設置探索目標點,主控制器根據自身定位和目標地點,使用全局路徑規劃算法,規劃出一條最優路徑,底層控制器驅動電機按照規劃路徑進行運動,運動過程中底層控制器反饋的里程計和姿態信息將進行實時分析以判斷運動狀態。同時在運動過程中,激光雷達和攝像頭實時探測周圍環境,并運行gmapping建圖算法將環境地圖傳回上位機,機器人同時根據探測到的周圍環境進行避障,每一次避障完成后繼續運行全局路徑算法按照預設路徑前進,直至達到預設目標點。在②情況下,因環境復雜未知且沒有電子地圖,可將機器人直接布置在需探測的環境中,通過上位機控制機器人運行自主建圖程序,先通過對環境的探索構建出環境地圖,再重復①情況下的任務模式。
1.2.1 Nvidia Jetson NANO
復雜環境下機器人自主探測要求控制器體積小,但涉及到多種傳感器的融合數據處理,同時需要運行多個建圖和路徑規劃算法,本設計選取Nvidia Jetson NANO處理器(如圖2所示)作為主控制器,可同時滿足體積和算力需求[4]。

圖2 Nvidia Jetson NANO主板
Jetson Nano模塊是一款低成本的AI計算機,具備超高的性能和能效,可以運行現代AI工作負載,并行運行多個神經網絡,以及同時處理來自多個高清傳感器的數據。它專為支持入門級邊緣AI應用程序和設備而設計,完善的NVIDIA JetPack SDK包含用于深度學習、計算機視覺、圖形、多媒體等方面的加速庫。
1.2.2 Ubantu系統和ROS機器人操作系統
Ubuntu是一個以桌面應用為主的Linux操作系統。Ubuntu基于Debian發行版和Gnome桌面環境,而從11.04版起,Ubuntu發行版放棄了Gnome桌面環境,改為Unity。從前人們認為Linux難以安裝、難以使用,在Ubuntu出現后這些都成為了歷史。Ubuntu也擁有龐大的社區力量,用戶可以方便地從社區獲得幫助。自Ubuntu 18.04 LTS起,Ubuntu發行版又重新開始使用GNOME3桌面環境。
機器人操作系統(robot operating system,ROS)是一個應用于機器人上的操作系統,它操作方便、功能強大,特別適用于機器人這種多節點多任務的復雜場景。ROS是一個適用于機器人編程的框架,這個框架把原本松散的零部件耦合在一起,為它們提供了通信架構。ROS雖然叫做操作系統,但并非Windows、Mac那樣通常意義的操作系統,它只是連接了操作系統和開發的ROS應用程序,所以它也算是一個中間件,在ROS的應用程序之間建立起了溝通的橋梁,所以也是運行在Linux上的運行環境,在這個環境上,機器人的感知、決策、控制算法可以更好地組織和運行。
1.2.3 ROS程2序開發流程
軟件節點設計框圖如圖3所示。

圖3 系統軟件節點設計框圖
本設計根據ROS系統特點,對機器人的功能進行劃分,設計了不同的功能節點,如表1所示。

表1 機器人各節點功能
機器人ROS層程序開發流程圖如圖4所示,分別為:

圖4 機器人ROS層程序開發流程圖
(1)啟動ROS Master中央節點管理器。
(2)通過roslaunch命令啟動編寫好的.launch文件,啟動多個ROS節點。
(3)與下層控制器進行串口通信,訂閱/cmd_vel話題作為控制輸入。
(4)判斷是否有上位機指令,若收到開始接收數據,未收到則等待。
(5)將底層控制器的數據通過底盤控制節點讀取。
(6)判斷是上位機指令為SLAM或路徑規劃,對應執行以下步驟(7)或(8)。
(7)進行SLAM建圖:調用激光雷達的雷達節點、同步定位與建圖節點、底盤控制節點進行SLAM建圖。
(8)進行路徑規劃:調用激光雷達的雷達節點、路徑規劃節點、底盤控制節點進行SLAM建圖。
Simultaneous是實時同步,Localization是在給定地圖的情況下,估計機器人的位姿,Mapping是在給定智能車位姿的情況下,建立環境的地圖。SLAM算法就是指同時估計機器人的位姿并且建立環境地圖。機器人在移動過程中需要導航和路徑規劃,SLAM主要解決智能車在自主移動過程中的定位和建立地圖的問題,獲取地圖信息從而進行路徑規劃避開障礙物[5]。
考慮到機器人探測環境大多為狹小空間,即需要構建小場景高精度的地圖,同時還要盡量減小計算量。本設計采用的SLAM算法為gmapping,該算法是一個比較完善的地圖構建開源包,使用激光和里程計的數據來生成二維地圖。
SLAM程序設計流程圖如圖5所示。

圖5 SLAM程序設計流程圖
動態窗口法(DWA)主要是在速度()v,w空間中采樣多組速度,并模擬機器人在這些速度下一定時間(sim_period)內的軌跡。在得到多組軌跡以后,對這些軌跡進行評價,選取最優軌跡所對應的速度來驅動機器人運動。
DWA算法將避障問題轉化為速度空間中的三個約束條件:①移動機器人的最大和最小速度約束;②移動機器人的動態性能約束;③移動機器人的安全約束[6]。
機器人的采樣速度應該控制在移動機器人自身的最大速度與最小速度區間內,v表示線速度,w表示角速度,則約束公式:
由于機器人動力學的限制,線加速度v˙和角加速度˙存在上限和下限,vc,wc指當前時刻的線速度、角速度,Δt為時間間隔,因此滿足:
基于移動機器人的安全性考慮,防止機器人因速度因素而撞上障礙物,提出了滿足機器人運動安全性考慮的速度空間:
式中,dist(v,w)即為當前軌跡距最近障礙物的距離。該碰撞條件是在將機器人軌跡模擬出來以后,根據機器人和障礙物之間的距離,計算當前采樣的速度是否可以在碰到障礙物之前停止,若可以停止,則該速度即為允許的速度[7]。
最終機器人動態窗口的速度范圍應滿足:
本次系統實驗分為兩部分,第一部分是檢驗軟件系統的整體性和算法的可行性,在Gazebo仿真軟件上所做的系統仿真實驗;第二部分是實物實景測試。
整個仿真系統在Ubantu18.04系統上運行,ROS版本為Melodic版本,系統配置如表2所示。

表2 Ubantu系統配置信息
基于ROS和Gazebo的無人船傳感器融合仿真環境框架如圖6所示。

圖6 基于ROS和Gazebo的無人船傳感器融合仿真環境
圖7為Gazebo仿真環境下的模擬環境,設置圓柱體和正方體模仿障礙物。

圖7 Gazebo仿真環境下的模擬環境
運行SLAM算法進行建圖,并在Rviz軟件中顯示建圖結果,如圖8所示。
在圖8中,左下角顯示為攝像頭的實時圖像數據,建圖中邊緣處紅色點為激光雷達掃描點,根據實驗結果可知本設計采用的SLAM算法達到預期目標。

圖8 Rviz軟件中顯示建圖結果
在完成SLAM建圖的基礎上,我們對路徑規劃算法進行測試,在地圖中設置目標點位,由機器人自主規劃路徑并前往。運行結果如圖9所示。

圖9 路徑規劃運行結果
在圖9可以看到,設置目標點后,路徑規劃算法規劃出一條路徑,如圖中綠色軌跡所示,并最終到達設置目標點。根據實驗結果可知路徑規劃算法達到預期目標。
實測場景如圖10所示。

圖1 機器人總體設計方案圖

圖10 實測場景
機器人配置如表3所示,上位機配置如表4所示。

表3 機器人參數

表4 上位機配置
SLAM建圖結果:運行SLAM建圖程序,對實驗環境進行掃描,結果如圖11所示。

圖11 實驗環境掃描圖
導航及路徑規劃運行結果如圖12所示,步驟為導入地圖,運行路徑規劃程序,設置目標點,展示規劃路徑,驅動機器人前往目標點。經過測試,機器人根據規劃路徑順利到達目標點。

圖12 導航及路徑規劃結果
本文提出了一種基于Nvidia Jetson的自主環境探測機器人,設計了機器人的軟件系統和硬件系統,并通過SLAM算法和路徑規劃算法實現了機器人的自主環境探索功能,并通過Gazebo仿真軟件對軟件系統的可行性進行了測試。實驗結果表明,本設計的軟件系統設計達到應用目標。通過對實驗室環境的實際測試,將機器人置于較為復雜的環境中進行實際測試,表明機器人的整體設計完備,具備實際應用價值。而對于地圖構建的精度問題,未來還將通過繼續優化建圖算法和提高硬件性能來獲取更好的建圖效果。