資源簡介
在論壇上搜了一些matlab人工勢場法程序,但很多都有一些問題,比如目標不可達,角度計算錯誤等等。在這些的基礎上,我進行了改進,使得能夠更好地到達目標點,減少了震蕩,但是依舊會出現幾次震蕩,愿高手繼續完善。程序可以用C寫出來,做機器人路徑規劃或者避障的同學,該文檔有很高的參考性。
代碼片段和文件信息
clear?all;
%障礙和目標,起始位置都已知的路徑規劃意圖實現從起點可以規劃出丿?避開障礙到達目標的路徿
%****************初始化參數*********************************
%APF系數
k=15;%引力系數
m=5;%斥力系數
Po=1;%斥力影響距離
S=0.5;%障礙物安全距離
%起點位置和障礙位罿
%一般情況:受m和Po的影響
Xo=[0?0];%起點位置
Xsum=[10?10;1?2;3?5;4?4.5;3?6;6?2;5.5?5.5;8?8.5];%這個向量n+1)*2維,其中[10?10]是目標位置,剩下的都是障礙的位置?
%局部最小:停滯
%?Xo=[5?0];
%?Xsum=[5?10;2?5;3?5;4?5;5?5;6?5;7?5;8?5]
%障礙靠近目標:震蕩,目標不可達
%?Xo=[0?0];
%?Xsum=[10?10;8.7?9.2]
n=size(Xsum1)-1;%障礙個數
%其他系數
J=1000;%循環迭代次數
K=0;%用來記錄迭代次數
a=0.5;%斥力計算中的一個系數
l=0.1;%步長
pathLength=0;
D=0.005;%結果的精確度
%無人艇位置初始化
Xj=Xo;%j=1循環初始,將車的起始坐標賦給Xj
traj_obs=Xsum(2:);
%環境繪圖
plot(Xsum(2:n+11)Xsum(2:n+12)‘.‘Xsum(11)Xsum(12)‘v‘Xo(1)Xo(2)‘ms‘);
for?i=2:(n+1)
????????circle(Xsum(i1)Xsum(i2)S‘‘);
end
axis([0?11?0?11]);
- 上一篇:PMSMmatlab開環仿真程序
- 下一篇:ED視頻資源
評論
共有 條評論