路径规划-人工势场法(Artifical Potential Field)
人工勢場法是局部路徑規(guī)劃的一種比較常用的方法。這種方法假設機器人在一種虛擬力場下運動。
一、簡介
如圖所示,機器人在一個二維環(huán)境下運動,圖中指出了機器人,障礙和目標之間的相對位置。?
這個圖比較清晰的說明了人工勢場法的作用,物體的初始點在一個較高的“山頭”上,要到達的目標點在“山腳”下,這就形成了一種勢場,物體在這種勢的引導下,避開障礙物,到達目標點。
人工勢場包括引力場合斥力場,其中目標點對物體產(chǎn)生引力,引導物體朝向其運動(這一點有點類似于A*算法中的啟發(fā)函數(shù)h)。障礙物對物體產(chǎn)生斥力,避免物體與之發(fā)生碰撞。物體在路徑上每一點所受的合力等于這一點所有斥力和引力的和。這里的關(guān)鍵是如何構(gòu)建引力場和斥力場。下面我們分別討論一下:
引力場:
常用的引力函數(shù):
這里的ε是尺度因子.ρ(q,q_goal)表示物體當前狀態(tài)與目標的距離。引力場有了,那么引力就是引力場對距離的導數(shù)(類比物理里面W=FX):
關(guān)于梯度的算法可以參考相關(guān)資料,簡單提一下,二元函數(shù)梯度是醬紫的[δx,δy],這個符號是偏導數(shù),不太對,見諒。
?Fig .引力場模型
斥力場:
公式(3)是傳統(tǒng)的斥力場公式,現(xiàn)在還沒有搞清楚是怎么推導出來的。公式中η是斥力尺度因子,ρ(q,q_obs)代表物體和障礙物之間的距離。ρ_0代表每個障礙物的影響半徑。換言之,離開一定的距離,障礙物就對物體沒有斥力影響。
斥力就是斥力場的梯度
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Fig 斥力場模型
總的場就是斥力場合引力場的疊加,也就是U=U_att+U_rep,總的力也是對對應的分力的疊加,如下圖所示:
二、存在的問題
(a) 當物體離目標點比較遠時,引力將變的特別大,相對較小的斥力在甚至可以忽略的情況下,物體路徑上可能會碰到障礙物 (b)當目標點附近有障礙物時,斥力將非常大,引力相對較小,物體很難到達目標點 (c)在某個點,引力和斥力剛好大小相等,方向想反,則物體容易陷入局部最優(yōu)解或震蕩三、各種改進版本的人工勢場法
(a)對于可能會碰到障礙物的問題,可以通過修正引力函數(shù)來解決,避免由于離目標點太遠導致引力過大 ? ? ?和(1)式相比,(5)式增加了范圍限定。d*_goal 給定了一個閾值限定了目標和物體之間的距離。對應的梯度也就是引力相應變成:
(b)目標點附近有障礙物導致目標不可達的問題,引入一種新的斥力函數(shù)
這里在原有斥力場的基礎上,加上了目標和物體距離的影響,(n是正數(shù),我看到有篇文獻上n=2)。直觀上來說,物體靠近目標時,雖然斥力場要增大,但是距離在減少,所以在一定程度上可以起到對斥力場的拖拽作用 相應斥力變成:
所以可以看到這里引力分為兩個部分,編程時要格外注意 (c)局部最優(yōu)問題是一個人工勢場法的一個大問題,這里可以通過加一個隨機擾動,讓物體跳出局部最優(yōu)值。類似于梯度下降法局部最優(yōu)值的解決方案。
四、代碼整理
網(wǎng)上matlab 寫的代碼良莠不齊,bug很多,正在驗證,通過了會貼上來。 綜合了網(wǎng)上的各種代碼,發(fā)現(xiàn)基本都是出自一個人的matlab code,然后改成自己的。但是最開始哪個版本的code應該是有很多的錯誤,尤其集中在計算角度和斥力的子函數(shù)上,經(jīng)過很多人的修改,這個代碼已經(jīng)改的相對比較完善了,整理了一下,具體實現(xiàn)可以參考:改進版maltab 程序 國外的一款友好的matlab人工勢場法程序(附詳細說明文檔)資料鏈接
路徑規(guī)劃算法初探http://blog.csdn.net/u011978022/article/details/49912515
關(guān)于人工勢場方法的研http://kovan.ceng.metu.edu.tr/~kadir/academia/courses/grad/cs548/hmws/hw2/report/apf.pdf
人工勢場方法整理http://letsmakerobots.com/artificial-potential-field-approach-and-its-problems
人工勢場方法的改進版本http://www.doc88.com/p-738493052458.html
人工勢場方法論壇版 http://www.ilovematlab.cn/thread-188840-1-1.html
人工勢場法matlab 程序末點震蕩版:http://download.csdn.net/detail/programming2015/8589191#comment
人工勢場法簡介PPThttp://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf
人工勢場法matlab程序改進成功版本:http://www.ilovematlab.cn/thread-93531-1-1.html
總結(jié)
以上是生活随笔為你收集整理的路径规划-人工势场法(Artifical Potential Field)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: comsol和java_COMSOL j
- 下一篇: Bat 数字雨