周蘭蘭
摘要:機器人越來越受到廣泛應用,而機器人巡檢、執(zhí)行配送等都不可或缺的需要移動機器人自主實現多目標導航規(guī)劃。首先建立其運動學和動力學模型;在建模的基礎上,分析A*算法并將其應用于導航任務中;針對多目標點導航,研究ROS系統(tǒng)中自主導航平臺,搭建多目標點導航平臺,并在平臺上完成多目標點自主導航任務。實驗表明,程序給定多個導航目標點時,通過A*算法能夠實現多目標導航規(guī)劃,為移動機器人進行多目標點導航提供了可行性方案。
關鍵詞:移動機器人;多目標點;A*算法
中圖分類號: TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)21-0176-02
開放科學(資源服務)標識碼(OSID):
Abstract: Robot is more and more widely application, the inspection robot, execution, delivery are indispensable to mobile robot autonomous navigation realize multi-objective planning. Firstly, the kinematics and dynamics models are established. On the basis of modeling, A* algorithm is analyzed and applied to navigation tasks. Aiming at multi-target point navigation, the autonomous navigation platform in ROS system is studied to build a multi-target point navigation platform and complete multi-target point autonomous navigation tasks on the platform. The experiment shows that when the program is given multiple navigation target points, the multi-objective navigation planning can be realized through A* algorithm, which provides A feasible scheme for mobile robot to conduct multi-objective navigation.
Key words: mobile robot;mutil-targets;A* algorithm.
近幾年,隨著計算機技術的快速發(fā)展,移動機器人在諸多生活領域發(fā)揮著越來越重要的作用,特別是在航空航天、工業(yè)、災難救援等方面。隨著硬件技術和機器人平臺的復雜化,為了提高軟件代碼的復用性和模塊化需求,斯坦福大學人工智能實驗室與機器人技術公司Willow Garage于2007年在合作的個人機器人項目中產生了ROS(Robot Operating System)[1]。ROS被設計為分布式框架,集成了大量的工具、庫、協(xié)議,提供了硬件抽象、底層驅動、消息傳遞、程序管理和機制幫助用戶完成機器人應用的建立、編寫和多機集成[2]。
ROS中功能模塊都封裝獨立的功能包,便于進行共享和分發(fā)。ROS功能包主要包含gmapping、cartographer、導航功能包等。其中,路徑規(guī)劃技術是機器人自主導航的核心技術,受到了國內外學者的廣泛關注。機器人路徑規(guī)劃主要是指機器人能夠在靜態(tài)環(huán)境或動態(tài)環(huán)境均能規(guī)劃出一條最優(yōu)的抵達目標點的無碰撞路徑[3];它主要包括環(huán)境信息已知的全局規(guī)劃和信息未知的局部路徑規(guī)劃。常見的局部路徑規(guī)劃主要包括人工勢場法、動態(tài)窗口法等。全局路徑規(guī)劃方法包括可視圖法、拓撲圖法、A*等方法。針對多目標導航,本文建立四輪全向移動機器人模型,并在搭建的ROS的平臺上完成基于A*的多目標點導航任務。實驗結果證明,基于ROS的多目標導航平臺能夠完成從起始點依次到達設定的各個目標點任務。
1全向移動機器人模型
1.1? 運動學模型
在建立移動機器人運動學模型時,假設機器人滿足如下條件:
(1) 機器人自身參數通常不會改變,如車輪半徑、輪間距等;
(2) 機器人在水平地面上運動且不會與地面發(fā)生嚴重的摩擦;
(3) 機器人僅在運動方向上滾動且不會發(fā)生側滑現象。
圖1所示為四輪全向移動機器人的運動學關系圖。機器人導航中存在三大坐標系:世界坐標系、傳感器坐標系及機器人坐標系,圖中,XwOYw表示機器人世界坐標系,xroyr表示機器人自身的坐標系,[w1]、[w2]、[w3]、[w4]分別表示機器人的四個車輪。
圖中,[θ]為機器人的前進方向,[ω]為機器人的角速度,[v1]、[v2]、[v3]、[v4]分別為[w1]、[w2]、[w3]、[w4]車輪的線速度,[δ1]、[δ2]、[δ3]、[δ4]分別為四個車輪與機器人坐標系中X軸的夾角,且[δ=δ1=δ2=δ3=δ4],四個車輪到車體中心距離相等, [L]為全向輪到機器人車體中心的距離。
通過分析圖1的幾何關系可知,機器人四個車輪的線速度與車體質心速度間的關系,即其運動學方程為[4]:
式中,令[q=(xw,yw,θw)T],[q]為世界坐標系下的機器人的位姿,[v=(v1,v2,v3,v4)T]為四輪全向移動機器人的車輪線速度,轉換矩陣為
假設[S(q)=J-1(θ)],則機器人運動學模型簡化如下:
1.2 動力學模型
將圖1中四個車輪線速度[v1]、[v2]、[v3]、[v4]分別替換為四個車輪所受的力[f1]、[f2]、[f3]、[f4]形成四輪全向移動機器人動力學示意圖。假設機器人總質量為[m],[I]為移動機器人繞底座中心旋轉的轉動慣量,而機器人所受摩擦等其他干擾條件不被考慮,分析圖1中的受力情況可知,四輪全向移動機器人的加速度與各力的關系為:
2 A*算法
A*算法是一種啟發(fā)式搜索算法,會評估在狀態(tài)空間中對當前點附近的每個搜索位置,得到最佳位置,在依次搜索直至目標[6]。A*算法的基本思想是:引入當前節(jié)點n的代價函數[f(n)],其定義為:
其中,[g(n)]、[h(n)]分別為在狀態(tài)空間中從起點到節(jié)點n的真實值、節(jié)點n到目標點的最佳路徑的估值,[h(n)]通常為節(jié)點n到目標點間的歐幾里得距離或曼哈頓距離來估計。本文中的[h(n)]是當前節(jié)點[(xn,yn)]與目標節(jié)點[(xG,yG)]間的歐幾里得距離:
在柵格地圖中應用A*算法路徑規(guī)劃時,移動機器人根據車體大小被視為地圖中與單個柵格尺寸匹配的質點。
3 實驗平臺
在基于Ubuntu Kinetic的系統(tǒng)下安裝ROS。ROS系統(tǒng)自主導航主要包有三個功能包:gmapping、amcl和move_base包[6]。Gammping包會根據激光雷達獲取環(huán)境信息結合里程計數據完成基于概率的二維柵格地圖的創(chuàng)建;amcl包會根據已知的環(huán)境地圖信息自主定位與導航;move_base包會根據激光獲取的環(huán)境信息和機器人自身的運動信息來規(guī)劃機器人的下一步運動軌跡,最終完成抵達目標位置的任務。本文假定環(huán)境信息是已知的,因此主要用到amcl包和move_base包。
在移動機器人的自主導航中,tf包用于轉換三個坐標系信息。在導航中,將激光獲取的信息和里程計數據通過tf轉換傳輸到move_base包,然后結合柵格地圖信息依據目標點將經過move_base包處理后形成的速度和角速度信息驅動機器人運動。
針對多目標點導航,需要在一次導航完成后,將下一個目標點的信息自動發(fā)布到move_base包中。目標點位姿包括位置信息和航向四元數,位置信息為目標點坐標值,航向四元數為該點后機器人朝向信息。每到達一個目標點,會顯示“RESULT SUCCEED”,然后機器人接收到下一目標點后開始下一次導航。
4 仿真實驗
實驗中機器人車體長寬高分別為0.25m,0.16m,0.05m,車輪半徑為0.025m,車輪寬度為0.02m。整個機器人由四個全向輪支撐,可以使機器人在原地360°旋轉。地圖長為31.2米,寬為23米,移動機器人起始點為(-5.0,-4.0,0),導航目標點共四個,位置信息分別為(10.155,11.605)、(11.881,14.532)、(16.761,15.211)、(18.470,11.730)。在move_base.launch文件中配置移動機器人、激光雷達等相關參數,并在終端通過命令roslaunch simulation_launch move_base.launch打開rviz可視化窗口,為后續(xù)多目標點導航做準備。重新打開終端,由 rosrun mutil_navigation_goals mutil_navigation_goal發(fā)布多個目標點到導航系統(tǒng),然后機器人便可以根據程序給出的目標點開始自主導航。
機器人導航中rviz界面顯示的導航過程如圖2所示。(a)(b)分別為移動機器人基于A*算法對第一個目標點、第四點的路徑規(guī)劃圖。
5 結論
本文針對多目標導航,分析并建立了四輪全向移動機器人運動學、動力學模型;搭建了基于ROS的多目標導航仿真平臺,將A*算法應用于多目標自主導航中。為了實現多目標點自主導航,將多個目標點信息寫入單獨的ROS的程序包中,在導航規(guī)劃開始之前,發(fā)布多目標信息到導航平臺中,依次進行導航規(guī)劃任務。仿真實驗結果表明,在發(fā)布多個目標點信息之后,移動機器人能夠利用A*算法依次成功到達程序設定的所有目標點。實驗驗證了A*算法在ROS平臺上進行多目標導航規(guī)劃的可行性。
參考文獻:
[1] 胡春旭.ROS機器人開發(fā)實踐[M].北京:機械工業(yè)出版社,2018.
[2] 高民東,張雅妮,朱凌云.基于ROS的機器人室內巡檢技術仿真[J].重慶理工大學學報(自然科學),2018(7).
[3] 王殿君.基于改進A*算法的室內移動機器人路徑規(guī)劃[J].清華大學學報(自然科學版), 2012(8):1085-1089.
[4] 王國勝,夏凡,呂強,等.基于動力學與運動學的四輪全向移動機器人軌跡跟蹤控制[J].裝甲兵工程學院學報,2015(1):54-59.
[5] 周晶,曹國華,翟娟.基于A*算法的智能輪椅的路徑規(guī)劃[J].電子技術, 2014(4).
[6] 吳夢珂,任工昌,劉朋.基于ROS的移動機器人多目標點導航的實現[J].電子技術,2018,47(7):28,32-35.
【通聯編輯:唐一東】