% Análise dos efeitos de variação dos parametros do controlador
%
% Variação de Kp:
% Variando Kp observa-se que o tempo de atraso (0=>50%) aumenta com o
% aumento de Kp, mas o tempo de estabelecimento é prejudicado. Observa-se
% na resposta ao polinómio um ponto comum a todos os Kp's, em que antes
% de ser atingido o atraso é melhorado, mas depois de ultrapassado é
% deteriorado. É fundamental assim um compromisso com o valor de Kp.
% Além disso, embora não seja observável nos gráficos, nota-se um aumento
% da instabilidade para Kp's muito elevados (alguma oscilação em regime
% estacionário) pelo que é de evitar elevados valores. Tal deve-se à
% oscilação na leitura do sensor que pode atingir os 4º!
% Como conclusão pode-se referir a importancia deste parametro para o
% desaparecimento do overshoot (a partir de Kp=50).
%
% Variação de Kd:
% Variando este parametro apenas se observa uma suavização da resposta ao
% polinómio, mas nem o tempo de atraso nem o overshoot são resolvidos. A
% importancia desta componente apenas se prende com a capacidade de evitar
% pontos de inflexão durante o percurso da trajectória.

%help testing_k.m

clear all
close all


%_____________________________________________________________
i0=load('Ki=0.05\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd000#t_pos_vel_curr_posTh_velTh.txt');

d1=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd020#t_pos_vel_curr_posTh_velTh.txt');
d2=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd050#t_pos_vel_curr_posTh_velTh#osc.txt');
d3=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd100#t_pos_vel_curr_posTh_velTh#osc.txt');

%Tempo
timei0=i0(:,1);
timed1=d1(:,1);
timed2=d2(:,1);
timed3=d3(:,1);

% Trajectória prevista
predictedi0=i0(:,5);
predictedd1=d1(:,5);
predictedd2=d2(:,5);
predictedd3=d3(:,5);

% Trajectória real
reali0=i0(:,2);
reald1=d1(:,2);
reald2=d2(:,2);
reald3=d3(:,2);

figure('name','(Massa=675g) Variando Kd com Ki=0.05');
axes('fontsize',14)
plot(timei0,predictedi0,'k',timei0,reali0,timed1,reald1,timed2,reald2,timed3,reald3);
xlabel('time (s)');
ylabel('position (degrees)');
legend('Expected','Kd=0.00','Kd=0.20','Kd=0.50','Kd=1.00','location','southeast');

%_____________________________________________________________
i0=load('Ki=0.10\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd000#t_pos_vel_curr_posTh_velTh.txt');

d1=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd030#t_pos_vel_curr_posTh_velTh.txt');
d2=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd080#t_pos_vel_curr_posTh_velTh.txt');
d3=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd150#t_pos_vel_curr_posTh_velTh#osc.txt');

%Tempo
timei0=i0(:,1);
timed1=d1(:,1);
timed2=d2(:,1);
timed3=d3(:,1);

% Trajectória prevista
predictedi0=i0(:,5);
predictedd1=d1(:,5);
predictedd2=d2(:,5);
predictedd3=d3(:,5);

% Trajectória real
reali0=i0(:,2);
reald1=d1(:,2);
reald2=d2(:,2);
reald3=d3(:,2);

figure('name','(Massa=675g) Variando Kd com Ki=0.10');

axes('fontsize',14)
plot(timei0,predictedi0,'k',timei0,reali0,timed1,reald1,timed2,reald2,timed3,reald3);
xlabel('time (s)');
ylabel('position (degrees)');
legend('Expected','Kd=0.00','Kd=0.30','Kd=0.80','Kd=1.50','location','southeast');




%_____________________________________________________________
i0=load('Ki=0.05\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd000#t_pos_vel_curr_posTh_velTh.txt');

d1=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd020#t_pos_vel_curr_posTh_velTh.txt');
d2=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd050#t_pos_vel_curr_posTh_velTh#osc.txt');
d3=load('Ki=0.05\Kd\traject=up_intMaxTorque#T=50#M=m4#ki005kp000kd100#t_pos_vel_curr_posTh_velTh#osc.txt');

%Tempo
timei0=i0(:,1);
timed1=d1(:,1);
timed2=d2(:,1);
timed3=d3(:,1);

% Trajectória prevista
predictedi0=i0(:,5);
predictedd1=d1(:,5);
predictedd2=d2(:,5);
predictedd3=d3(:,5);

% Trajectória real
reali0=i0(:,2);
reald1=d1(:,2);
reald2=d2(:,2);
reald3=d3(:,2);

figure('name','(Massa=675g) Variando Kd com Ki=0.05');
axes('fontsize',14)
plot(timei0,predictedi0,'k',timei0,reali0,timed3,reald3);
xlabel('time (s)');
ylabel('position (degrees)');
legend('Expected','Kd=0.00','Kd=1.00','location','southeast');

%_____________________________________________________________
i0=load('Ki=0.10\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd000#t_pos_vel_curr_posTh_velTh.txt');

d1=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd030#t_pos_vel_curr_posTh_velTh.txt');
d2=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd080#t_pos_vel_curr_posTh_velTh.txt');
d3=load('Ki=0.10\Kd\traject=up_intMaxTorque#T=50#M=m4#ki010kp000kd150#t_pos_vel_curr_posTh_velTh#osc.txt');

%Tempo
timei0=i0(:,1);
timed1=d1(:,1);
timed2=d2(:,1);
timed3=d3(:,1);

% Trajectória prevista
predictedi0=i0(:,5);
predictedd1=d1(:,5);
predictedd2=d2(:,5);
predictedd3=d3(:,5);

% Trajectória real
reali0=i0(:,2);
reald1=d1(:,2);
reald2=d2(:,2);
reald3=d3(:,2);

figure('name','(Massa=675g) Variando Kd com Ki=0.10');

axes('fontsize',14)
plot(timei0,predictedi0,'k',timei0,reali0,timed3,reald3);
xlabel('time (s)');
ylabel('position (degrees)');
legend('Expected','Kd=0.00','Kd=1.50','location','southeast');
