1、A*算法簡介
A*算法是一種啟發式搜索算法,具有搜索效率高、規划速度快和克服了搜索過程中形成的早熟現象等特點,廣泛應用於最優路徑的求解。A*算法搜索原理主要是從起始柵格點開始搜索與起始點周圍的子柵格點,每次從周圍的子柵格點中選擇一個評價函數最低的點作下一個的搜索節點,即稱為當前節點。再次生成與當前節點相鄰的子柵格點,並重新搜索評價函數最低的點作新的當前節點,依次搜索,直到當前節點為目的地的位置。
2、地圖環境構建
構建地圖環境是路徑規划的前提,為路徑規划提供搜索環境。二維圖形化構建地圖是將移動機器人所處的實際環境進行抽象化表示成二維地形,簡化移動機器人的運行空間。本節介紹了地圖建模的幾種算法,分析了各自的優缺點;選擇采用柵格法進行了地圖環境建模。
2.1 構建地圖方法
常見的圖形算法主要有以下幾種:柵格法,拓撲法,自由空間法和可視法。柵格法根據特定分辨率將外部環境離散為相同大小的網格。每個柵格由狀態表示,即占用狀態和空閑狀態,指示柵格位置是否是障礙物。路徑規划算法占用一個柵格,並通過搜索自由柵格並避開障礙物來規划由多個柵格組成的路徑。拓撲方法將機器人的工作環境圖規划成幾個小空間,並通過小空間之間的連接線建立拓撲網絡結構,路徑規划算法搜索拓撲網絡以規划由拓撲連接線組成的路徑。自由空間法將實際環境規划成兩個區域,即可移動區域和不可移動障礙區域。組合連接可移動區域中每個線段的中點形成地圖模型,移動機器人在其中進行路徑規划。視覺方法將初始位置,障礙的各個轉折點和目的地兩兩相連,組成多線段路徑結構。通過路徑規划算法,可以在這些線段上規划從起始位置到目的地的完整路徑。每種算法的優缺點如表2.1所示。
2.3.2 柵格法構建地圖模型
(1)確定障礙柵格
柵格法用於構建地圖,單元柵格數目由柵格分辨率與實際環境的面積決定,柵格分辨率表示每個柵格與實際環境尺寸的比例,控制柵格地圖存儲實際地圖的模糊度。在一個環境地圖模型中,障礙物的形狀表示的越准確,柵格數目就越多,則搜索時間變長,導致路徑規划搜索速度降低;若降低柵格數目,所需的存儲空間就減少,則描述障礙物的形狀越模糊。
在柵格地圖中規划時,障礙柵格由環境中的障礙物和移動機器人尺寸共同決定,將移動機器人的底座重心視為質點,設底座的外接圓半徑為R,幾種常見的機器人形狀(如圓形、矩形及多邊形)的外接圓如圖2.4所示。
圖2.4 機器人底座外接圓示意圖
柵格地圖法是把實際地圖大小用柵格表示,由多個柵格單元表示出地圖上的二維信息。該方格內沒有障礙物時,表示為移動機器人可移動的區域,賦值柵格為0;該方格內有障礙物時,表示為移動機器人不可移動的區域,賦值柵格為1。算法通過搜索可移動的區域避開障礙柵格規划一條路徑。
(2)障礙物擴大化處理
為實現無碰撞路徑規划,需要將障礙物進行擴大化處理。即將實際環境中的障礙物以機器人底座外接圓半徑的值R為寬度,增加其周圍一圈的障礙范圍。例如,激光雷達測得某環境信息,中障礙物膨脹化處理如圖2.5(a)所示;處理后的障礙物所占據的柵格表示為障礙物的位置信息,單元柵格無論是否被全部占滿,都作占據柵格處理,處理后的環境信息如圖2.5(b)所示。
圖2.5 柵格法地圖建模
(3)二維地圖模型表示
設機器人工作區域為,單元柵格邊長為;則二維建模地圖大小為,如式(2-4)。
其中,表示進一取整,每個柵格由對應的坐標表示,並設置不同的值(1或0),當該柵格內有障礙物時賦值為1,並用黑色表示;無障礙物時賦值為0,並用白色表示。路徑規划時,只需遍歷值為0的柵格。
以圖2.5柵格建圖模型為例,柵格數組如圖2.6所示。
圖2.6 柵格坐標表示圖
3.1 基於A*算法的路徑規划原理分析
A*算法是一種啟發式搜索算法,具有搜索效率高、規划速度快和克服了搜索過程中形成的早熟現象等特點,廣泛應用於最優路徑的求解。A*算法搜索原理主要是從起始柵格點開始搜索與起始點周圍的子柵格點,每次從周圍的子柵格點中選擇一個評價函數最低的點作下一個的搜索節點,即稱為當前節點。再次生成與當前節點相鄰的子柵格點,並重新搜索評價函數最低的點作新的當前節點,依次搜索,直到當前節點為目的地的位置。
A*算法中定義了兩個列表存儲與搜索路徑相關的柵格節點,分別為OPEN存儲表與CLOSE存儲表。OPEN表存放所有可到達的訪問節點,即路徑節點的搜索空間。CLOSE表中存放每次計算評價函數最小的子節點。評價函數影響當前節點的產生次數,而每次更新當前節點都要將OPEN表訪問一遍。評價函數影響搜索空間的規模,搜索空間的大小和訪問的次數影響着A*算法的速度。因此,A*算法的評價函數直接影響了路徑規划的結果和搜索的效率。