機器人學 —— 軌跡規划(Introduction)


  軌跡規划屬於機器人學中的上層問題,其主要目標是計划機器人從A移動到B並避開所有障礙的路線。

1、軌跡計划的對象

  軌跡規划的對象是map,機器人通過SLAM獲得地map后,則可在地圖中選定任意兩點進行軌跡規划。暫時不考慮三維地圖,以平面二維圖為例,map主要有以下幾種:

  

 

  如上所示,二維圖可以分為有權重的節點圖以及無權重的網格圖。以飛行機器人移動為例:如果場地上每個部分移動所消耗的能量都是等價的,則可以使用網格圖進行建模。如果在不同的區域移動所消耗的能量不同,則應該使用節點圖來進行建模。

2、軌跡規划的方法

2.1、 grassfire method

  grassfire method是一種最簡單的軌跡規划算法。其數據結構包括三個部分:

  1.map,記錄了起點,終點,障礙物的位置

  2.distancetoStart,記錄了每個探索步驟后,方格與初始點的距離

  3.parent,記錄了每個節點的父節點

  算法步驟:

  1、獲取map

  2、初始化distancetostart,將起點設為current, 將distance_ 設為0

  3、進入循環  如果current = destination 則跳出循環

    將distancetostart中最小值對應的節點設為current

    distance_ = distance_+1

    尋找current所有的相鄰節點

    將相鄰節點的distancetostart設為distance_,parent設為current

    將current的distance_設為無窮大

  4、依據parent map反求軌跡

        

  顯然,這種grassfire算法是極其消耗計算能力的,因為其需要遍歷網格中幾乎每一個格子,甚至明明destination在上方,grassfire算法依舊需要向下探索。圖中紅色的區域代表已探索的點,藍色是candidate,綠色是起點,黃色是終點。顯然這個算法是各向同性的。

2.2、A* 算法

  grassfire算法的最大缺點是沒有使用終點與起點相對位置關系信息。從而導致各項同性的探索策略。如果能增加一個將candidate拉向目標點的趨勢,則可以減小被探索的點數目。

  A* 算法的數據結構包括五個部分:

  1、map

    2、g:相當於distancetostart;

  3、H:一種衡量算子,用於衡量當前點到目標點的絕對距離

  4、f:g+H,綜合了當前點到起點的距離與到終點的距離

  5、parent,用於記錄軌跡

  算法步驟:

  1、初始化,獲取map,並將起點設為current. 獲取H map,distance_ = 0

  2、進入循環   如果current為destination則退出循環

    distance_ = distance_ +1;

    獲取當前點的相鄰點

    將相鄰點的g map值設為distance_

    將相鄰點的f  map值設為g+H

    選擇f map值最小的點為current

    將current f map值設為無窮大

  3、根據parent map, 反求軌跡

 

  

  結果如上所示。

  顯然,由於引入了H map,所以算法會優先探索相對終點較近的點。obj = distance to start + distance to end 代表了最后需要走過的距離。每次都選擇最小的obj,並且最后能夠達到終點,那么總路程一定是全局最小的。

3、總結

  對於飛行機器人而言,每次移動都會消耗大量的能量。好的軌跡規划算法可以保證飛行器少走彎路,避開障礙。所以減少計算量必須是在少走彎路的前提下。移動所消耗的能量是計算所消耗能量的十倍左右。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM