陳錦儒 林潔彬 張成



關鍵詞:機器人;ROS系統;路徑規劃;自主導航
0 引言
隨著社會對機器人技術的要求不斷提高,移動機器人的應用環境復雜度逐步上升,如何提高機器人的高度自主控制性成為當下機器人研究熱點。在抗擊疫情中高度自主控制的移動機器人作為強大的抗疫資源,可用于定點空間消毒、配送食物與藥品,甚至可運輸重要待檢物品等工作,從而減少醫護人員的接觸風險。為進一步探究機器人的自主性技術,以阿克曼結構的小車為載體,搭配樹莓派與激光雷達設計一個具備SLAM與自主導航功能的移動機器人。該移動機器人可代替人工進行作業的移動裝置,具有路徑規劃、運動控制等功能,能夠實現一般環境下全線范圍內自主導航[1]。目前應用于地圖的路徑規劃算法中,常用的智能算法有蟻群算法、粒子群算法以及A*算法等[2-4]。針對自主導航的研究,采用激光雷達實現地圖的構造,在路徑規劃過程中為避免采用單一的動態窗口算法(DWA)導致局部較優路徑而并非全局最優困境問題,綜合運用A*和DWA算法進行路徑規劃,通過融合A*算法優化局部路徑規劃算法,擴展搜索領域和消除同方向多余子節點,使移動機器人沿著全局最優路徑方向搜索目標點[5-6]。
1 移動機器人的基本結構
移動機器人采用分層結構設計,頂層負責各傳感器數據的獲取、計算以及處理,底層接收上層的數據完成機器人的自主控制。機器人實體分成三層,在自主導航過程中,為了保證機器人的移動穩定,底盤結構采用了阿克曼轉向機構。移動機器人在轉向時,由于左、右轉向輪的轉向半徑不同所造成的左、右轉向輪轉角不同,根據阿克曼轉向幾何設計轉向機構,利用四連桿的相等曲柄,可以使內側輪的轉向角比外側輪大大約2~4度,使四個輪子路徑的圓心大致交會于后軸的延長線上瞬時轉向中心,從而讓機器人順暢地轉彎。移動機器人整體動力由后驅動輪輸出,為了避免在復雜環境下后驅動輪同軸運轉,底盤加裝了轉軸避震模塊。其實物圖見圖1所示。
移動機器人控制系統采用上位機與下位機控制相結合的方式來實現地圖構建與自主導航[7]。上位機控制系統采用樹莓派4B為主控,搭載了Ubuntu18.04+ROS melodic操作系統,接收激光雷達提供的數據并構建地圖,從而獲取機器人的本體位姿數據,實現移動機器人的感知、路徑規劃,并輸出機器人的運動控制信息等功能。下位機控制系統由STM32F103RCT6 最小系統為主控,包含電機與電機驅動模塊、電機編碼器、方向舵機模塊以及顯示模塊等部分組成。機器人通過下位機與上位機的數據通信,下位機獲取控制指令與機器人定位信息,輸出PWM信號給電機驅動控制帶編碼器的電機轉動,并根據電機的速度反饋回STM32 控制器來實現閉環控制,從而達到機器人自主導航控制的效果。為了隨時監控移動機器人的運行數據,利用樹莓派4B的Wi-Fi功能,同步傳輸機器人數據到PC機平臺,實現移動機器人的遠程操控和監測。其基本結構圖如圖2所示。
2 移動機器人系統
2.1 硬件系統
移動機器人硬件系統是實現環境位置的感知、路徑的規劃、運動控制與導航等功能,將整個硬件系統分為3層:遠程操作系統、嵌入式控制系統、底層控制系統。移動機器人硬件系統組成如圖3所示。
2.2 軟件系統
機器人自主導航控制系統主要包括:可視化界面、環境地圖的構建、機器人的實時位姿信息、導航的路徑規劃等單元模塊。整套控制系統是基于ROS系統的基礎上進行開發,主控核心采用樹莓派4B接收各傳感器返回的數據并進行相應的優化處理,根據構建的地圖信息以及機器人的位姿數據從而實現機器人的自主導航的路徑規劃,并將規劃好的路線數據通過串口通信的方式與STM32主控器傳輸數據,驅動機器人運動,實現自主導航。整個系統的運動控制軟件架構如圖4所示。
1) 可視化界面:RVIZ是ROS的三維可視化工具,以三維方式呈現ROS系統的消息,從而將數據進行可視化的表達。在系統中對機器人的各傳感器數據、構建地圖的任何實物進行尺寸、位置等屬性的描述與顯示,為了更加直觀還可以使用圖形化的方式呈現,實時顯示機器人各環節傳感器的數據,包括機器人的運動狀態、地圖環境等參數。
2) 環境地圖的構建:機器人主要利用激光雷達對外部環境進行全方位的掃描,獲取實時數據后運行通Gmapping算法進行數據的融合與處理,逐步構建出當前環境的全局地圖信息。
3) 機器人的實時位姿信息:機器人的位姿信息分為兩種:初始位姿已知的位姿跟蹤和初始位姿未知的全局定位。位姿跟蹤的前提是確定已知機器人的初始位姿信息,將機器人在運動的過程中通過觀測到的特征數據與地圖中的特征信息進行匹配對比,求解兩者之間的差異,從而更新機器人的位姿數據,達到機器人定位的效果。而位姿跟蹤通常采用擴展卡爾曼濾波器來實現功能,其過程主要包括三大部分:第一部分是根據機器人的運動模型預測機器人的位姿;第二部分是將觀測信息與地圖進行匹配計算;第三部分是根據預測后的機器人位姿以及匹配的特征計算機器人應該觀測到的信息,并利用應該觀測到的信息與實際觀測到的信息之間的差距來更新機器人的位姿。
4) 路徑規劃:針對構建的地圖環境實現路徑規劃的需求與特點,路徑規劃分為全局路線規劃與局部路線規劃兩個階段。第一階段根據全局環境數據,利用一種基于混沌擾動的改進型蟻群算法,提高目標跟蹤數據關聯的處理速度,根據多目標數據關聯問題的特點,將問題轉化為組合優化問題,引入自適應混沌機制,建立數據關聯模型,規劃出全局最優路線規劃。第二階段結合全局規劃的基礎上,分局部規劃,在機器人沿著所全局最優路徑的規劃行走時,同時結合機器人實時姿態信息與局部地圖的關聯,針對當前環境情況控制機器人運動,如果在運行過程中遇到障礙物,可協調控制策略完成局部路徑規劃算法規劃出新的路徑,繞開障礙物回到全局規劃路徑的規劃路線后,繼續轉化局部路徑規劃,實現機器人的自主導航控制。
5) 電機的驅動控制:STM32F103主控系統在接收到樹莓派4B發送過來的路徑規劃數據后,根據移動方向參數以及速度控制的指令,使用PID控制算法計算出兩輪驅動速度以及方向舵機轉向角度,并將驅動指令下發給電機驅動模塊,實現自主導航。
6) TF坐標轉換:機器人的坐標系即base_link坐標系(機器人的機體坐標系),odom坐標系即里程計坐標系,一般都是odme = base_link,map坐標系即固定坐標系(一般為機器人所處的大世界為同一個坐標系),laser坐標系即為激光雷達坐標系。主要是實現機器人以上坐標系之間的相互轉換,將輔助定位模塊得到的坐標系的定位數據轉換成慣性坐標系下的定位數據,并將數據傳遞給Slam_Gmapping 模塊。
7) 輔助定位模塊:該模塊的工作原理是通過采集驅動電機的編碼器反饋的信息以及其慣性測量單元的數據,計算出機器人移動距離長度,再把該數據應用到機器人的位姿信息當中,同時將機器人的定位數據傳遞給TF坐標轉換模塊,實現構建的地圖與機器人的相融合。
3 地圖的構建與自主導航控制實驗
自主導航指的是機器人從起點出發,通過感知環境信息自主識別障礙物并抵達預期目標點。自主導航需要解決的問題主要有環境地圖的構建、機器人的定位以及運動的路徑規劃,其三者的技術關系圖見圖5。地圖構建是指通過對傳感器采集的環境特征信息進行處理繪制出的環境空間模型,進而對數據處理構建出環境空間模型;機器人定位是指以一種度量方式描述機器人在當前環境下的位姿;路徑規劃是根據已知環境地圖為機器人規劃出一條最優路徑。
3.1 環境地圖的構建
在機器人自主導航技術中構建高精度的環境地圖是很重要的一步,在ROS系統下驅動激光雷達運行Gmapping算法檢測的數據將每個柵格的狀態通過灰度值反映在柵格地圖上從而構建出環境地圖,其效果如圖6所示。
Gmapping算法是一種基于RBpf粒子濾波算法使用2D激光雷達完成二維柵格地圖構建的SLAM算法。RBpf粒子濾波算法將定位和建圖分離,由于在建圖過程中需要粒子數多,而且頻繁執行重采樣,從而導致計算量和內存消耗很大,粒子退化嚴重。為了解決上述問題,使用激光雷達的觀測模型作為提議分布,Gmap?ping算法在RBpf粒子濾波算法的基礎上,改進了提議分布和選擇性重采樣,減少粒子數以及重采樣的次數,降低計算量和所需內存,提高算法的運行效率,基于RBpf粒子濾波的Gmapping算法流程圖如圖7所示。
3.2 機器人的自主導航實驗
機器人自動導航過程中,構建的環境地圖更新以及機器人的導航都需要機器人所在的環境位姿數據,需要先對機器人進行定位,綜合構建的地圖再進行路徑規劃,完成自主導航功能。機器人定位數據采用MCL算法實現,MCL算法將粒子分布于整個地圖模型,并且這些粒子圍繞在移動機器人周圍跟隨機器人移動,根據機器人運動狀態消除不正確位置處的粒子,最后剩下代表機器人正確位置處的粒子,從而利用這批粒子完成機器人的全局位姿估計。
4 結束語
本研究是基于ROS系統設計了自主導航機器人控制系統,該控制系統包含兩大部分,環境地圖的構建和移動路徑的規劃。使用激光雷達獲取環境信息,運用Gmapping算法構建地圖模型;利用MCL算法對機器人進行環境的位置估計,對地圖進行局部與全局的路徑規劃,從而實現機器人最優的自主導航路線。通過理論分析和實驗測試驗證了移動機器人的性能和控制算法的可靠性,解析了環境地圖的構建與自主導航的工作原理,為移動機器人的高度自主性的研究提供了參考,基本滿足機器人自主導航的研究要求,在復雜的環境下,自主導航算法還需要在后續的研究中進一步優化和完善。