¡El programa de control de actitud del cuadricóptero que escribí en MATLAB no se puede ejecutar!
En primer lugar, el nombre de su archivo no puede ser pid.m y la ruta no puede contener palabras clave integradas en Matlab como pid.
En segundo lugar, hay dos líneas de errores. Se recomienda comentarlas. Esto no tendrá ningún impacto en los resultados porque no estás utilizando los datos.
El código correcto es el siguiente:
clc;
clear;
kp1=0.6;
kp2= 0.6;
kp3=1.0;
ki1=0.8;
ki2=0.8;
ki3=0.8; p>
kd1=0.2;
kd2=0.2;
kd3=0.4;
e1(1)=0;
e2(1)=0;
e3(1)=0;
u_1=[0 0 0]';
xeta=[1 0 1 1 0 1 0]';
ts=0.01;
para i=2:1000
yd(i)=2*sin(i *ts );
tiempo(i)=i*ts;
tspan=[0 ts]; p> [tt,xx]= ode45('pid_modle',tspan,xeta,[],para);?
xeta=xx(length(xx),:
fai (i)=xeta(1);
theta(i)=xeta(3
pai(i)=xeta(5); p> e1(i)=fai(i)-yd(i);
e2(i)=theta(i)-yd(i);
e3(i) =pai (i)-yd(i);
u1(i)=kp1*e1(i)+ki1*(e1(i)+e1(i-1)*ts)+kd1* (e1 (i)-e1(i-1))/ts;?
u2(i)=kp2*e2(i)+ki2*(e2(i)+e2(i-1) *ts )+kd2*(e2(i)-e2(i-1))/ts;?
u3(i)=kp3*e3(i)+ki3*(e3(i)+ e3( i-1)*ts)+kd3*(e3(i)-e3(i-1))/ts
% u(i)=[u1(i) u2(i) u3( i)]';?
% u_1=u(i);
end
% Figura 1
plot( time, fai,'-',time,theta,'-.' ,time,pai,' ,time,yd)
El archivo de función no tiene cambios ni errores.
Los resultados obtenidos son los siguientes:
Espero que se pueda adoptar y establecer como una respuesta satisfactoria, gracias.