我用MATLAB写的四旋翼飞行器姿态控制程序无法运行

我用MATLAB写的四旋翼飞行器姿态控制程序无法运行,第1张

首先,你的文件名不能是pid.m,路径也不察棚能含有pid这种matlab内置的关键字。

其次,有两行错误,建议注释掉,对你的结果没影响,因为你没有使用这个数据。

具体正确的代码如下:

clc

clear

kp1=0.6

kp2=0.6

kp3=1.0

ki1=0.8

ki2=0.8

ki3=0.8

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 0 1 0]'

ts=0.01

for i=2:1000   

    yd(i)=2*sin(i*ts)   

    time(i)=i*ts   

    tspan=[0 ts]   

    para=u_1   

    [tt,xx]=ode45('pid_modle',tspan,xeta,[],para)  

    xeta=xx(length(xx),:)   

    fai(i)=xeta(1)   

    theta(i)=xeta(3)   

    pai(i)=xeta(5)   

    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

% figure 1

plot(time,fai,'-',time,theta,'-.',time,pai,'.',time,yd)

那个函数文件不变,没有错误。

运行结衫缓果如下:

希望采纳,设置为满意答案,谢谢。

function

[n,x]=sor22(a,b,x,nm,w,ww)

%用超松弛迭代法求解方程组ax=b

%输入:a为方程组的系数矩阵,b为方程组右端的列向量,x为迭代初值构成的列向量,nm为最大迭代隐乱次数,w为误差精度,ww为松弛因子

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1

m=length(a)

d=diag(diag(a))

%令a=d-l-u,计算矩阵d

l=tril(-a)+d

%令a=d-l-u,计算矩阵l

u=triu(-a)+d

%令a=d-l-u,计算矩阵u

m=inv(d-ww*l)*((1-ww)*d+ww*u)

%计算迭代矩阵

g=ww*inv(d-ww*l)*b

%计算槐绝迭灶明档代格式中的常数项

%下面是迭代过程

while

n<=nm

x=m*x+g

%用迭代格式进行迭代

if

norm(x-x,'inf')

评论

0

0

加载更多


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/12353563.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存