鮑琳欣 閆琦 董明澤 鄭安迪 羅宇昊
摘? 要:該文從機器人的自動駕駛應用的角度出發(fā),在Ubuntu18.04系統(tǒng)下實現(xiàn)了一套基于ROS Melodic版本的機器人操作系統(tǒng)的移動機器人控制平臺。在一個完整的機器人運動控制的設(shè)計中包括建圖、定位、路徑規(guī)劃及路徑追蹤這4個步驟,平臺首先以Gmapping方法構(gòu)建出全局地圖。由于路徑規(guī)劃與追蹤對于機器人的運動控制非常重要,在進行各種方法的比較之后最終運用Dijkstra算法規(guī)劃出一條全局路徑然后采用DWA路徑局部規(guī)劃器進行局部動態(tài)避障,在運動控制方面也加入了PID控制器使機器人的轉(zhuǎn)向更加平滑。
關(guān)鍵詞:ROS? ?差速控制? ?動態(tài)避障? ?pure pursuit
中圖分類號:TP242.6? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A文章編號:1672-3791(2021)07(c)-0001-03
Abstract: From the perspective of robot autopilot application, a mobile robot control platform based on ROS Melodic version of robot operating system is realized under Ubuntu 18.04 system. The design of a complete robot motion control includes four steps: mapping, positioning, path planning and path tracking. Firstly, the platform constructs the global map by Gmapping method. Because path planning and tracking are very important for robot motion control, after comparing various methods, Dijkstra algorithm is finally used to plan a global path, and then DWA path local planner is used for local dynamic obstacle avoidance. PID controller is also added in motion control to make the steering of robot more smooth.
Key Words: ROS; Differential control; Dynamic obstacle avoidance; Pure pursuit
伴隨著人工智能技術(shù)、計算機與傳感器技術(shù)的快速發(fā)展,自動化、智能化逐漸成為了主流,機器人的運用也逐漸廣泛。智能消毒機器人、物流搬運機器人等漸漸普及,大大解放了人力,也減小了人們受到傷害的可能性。機器人便利了我們的生活,而這一系列的機器人最重要的是實現(xiàn)路徑規(guī)劃與追蹤。由此設(shè)計了一套基于ROS機器人操作系統(tǒng)的移動機器人控制平臺。
該平臺在路徑規(guī)劃中,使用了dijkstra全局路徑規(guī)劃和DWA局部路徑規(guī)劃算法規(guī)劃小車前行的路徑。以Pure pursuit進行路徑追蹤。經(jīng)檢驗,該方法可以達到較好的避障、運動控制效果。
1? 平臺總體設(shè)計
在Ubuntu18.04以及ROS Melodic機器人操作系統(tǒng)下使用差速車模,通過激光雷達、imu等傳感器,完成對未知場地的建圖,對道路上的障礙物識別避障,自主導航,并涉及了SLAM建圖、路徑規(guī)劃算法、車輛運動控制算法等。由于是在小地圖中進行可行性測驗,利用Gmapping方法構(gòu)建出的地圖清晰實用,使得后面進行運動控制也達到了較好的效果。具體系統(tǒng)組成框圖如圖1所示。
2? 路徑規(guī)劃
在得知目標點時,機器人需要規(guī)劃出一條切實可行的路徑,不僅需要與障礙物保持一定的距離,還要盡可能快地穿越障礙。首先經(jīng)過全局路徑規(guī)劃規(guī)劃出一條大致可行的路線,然后調(diào)用局部路徑規(guī)劃器根據(jù)代價地圖的信息實現(xiàn)動態(tài)規(guī)劃[1],在全局路線與局部路線相互協(xié)調(diào)下不斷計算得出新路線,最終既能有效避開突然出現(xiàn)的障礙物,又能快速到達終點。路徑規(guī)劃的方式有很多,還有同時使用多種規(guī)劃方法進行切換以實現(xiàn)動態(tài)規(guī)劃的[2],主要介紹為實現(xiàn)差速控制采用的規(guī)劃方法。
全局路徑規(guī)劃算法的選擇主要是在A*以及Dijkstra[3]兩者之間,它們在ROS平臺上有較完整的封裝,只需要在參數(shù)文件中做出選擇即可實現(xiàn)兩者的切換,兩者都存在一定的利弊,以下是兩種算法的對比介紹:Dijkstra是典型的深度搜索案例,即從出發(fā)點開始向四周擴散,利用代價地圖在所有可能的路徑之中加上各種權(quán)重計算出每條路線的代價從而得出最優(yōu)路徑。而它的優(yōu)點也是它的缺點,此算法計算量很大,因此得出路徑的速度遠遠慢于A*算法。然而筆者認為在機器人的路徑規(guī)劃中并不需要速度非??欤珹*算法雖然計算速度較快,是一種啟發(fā)式算法,將該種方法運用于二維地圖路徑規(guī)劃時,它的指向性非常明顯,規(guī)劃出的路徑不一定是最短路徑,而是最快路徑[4]。然而在A*算法實際應用于路徑規(guī)劃時,當出發(fā)點與目標點之間隔著一面墻經(jīng)常會出現(xiàn)繞遠路的現(xiàn)象并且所規(guī)劃出的路徑鋸齒非常影響車的平穩(wěn)前進。圖2是在仿真平臺中兩種全局路徑規(guī)劃的比較。
從圖2可以看出,在使用A*算法進行路徑規(guī)劃時,在拐角處產(chǎn)生了許多褶皺,并且由于A*算法中有貪婪算法的特性,所得到的并不是最優(yōu)路徑,在圖中“L”型位置處存在嚴重的貼墻現(xiàn)象。
在局部動態(tài)路徑規(guī)劃的選擇上,我們選用了動態(tài)窗口法,通過rqt_reconfigure在不重新啟動仿真的情況下來對參數(shù)值進行修改以便更好地完成局部路徑的動態(tài)避障,并且動態(tài)窗口法符合差速小車的要求,在必要時可以近似于在原地進行較大幅度的轉(zhuǎn)彎。
3? 路徑追蹤
在路徑規(guī)劃好后,研究者可以通過調(diào)節(jié)路徑規(guī)劃器中的參數(shù)調(diào)節(jié)控制機器人的速度。路徑規(guī)劃器在規(guī)劃路徑的同時也會發(fā)送計算出的速度信息,根據(jù)機器人的慣性大小、運動方式的不同,參數(shù)也要跟著改變。在此基礎(chǔ)上,還加入了PID算法與pure pursuit算法[5]進行機器人的運動控制。主要是用PID來控制轉(zhuǎn)向,使得小車的轉(zhuǎn)向更加平滑,小車穩(wěn)定行駛之后其odom坐標系也更加穩(wěn)定了。
總體來說,平臺的創(chuàng)新點在于以前方路徑的斜率大小決定線速度大小,以車身和路徑的角度誤差大小決定角速度大小。另外,加入PID控制器來進行角度控制。
首先要進行前瞻點的選取,即小車需要一個合適的前向距離。前瞻距離較小時,小車行駛的軌跡可以更好地貼合規(guī)劃出的路徑,但是前瞻距離較小的話小車無法很好地感應到前方的轉(zhuǎn)角以便提前進行減速;而前瞻距離較大則會導致小車突然轉(zhuǎn)角過大或者小車完全忽視了路障的存在。在平臺的設(shè)計中,采取了動態(tài)調(diào)整前瞻的方式。將所需的前瞻點以及當時的速度以及計算出的曲率大小一一對應之后進行擬合,最終得到一個公式,將此公式寫入控制器中以達到動態(tài)調(diào)整前瞻點的目的,式中速度越快時前瞻越長,在即將到達彎道處曲率較大會及時衰減前瞻,減小實際速度與規(guī)劃輪速的誤差,降低小車過彎時撞墻的概率。減小其因慣性較大對實時改變速度的影響,以達到對彎道路徑的準確跟蹤。測試表明,動態(tài)改變前瞻點的大小可以很好地對不同的路況進行處理。
在路徑已經(jīng)被規(guī)劃出來之后,結(jié)合小車位姿,找出擬定前瞻達到的路徑點以及距離小車位置最近的路徑點以一個固定的梯度進行斜率的運算,得出最大斜率。當這個斜率大到一個固定值時,立即減小線速度。緊接著計算出車身與路徑的角度誤差,誤差大說明小車即將偏離路線,因此增大角速度。其中存在的一個問題是,這樣規(guī)劃出的速度變化幅度非常大,當打開rqt_plot工具進行查看時速度變化曲線是很尖銳的,在短時間內(nèi)會有很大的起伏。因此,需要進一步采取措施,在線速度方面設(shè)計了一個最大加速度值,若理想速度變化大于這個最大加速度值之后,則先讓速度達到當前速度加上最大加速度值,這樣發(fā)布出的速度變化得更加平緩,實現(xiàn)速度的穩(wěn)定變化;在角速度方面引進了增量式PID控制方法[6],在Proportion(比例)、Integral(積分)、Derivative(微分)這3個方面通過參數(shù)的調(diào)整使變得平滑起來。圖3是關(guān)于PID的流程簡圖。
大多數(shù)的ros小車都是通過訂閱cmd_vel話題得到需要的線速度和角速度,因此我們將希望機器人達到的角速度和線速度發(fā)送給cmd_vel話題,最終達到控制機器人進行自主導航的目的。
4? 結(jié)語
該文利用路徑規(guī)劃算法與路徑追蹤算法設(shè)計了一種基于差速小車的運動控制平臺。不同于傳統(tǒng)的以調(diào)整現(xiàn)有路徑規(guī)劃器參數(shù)的方法,平臺設(shè)計的主要創(chuàng)新點在于利用基于差速小車的pure pursuit算法進行路徑追蹤,引入PID控制算法使得小車在路徑追蹤時轉(zhuǎn)向更加流暢。這種方法也可以應用到各種智能機器人領(lǐng)域,在此基礎(chǔ)上加入消毒、搬運、服務(wù)等不同的因素。在減小了調(diào)參精力的同時也提升了效率。
參考文獻
[1] 呂希濤.移動機器人SLAM與路徑規(guī)劃算法研究[D].青島:山東科技大學,2020.
[2] 陳智康,劉佳,王丹丹,等.改進Dijkstra機器人路徑規(guī)劃算法研究[J].天津職業(yè)技術(shù)師范大學學報,2020,30(3):30-35.
[3] 周睿慜,李輝.改進動態(tài)規(guī)劃算法的移動機器人路徑規(guī)劃[J].計算機工程與應用,2020,56(21):20-24.
[4] 華崴鑒.基于自主導航的移動機器人控制平臺的設(shè)計與實現(xiàn)[D].南京:南京郵電大學,2019.
[5] 段建民,楊晨,石慧.基于Pure Pursuit算法的智能車路徑跟蹤[J].北京工業(yè)大學學報,2016,42(9):1301-1306.
[6] 劉安彬,張江,向勁松.基于PID算法的智能助老小車[J].智庫時代,2020(7):251-252.