q(:,1) = [90/180*pi -90/180*pi 0.3 0/180*pi]';
q(:,2) = [60/180*pi -120/180*pi 0 0/180*pi]';
q(:,3) = [15/180*pi -30/180*pi 0 0/180*pi]';
q(:,4)= [45/180*pi 90/180*pi 0 0/180*pi]';
q(:,5) = [45/180*pi -60/180*pi 0 0/180*pi]';
theta=[q(1,1) q(2,1) 0 q(4,1)]';
DrawRobot(DH);
Unrecognized function or variable 'DrawRobot'.
y = sqrt (raggio^2 -l .^ 2);
C=[ 1.0500 0.3000 0.0001 0.6500 0.0001 0.45 0.45 0.001 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.001 0.15;
0.0001 0.3000 0.3000 0.200 1.15 0.45 0.0001 0.9 0.0653835 0.0246165 0.0171214 0.0128786 0.00990381 0.00757346 0.00561361 0.0038785 0.00227873 0.000751884 0.000751884 0.00227873 0.0038785 0.00561361 0.00757346 0.00990381 0.0128786 0.0171214 0.0246165 0.0653835 0.45 0.9;
0.0001 0.4500 0.0001 0.4000 0.1 0.6 0.0001 0.15 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001];
punti_di_percorso = [0 70 90 90 50 50 20 -10 l 10 0;
90 90 70 50 40 -30 -60 -60 y 30 90;
0 0 30 30 50 50 10 10 z 0 0]/100;
[xd,dxd,ddxd,tvec,pp] = trapveltraj(punti_di_percorso, 1000, PeakVelocity=C);
Jacobian_scara_rectangular = Jacobian_Scara(DH);
Jacobian_scara_square = [Jacobian_scara_rectangular(1,:); Jacobian_scara_rectangular(2,:); Jacobian_scara_rectangular(3,:); Jacobian_scara_rectangular(6,:)];
if strcmp(algorithm,'inverse')
K = 1*diag([10 10 10 10]);
fprintf('\n algoritmo: inversa dello jacobiano \n')
fprintf('\n algoritmo: trasposta dello jacobiano \n')
quat_d(:,i) = [0 0 0 1]';
T = DirectKinematics(DH);
quat(:,i) = Rot2Quat(T(1:3,1:3,n));
J = Jacobian_scara_square;
error_pos(:,i) = xd(:,i) - x(:,i);
error_quat(:,i) = QuatError(quat_d(:,i),quat(:,i));
error(:,i) = [error_pos(:,i);error_quat(:,i)];
error1=[error(1,:);error(2,:);error(4,:);error(5,:)];
if strcmp(algorithm,'transpose')
dq(:,i) = J'*K*error1(:,i);
dq(:,i) = inv(J)*K*error1(:,i);
q(:,i+1) = q(:,i) + Ts*dq(:,i);
plot(tvec,q, 'LineWidth',2)
title('posizione dei giunti')
legend('posizione q1','posizione q2','posizione q3','posizione q4')
plot(tvec,dq, 'LineWidth',2)
title('velocità dei giunti')
legend('velocità q1','velocità q2','velocità q3','velocità q4')
plot(tvec,error(1:2,:), 'LineWidth',2)
title('errore di posizione')
plot(tvec,error(3:5,:), 'LineWidth',2)
title('errore di orientamento')