#自己用动态窗口法写了一个算法,和长机-僚机法结合起来
动态窗口法的原理大致是在速度与加速度约束内,遍历选择所有可能的速度来进行预测未来秒的航迹,通过自己设置的航迹评价函数,例如与目标点距离,与障碍物距离,速度等多方面进行最优选择。
function [ ] = formation_6 ()
close all; % 4follower and 1 leader
countmax=2000;
% stop_goal=[100 100];
stop_goal=[40 40];
%% 初始化 位置pose、速度V、加速度控制量control
% start=[-8*2.5 -4*2.5 0 0 0;%%%[x y th]
% -11*2.5 -2*2.5 0 0 0;
% -7*2.5 -7*2.5 0 0 0;
% -7*2.5 -4*2.5 0 0 0;
% -3*1.5 -2*1.5 0 0 0];
% obstacle=[ 20 -20*rand(1);
% 60 100*rand(1);
% 120 50*rand(1);
% 250 50;
% 150 100
% 200 200
% 175 175];
obstacleR=0.5;% 冲突判定用的障碍物半径
%% 初始化 位置pose、速度V、加速度控制量control
% start=[-7 -4 0 0 0;%%%[x y th]
% -6 -2 0 0 0;
% -10 -3 0 0 0;
% -6 -4 0 0 0;
% -3 -2 0 0 0];
start=[3 1 0 0 0;%%%[x y th]
0.5 0.5 0 0 0;
1 1 0 0 0;
0 1 0 0 0;
5 5 0 0 0];
if ~isempty(traj5)
for it=1:length(traj5(:,1))/5
ind=1+(it-1)*5;
plot(traj5(ind,:),traj5(ind+1,:),'-g');
end
end%画探索轨迹
if norm(x5(1:2)-stop_goal')<0.5
disp('Arrive Goal!!');
end
grid on;
drawnow;
#本文的算法是自己写的小论文中的,其他博客会更新一些传统的轨迹更新方法,相关的代码也会放在代码仓库中promising76 · GitHub
欢迎各位提问探讨