人工势场法matlab讲解_【机器人路径规划】人工势场法
閱讀本文需要的基礎知識為:
- 理解機器人的構型空間。建議閱讀:機器人運動規劃中的C space怎樣理解?為什么不直接在笛卡爾坐標系下運算呢?
本文的實現程序與使用說明見我的學習工具箱:小明工坊:【個人開源】機器人運動規劃學習工具箱使用說明
基本原理
1.概述
我們打兩個比方來說明人工勢場法的作用機理。首先,我們把構型空間比作一個電勢場平面,機器人(的當前構型)比作空間中一點。如果讓機器人的起點和障礙物帶正電荷,終點帶負電荷,機器人帶正電荷。由于同性電荷相斥,異性電荷相吸的原理,機器人將會在電場力的作用下沿著某條路徑向終點移動 ,并避開帶正電荷的障礙物,如圖1所示。
圖 1 電勢場類似的,我們也可以把構型空間比作一個有起伏地形的區域。其中,起點和障礙物位于較高的區域,終點位于較低的區域,機器人視作一個球體。那么在重力的作用下,機器人將沿著某條軌跡從較高的起點滑落到較低的終點,并避開較高的障礙物。如圖2[2]所示。
圖 2 重力勢場 (圖片來源于參考文獻[2])以上的兩個例子其實就是電勢場與重力勢場的作用機制,電勢場和重力勢場都是自然勢場。而人工勢場法就是在已知起點、終點和障礙物位置的情況下,構建一個人工勢場來模仿這種作用機制。人工勢場法的優點在于,它其實是一種反饋控制策略,對控制和傳感誤差有一定的魯棒性;缺點在于存在局部極小值問題,因此不能保證一定能找到問題的解。
2.引力勢場和斥力勢場(Additive Attractive/Repulsive Potential)
我們利用勢函數
來建立人工勢場。勢(場)函數是一種可微函數,空間中某點處勢函數值的大小,代表了該點的勢場強度。最簡單的勢函數是引力/斥力勢函數。其作用思路很簡單:讓目標對機器人產生吸引力,障礙物對機器人產生排斥力。某點 處的勢函數 表達為引力勢和斥力勢之和:其中,最常見的引力勢函數表達式如下:
——引力增益 ——當前點 到目標點 之間的距離最常見的斥力勢函數表達式如下:
——點 與其最近障礙物的距離 ——斥力增益 ——障礙物的作用距離閾值,大于此距離的障礙物不會產生斥力影響當然,以上引力和斥力勢函數的設計在某些情況下會產生問題,因此也有許多改進方法,這個我們以后再說。
3.梯度下降法(Gradient Descent)
如果把某點
處的勢函數的取值 看作該點的能量大小,那么梯度 則可以看作該點的力向量,其定義為:可以看出,某點處梯度的方向即為勢函數增長最快的方向。
而梯度下降法,就是讓機器人從初始點開始,不停地沿著梯度的反方向行走,直到梯度為0。用偽代碼表示如下:
輸入:一種計算q點處梯度的方法?U (q) 輸出:一組軌跡序列{q(0), q(1), ..., q(i)} q(0) = q_start i = 0 while ?U (q(i)) ≠ 0 doq(i + 1) = q(i) + α(i)?U (q(i))i = i + 1 end while其中步長 α 的選擇比較重要,如果太小,計算速度會變慢;太大,機器人可能會“跨進”障礙物中。
實現方法
下面以運動規劃學習工具箱中的人工勢場方法 pf_planning() 為例,說明人工勢場法的實現步驟:
1.預處理
首先讀入包含障礙物的構型空間的bmp圖像,為了便于碰撞檢測,將其二值化。并讀入引力增益、斥力增益、障礙物作用范圍、最大搜索次數等參數。
## 預處理 原圖像二值化圖像2.創建勢場圖
對于每一個像素點,按照前文所述勢場函數建立勢場圖
## 創建勢場圖3.梯度下降法
在已經建立好的勢場圖中,按照前文所述的方法執行梯度下降法:
point_current4.繪圖
在給出的示例圖中分別執行人工勢場法,得到結果如下:
問題與改進說明
本文僅僅演示了最簡單的人工勢場法的實現。要想在實際問題中進行應用,人工勢場法往往會面臨一些問題,需要進行相應的改進,下面對常見問題及其解決方法進行簡要說明:
引力勢函數的改進:現有引力勢函數的取值,與
成正比。在這樣的設計中,如果當前點與目標點的距離太遠,會形成很大的引力勢,使得機器人的運動速度過快。對此,我們可以采用分段的引力勢函數解決問題,即在距離較遠時降低 的冪。斥力勢函數的改進:現有斥力勢函數的取值,取決于當前點與最近障礙物的距離。在這樣的設計中,如果當前點與兩個障礙物等距,可能會造成機器人在障礙物間的中線上來回跳動。對此,我們可以重新定義斥力勢函數為當前點與最近的障礙物點之間的距離。即不考慮障礙物本身的坐標位置,只要障礙物上的某點離當前點最近,就以此距離定義斥力勢函數。
距離的計算:一般來說,我們用直線距離來度量兩點間的距離。但對于像素圖或網格圖,如何快速且合理地計算出兩個像素點或網格之間的距離呢?參考文獻[1]給出了一種 Brushfire算法 以供使用。
局部極小值問題:如圖所示,人工勢場法有時候會遇到局部極小值問題。在局部極小值點,雖然梯度為零,但并不是我們想要的終點。對這樣的情況,我們一般引入抽樣規劃的思想,在局部最小值處加入一個擾動(隨機行走)或回溯,以期跳出局部極小值。也可采用一種名為波前規劃(wave-front plann)的方法,通過引入時間參數來消除局部最小值的問題。
人工勢場法陷入局部極小值參考文獻
[1] Choset H, Lynch K, Hutchinson S, et al. Principles of robot motion: Theory, algorithms, and implementations. MIT Press, Cambridge, MA[J]. Proceedings of the Society for Experimental Biology & Medicine Society for Experimental Biology & Medicine, 2005, 147(1):512-512.
[2] 人工勢場法(Artificial Potential Field Method)的學習
總結
以上是生活随笔為你收集整理的人工势场法matlab讲解_【机器人路径规划】人工势场法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哲理故事300篇 下
- 下一篇: CentOS7 部署黑客帝国代码雨