135 lines
2.8 KiB
Mathematica
135 lines
2.8 KiB
Mathematica
|
sys = ss(A-B*K,B(:,2),C(2,:),D)
|
||
|
H = tf(sys)
|
||
|
bode(H)
|
||
|
% margin(H)
|
||
|
% Avec le correcteur intégral :
|
||
|
Ti = 5e-4
|
||
|
CI = tf(1,[-Ti 0]); % négatif pour avoir une phase >180
|
||
|
%bode(H,CI*H,'grid')
|
||
|
% fig =figure();
|
||
|
% margin(CI*H)
|
||
|
% grid on;
|
||
|
% saveas(fig,"manip_5marge.png");
|
||
|
|
||
|
%%
|
||
|
close all;
|
||
|
sim('Grue_NL_corrNL')
|
||
|
fig= figure()
|
||
|
plot(Dc)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,1));
|
||
|
xlabel('temps (s)');
|
||
|
grid on;
|
||
|
title('Vérification de la planification de trajectoire');
|
||
|
legend('d_c','d');
|
||
|
|
||
|
fig2= figure()
|
||
|
plot(Rc)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,2));
|
||
|
xlabel('temps (s)');
|
||
|
grid on;
|
||
|
title('Vérification de la planification de trajectoire');
|
||
|
legend('r_c','r');
|
||
|
|
||
|
|
||
|
%%
|
||
|
|
||
|
close all
|
||
|
figure()
|
||
|
for e = [1 10 100]
|
||
|
ed = omega0/e; er= omega0/e;
|
||
|
sim('Grue_NL_corrNL')
|
||
|
hold on
|
||
|
subplot(311)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,1),"DisplayName",sprintf("\\epsilon_r=\\epsilon_d= \\omega_0/%d",e));
|
||
|
subplot(312)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,2),"DisplayName",sprintf("\\epsilon_r=\\epsilon_d= \\omega_0/%d",e));
|
||
|
subplot(313)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,3),"DisplayName",sprintf("\\epsilon_r=\\epsilon_d= \\omega_0/%d",e));
|
||
|
end
|
||
|
xlabel('temps (s)');
|
||
|
subplot(311)
|
||
|
title("choix de l'échelle temps");
|
||
|
ylabel('d'); grid on;
|
||
|
subplot(312)
|
||
|
ylabel('r'); grid on;
|
||
|
subplot(313)
|
||
|
ylabel('\theta'); grid on;
|
||
|
%%
|
||
|
|
||
|
close all
|
||
|
e = 100;
|
||
|
ed = omega0/e; er= omega0/e;
|
||
|
figure()
|
||
|
for m = [300 500 700]
|
||
|
c0 =m*g*b;
|
||
|
sim('Grue_NL_corrNL')
|
||
|
hold on
|
||
|
subplot(311)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,1),"DisplayName",sprintf("m = %d",m));
|
||
|
subplot(312)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,2),"DisplayName",sprintf("m = %d",m));
|
||
|
subplot(313)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,3),"DisplayName",sprintf("m = %d",m));
|
||
|
end
|
||
|
xlabel('temps (s)');
|
||
|
subplot(311)
|
||
|
title("");
|
||
|
ylabel('d'); grid on;
|
||
|
subplot(312)
|
||
|
ylabel('r'); grid on;
|
||
|
subplot(313)
|
||
|
ylabel('\theta'); grid on;
|
||
|
|
||
|
m = 500;
|
||
|
%%
|
||
|
close all
|
||
|
e = 10;
|
||
|
ed = omega0/e; er= omega0/e;
|
||
|
figure()
|
||
|
for kc = [0.5 1 1.5]
|
||
|
Cr= Cr*kc
|
||
|
sim('Grue_NL_corrNL')
|
||
|
hold on
|
||
|
subplot(311)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,1),"DisplayName",sprintf("Cr = %f",Cr));
|
||
|
subplot(312)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,2),"DisplayName",sprintf("Cr = %f",Cr));
|
||
|
subplot(313)
|
||
|
hold on
|
||
|
plot(simout.Time, simout.Data(:,3),"DisplayName",sprintf("Cr = %f",Cr));
|
||
|
end
|
||
|
xlabel('temps (s)');
|
||
|
subplot(311)
|
||
|
title("");
|
||
|
ylabel('d'); grid on;
|
||
|
subplot(312)
|
||
|
ylabel('r'); grid on;
|
||
|
subplot(313)
|
||
|
ylabel('\theta'); grid on;
|
||
|
|
||
|
%%
|
||
|
close all;
|
||
|
sim('Grue_NL_corrNL')
|
||
|
fig= figure()
|
||
|
hold on
|
||
|
plot(simout.Time, complates.Data(:,1));
|
||
|
plot(simout.Time, complates.Data(:,2));
|
||
|
plot(simout.Time, sortieplates.Data(:,2));
|
||
|
plot(simout.Time, sortieplates.Data(:,1));
|
||
|
|
||
|
xlabel('temps (s)');
|
||
|
grid on;
|
||
|
title('Vérification de la planification de trajectoire, sortie plates');
|
||
|
legend('x_c','z_c','x','z');
|
||
|
|
||
|
%%
|