国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

這篇具有很好參考價值的文章主要介紹了路徑規(guī)劃算法3 改進的人工勢場法(Matlab)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

傳統(tǒng)人工勢場

引力勢場

斥力勢場

?合力勢場

?傳統(tǒng)人工勢場法存在的問題

?改進的人工勢場函數(shù)

?Matlab代碼實現(xiàn)


參考鏈接:

[1]朱偉達. 基于改進型人工勢場法的車輛避障路徑規(guī)劃研究[D]. 江蘇大學, 2017.

1986年Khatib首先提出人工勢場法,并將其應(yīng)用在機器人避障領(lǐng)域。該方法的基本思想是在障礙物周圍構(gòu)建障礙物斥力勢場,在目標點周圍構(gòu)建引力勢場,類似于物理學中的電磁場。被控對象在這兩種勢場組成的復合場中受到斥力作用和引力作用,斥力和引力的合力指引著被控對象的運動,搜索無碰的避障路徑。

這種方法結(jié)構(gòu)簡單,便于低層的實時控制,在實時避障和平滑的軌跡控制方面,得到了廣泛應(yīng)用,其不足在于存在局部最優(yōu)解,目標不可達、與障礙物碰撞等現(xiàn)象。

傳統(tǒng)人工勢場

引力勢場

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

斥力勢場

決定障礙物斥力勢場的因素是汽車與障礙物間的距離,當汽車未進入障礙物的影響范圍時,其受到的勢能值為零;在汽車進入障礙物的影響范圍后,兩者之間的距離越大,汽車受到的勢能值就越小,距離越小,汽車受到的勢能值就越大。
路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

?合力勢場

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

? +?=?

?傳統(tǒng)人工勢場法存在的問題

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

?改進的人工勢場函數(shù)

?路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

?Matlab代碼實現(xiàn)

main主函數(shù)

%main主函數(shù)
%created by MW
%date: 2023/2/28
%func: Artificial Potential Field(APF) avoiding obstacle
 
clc;
clear;
 
%% 創(chuàng)建并繪制障礙物
obstacle = [2 5;
            3 8;
            7 9;
            4 2;
            6 6;
            9 3];
figure(1);
scatter(obstacle(:,1),obstacle(:,2),'r')
axis equal;

%% 創(chuàng)建并繪制初始位置和目標位置
start = [0 0];
goal = [10 10];
hold on;
scatter(start(1),start(2),'filled','g');
scatter(goal(1),goal(2),'filled','g');
 
%% 圖片標注
text(start(1),start(2),'起點');
text(goal(1),goal(2),'終點');
grid on;
axis equal;
axis([0 10 0 10]);
xlabel('x');
ylabel('y');
title('人工勢場法生成避障路徑')

%% 生成并繪制避障路徑
path = APF2D(start, goal, obstacle);
hold on;
plot(path(:,1), path(:,2),'LineWidth',1,'Color','b');

人工勢場法主函數(shù):

function path = APF2D(start,goal,obstacle)
% Artificial Potential Field(APF)avoiding obstacle path
%%APF參數(shù)初始化
%如果不能實現(xiàn)預期目標,可能也與初始的增益系數(shù),Po設(shè)置的不合適有關(guān)。
att = 35;%引力增益系數(shù)
req = 10;%斥力增益系數(shù)
p0 = 5;%障礙物產(chǎn)生影響的最大距離,當障礙與移動目標之間距離大于Po時,斥力為0。
step = 2;%步長
maxIter = 200;%最大循環(huán)迭代次數(shù)
n = length(obstacle(:,1));%障礙物個數(shù)

path = start;%路徑初始化
newNode = start;
for i = 1:maxIter
    %% 引力計算
    V_att = goal - newNode;%路徑點到目標點的向量
    r_att = sqrt(V_att(1)^2 + V_att(2)^2);%路徑點到目標點的歐氏距離
    P_att = att * V_att;%引力
    
    %% 斥力計算
    %改進的人工勢場法,將斥力分散一部分到引力方向。通過添加隨機擾動r_att^n實現(xiàn),r_att為路徑點到目標點的歐氏距離,本文n取2。
    V_req = zeros(n,2);
    for j =1:n
        V_req(j,:) = [obstacle(j,1) - newNode(1), obstacle(j,2) - newNode(2)];%路徑點到各個障礙物的向量
        r_req(j) = sqrt(V_req(j,1)* V_req(j,1) + V_req(j,2)* V_req(j,2));%路徑點到各個障礙物的歐氏距離
    end   
    P_req = 0;
    for k = 1:n
        if r_req(k) <= p0
            P_req1 = req * (1 / r_req(k) - 1 / p0) * r_att^2 / r_req(k)^2;%斥力分量1:障礙物指向路徑點的斥力
            P_req2 = req * (1 / r_req(k) - 1 / p0)^2 * r_att;%斥力分量2:路徑點指向目標點的分引力
            P_reqk = P_req1 / r_req(k) * V_req(k,:) + P_req2 / r_att * V_att;%合力分散到x,y方向
            P_req = P_req + P_reqk;%斥力
        end     
    end
    %% 合力計算
    P = P_att + P_req;
    newNode = newNode + step * P / norm(P);
    path = [path; newNode];   
end

end

結(jié)果:

路徑規(guī)劃算法3 改進的人工勢場法(Matlab)

需要注意的是,引力、斥力增益、步長的選擇都會影響到結(jié)果,可以進行適當調(diào)整。

特別地,人工勢場法容易陷入局部最小值,即使是加入了調(diào)節(jié)因子進行改進,在某些情況下仍然無法避免。?文章來源地址http://www.zghlxwxcb.cn/news/detail-509656.html

到了這里,關(guān)于路徑規(guī)劃算法3 改進的人工勢場法(Matlab)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包