|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
最近研究倒立摆的仿真,由于刚接触matlab,还在学习阶段。自己找了个程序有很多看不明白,希望大家都看看。
- clear;
- M = 1.096; %小车质量
- m = 0.109; %摆杆质量
- b = 0.1; %摩擦系数
- f=0; %unknow
- I= 0.0034; %转动惯量
- g = 9.8; %重力加速度
- l = 0.25; %摆杆长度
- D = I*(M+m)+M*m*l^2; %A和B共有
- A = [0 ,1, 0, 0;
- 0 ,-(I+m*l^2)*b/D ,(m^2*g*l^2)/D ,-m*l*f/D;
- 0,0,0,1;
- 0,-(m*l*b)/D,m*g*l*(M+m)/D,-(m+M)*f/D]
- B = [0; -(I+m*l^2)/D;0;-m*l/D];
- C = [1,0,0,0;0,0,1,0];
- D = [0;0];
- disp('The rank of controllability matrix')
- rc=rank(ctrb(A,B))
- % p=[-2-3*i,-2+3*i,-20,-21];
- p=[-20,-21,-2-3*i,-2+3*i]; %p表示什么
- k=place(A,B,p) %place函数功能是什么,怎么用
- Cn=[1 0 0 0 ];
- Nbar=rscale(A,B,Cn,0,k) %rscale函数功能是什么,怎么用
- t0=0;
- tspan=0.006;
- R=1; %以下的就更不明白了
- y0=[0 0 0.1 0];
- n=1000;
- F=R*Nbar-k*y0';
- for i=1:n
- tf=t0+tspan;
- [t,y]=ode45(@xprime10,[t0 tf],y0',[],F);
- t0=tf;
- y1=y(end,1);
- y2=y(end,2);
- y3=y(end,3);
- y4=y(end,4);
- y0=[y1 y2 y3 y4];
- F=R*Nbar-k*y0';
- h(i,1)=y1;
- h(i,2)=y2;
- h(i,3)=y3;
- h(i,4)=y4;
- h(i,5)=F;
- end
- T=0.006:0.006:6;
- figure(1)
- plot(T,h(:,1),':b')
- legend('小车位移')
- grid
- figure (2)
- plot(T,h(:,3),'-r')
- legend('摆杆摆角')
- grid
- figure(3)
- plot(T,h(:,5),'--g')
- legend('F')
- grid
复制代码
程序运行结果及相应图形:
A =
0 1.0000 0 0
0 -0.0883 0.6293 0
0 0 0 1.0000
0 -0.2357 27.8285 0
The rank of controllability matrix
rc =
4
k =
236.4228 95.9248 -353.7495 -55.0080
Nbar =
236.4228
|
|