想实现三个小车从无序到三角形编队前进,可是仿真出来是这样的
%% 小车的状态重新定义
clear;
clf;
clc;
n = 3;
l = 0.05;
k = 0.02;
% c = [0.2;0];
c =2;
T = 0.1;
loop = 200;
co(1,1) = 'r';
co(1,2) = 'b';
co(1,3) = 'g'; %颜色
a = zeros(2,n);
theta = zeros(1,n);
a =[0.57,0.45,0.74;-0.51,-0.22,-0.31];
theta = [0.43,0.60,-0.80];
p = zeros(1,n);
q = zeros(1,n);
u = zeros(2,n);
invA = zeros(2,2);
difgammaTrans = zeros(2,n);
A = zeros(2,2);
% sk = zeros(loop,n);
%%
a(1,:) = a(1,:) + l*cos(theta(1:n));
a(2,:) = a(2,:) + l*sin(theta(1:n));
for f = 1:loop
for i = 1:n
if i ~= n
% diffgammaTrans(:,i) = 2*(abs(a(:,i)-a(:,i+1)-c));
% difgammaTrans(:,i) = 2*[a(1,i)-a(1,i+1);a(2,i)-a(2,i+1)-c];
difgammaTrans(:,i) = 2*[a(1,i)-a(1,i+1)-c;a(2,i)-a(2,i+1)];
else
% diffgammaTrans(:,i) = 2*(abs(a(:,i)-a(:,1)-(n-1)*c));
% difgammaTrans(:,n) = 2*[a(1,n)-a(1,1);a(2,n)-a(2,1)-(n-1)*c];
difgammaTrans(:,n) = 2*[a(1,n)-a(1,1)+(n-1)*c;a(2,n)-a(2,1)];
end
invA = (1/l)*[l*cos(theta(i)),l*sin(theta(i));-sin(theta(i)),cos(theta(i))];
A = [cos(theta(i)),-l*sin(theta(i));sin(theta(i)),l*cos(theta(i))];
u(:,i) = -1/(2*T)*k*(invA)*(difgammaTrans(:,i));
% a(:,i) = a(:,i) + T*A*u(:,i); %% 位置更新
zj(:,i) = a(:,i);
a(1,i) = a(1,i) + T*A(1,:)*u(:,i);
a(2,i) = a(2,i) + T*A(2,:)*u(:,i);
sk(f,i) = sqrt((zj(1,i)-a(1,i))^2+(zj(2,i)-a(2,i))^2);
theta(i) = theta(i)+T*u(2,i);
subplot(2,1,1);
hold on
% plot(p(1,i),q(1,i),'o');
plot(a(1,i),a(2,i),'o','color',co(1,i));
hold off
title(['Iteration: ' dec2base(f,10)]);
subplot(2,1,2);
hold on
plot(f,sk(f,i),'*','color',co(i));
hold off
getframe; %% 作图
end
%% 此段为实现小车被移动后重新编队效果,需要修改loop值
% if f==200
% a(1,1)=2;
% a(2,1)=0.2;
% theta(1)=0.4;
% end
% if f==350
% a(1,2)=0;
% a(2,2)=0.1;
% theta(2)=0.5;
% end
end
legend('robot1','robot2','robot3');
% legend('robot1','robot2','robot3');
% figure(2);
% for ti = 1:loop
% for ii = 1:n
% hold on
% plot(ti,sk(ti,ii),co(ii));
% hold off
% end
% end
% % xlebal('t(s)');
% % xlebal('Error');
% %标注出错,原因查找
% legend('robot1','robot2','robot3');
%% 最后的关键在于节点之间的理想状态之间的关系没有描述好,i和i+1之间的c描述为+2,而n和1之间则需要-2。
希望大家可以指导一下我该怎么修改,谢谢啦
补充内容 (2018-6-1 19:38):
是的撒多撒
2018-4-28 13:05 上传