李陽 盧健 何耀幀
摘 要:自主導航與避障是目前移動小車的發展趨勢,本文采用的Fast-SLAM算法,導航和避障階段采用的全局路徑規劃A*算法和局部路徑規劃DWA算法。Arduino支持ROS主題的發送和接收,并執行算法所發下來的指令,間接驅動電機的運轉速度。
關鍵詞:自主避障與導航;路徑規劃;Arduino;ROS
一、研究意義和目的
隨著機器人領域的快速發展,自主導航與避障技術發展越來越快,迫切需要一個通用的平臺來讓研究人員進行二次開發。基于ROS系統的小車易于二次開發,研究人員可以在上面根據自己的需求來做各種各樣的開發,但是很多研究人員只是基于ROS系統來研究各種SLAM算法,但是卻沒有一個平臺來實現,本課題研究的就是如何利用開源的算法來搭建自己的小車。有了自己的ROS小車,我們就可以在上面來做很多的后續研究。
二、SLAM技術介紹
SLAM(即同時定位與地圖創建)是移動機器人實現自主行走與避障的前提技術。要實現機器人的行走的自主化就必須滿足三個基本條件,第一是需要知道自己的實時位置,第二預先建立地圖,第三就是路徑規劃。定位和制圖一般是同時進行的。移動機器人在一個未知的環境中開始移動,通過自身攜帶的傳感器和里程計數據生成實時的狀態估計從而完成自身的定位。在定位的同時增量式完成地圖的構建,為下面的路徑規劃提供依據。接下來就是路徑規劃,讓機器能在在已建好的地圖上快速地規劃出一條最優路徑,并實時避開動態的障礙物。
本文主要利用基于粒子濾波的Fast-tslam,粒子濾波是結合了蒙特卡洛定位貝葉斯估計的濾波算法,Fast-SLAM算法主要是將每個粒子看成是對當前狀態的真實估計,在任何時刻,它都會更新采樣的K個樣本粒子,保證實時的更新機器人的當前位姿。Fast-SLAM算法可以用在非高斯分布的非線性隨機系統,而且計算量需求小,能夠很容易的計算出觀測值的重要性權重和運動模型的采樣,Fast-SLAM完全可以滿足機器人導航和定位的實時性,在移動機器人領域應用很廣泛。
路徑規劃從類型上有全局路徑規劃和局部路徑規劃。全局路徑規劃就是機器人在已建立好的環境地圖m中快速地規劃處一條最優路徑。全局路徑規劃主要有可視圖法、柵格法等,全局規劃技術已經比較完善,本文運用的是A*算法。局部路徑規劃主要采用的是動態窗口法(DWA),它是在速度空間中采樣多組速度,并模擬機器人在這些速度下一定時間內的軌跡,在采樣到多組的運動軌跡之后,對運動軌跡進行評價,然后選取最優軌跡所對應的速度來驅動機器人前進。
三、ROS系統和Arduino控制系統
ROS 會創建一個連接到所有進程的網絡。在系統中的任何節點都可以訪問此網絡,并通過該網絡與其他節點交互,獲取其他節點發布的信息,并將自身數據發布到網絡上。總之,ROS對所有的節點進行統一管理。節點與節點通過消息來通信。節點與節點之間使用服務之間直接通信,使用主題進行間接通信。服務是多對一,主題是多對多的關系。
在機器人制圖過程中主要有激光掃描的數據和里程計數據,里程計數據主要有編碼器提供。激光采集到的數據和里程計數據有各自的節點處理,SLAM算法則運行在另外一個節點,節點與節點之間通過訂閱和發布主題來進行通信,能夠互相之間互不干擾地接收和發布消息。這能就能夠實現機器之間的實時通信和數據關聯的同步性,即使其中的一個節點出現錯誤也不會影響其他節點之間的聯系,從而保證節點之間的獨立性。
Arduino是一個開源的電子平臺,它支持多種操作系統,支持C語言的開發環境。Arduino能通過各種各樣的傳感器來感知環境,通過控制電平高低和電壓的高低來控制燈光,馬達和其他裝置,板子上的微控制器可以通過Arduino的編程語言來編寫程序,從而來控制電機的轉動。Arduino IDE支持在linux系統上運行,因此我們可以把它融入到ROS網絡中,建立Arduino節點,接收ROS網絡中的主題,通過接收到cmd_vel消息中導航算法期望的前進線速度和角速度,然后把收到的線速度和角速度轉化為小車左右輪的速度。經過Arduino開發板的計算,從而做到對小車按照自己算法要求的速度前進。通過Arduino不斷的執行上層導航算法發出來的線速度和角速度命令,然后通過發送主題消息,Arduino不斷地反饋小車的當前線速度和角速度給上層算法,然后由上層導航算法來確定下一步的運動,從而完成小車的自主導航和避障。
四、總結
本課題主要對如何搭建ROS小車進行了深入研究,研究了實現小車制圖和定位所用的Fast-SLAM,Fast-SLAM相對于其它SLAM算法有著較快的運算速度,能滿足大部分的硬件需求。路徑規劃采用A*算法,它能在短時間內迅速尋找出一條最優路徑,然后局部路徑規劃實現自主避開動態障礙物,Arduino開發板接收上層算法發下來的指令,然后經過機器運動模型分解到左右輪的速度,然后經過驅動板驅動電機按照目標速度來執行,從而實現了機器人的自主導航與避障。并從實驗角度驗證了自己方法的可行性。本文從全局角度分析了ROS小車的各個模塊,研究者可以按照上述的模塊快速的搭建自己的ROS小車,也根據需要研究需要驗證自己的SLAM算法,能為研究者提供一個良好的研究平臺。
參考文獻:
[1]陳卓,蘇衛華,安慰寧,秦曉麗.移動機器人SLAM與路徑規劃在ROS框架下的實現[J].醫療衛生裝備,2017(02).
[2]安峰.基于開源操作系統ROS的機器人軟件開發[J].單片機與嵌入式系統應用,2017(05).
[3]林海,陳俊同,陳家裕,王康澤.基于ROS的無線圖傳小車設計研究[J].機械工程師,2016(05).