基于某状态空间方程的倒立摆小车的控制方法设计2.doc

上传人:李司机 文档编号:1143137 上传时间:2022-07-04 格式:DOC 页数:21 大小:230KB
返回 下载 相关 举报
基于某状态空间方程的倒立摆小车的控制方法设计2.doc_第1页
第1页 / 共21页
基于某状态空间方程的倒立摆小车的控制方法设计2.doc_第2页
第2页 / 共21页
基于某状态空间方程的倒立摆小车的控制方法设计2.doc_第3页
第3页 / 共21页
基于某状态空间方程的倒立摆小车的控制方法设计2.doc_第4页
第4页 / 共21页
基于某状态空间方程的倒立摆小车的控制方法设计2.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于某状态空间方程的倒立摆小车的控制方法设计2.doc》由会员分享,可在线阅读,更多相关《基于某状态空间方程的倒立摆小车的控制方法设计2.doc(21页珍藏版)》请在三一办公上搜索。

1、word倒立摆小车的建模系统参数:(M) 小车质量 0.5 kg(m) 倒立摆质量 0.2 kg(b) 小车的阻尼系数 0.1 N/m/sec(l) 倒立摆长度 0.3 m(I) 倒立摆转动惯量 0.006 kg.m2(F) 施加在小车上的力(x) 小车的位置坐标(theta) 倒立摆与垂直方向的夹角从垂直向下开始计动力学建模: 考虑水平方向的力矩平衡:以上两式合并得到:考虑垂直施加在倒立摆上的力与质心力矩平衡方程:消去 P N ,得到如下公式简化: 简化后模型:传递函数模型:设:PID 控制:或者如下表示:M = 0.5; m = 0.2; b = 0.1; I = 0.006; g = 9

2、.8; l = 0.3; q = (M+m)*(I+m*l2)-(m*l)2; s = tf(s); P_pend = (m*l*s/q)/(s3 + (b*(I + m*l2)*s2/q - (M + m)*m*g*l)*s/q - b*m*g*l/q);Kp = 1; Ki = 1; Kd = 1; C = pid(Kp,Ki,Kd); T = feedback(P_pend,C);t=0:0.01:10; impulse(T,t) title(Response of Pendulum Position to an Impulse Disturbance under PID Control

3、: Kp = 1, Ki = 1, Kd = 1);Kp = 100; Ki = 1; Kd = 1; C = pid(Kp,Ki,Kd); T = feedback(P_pend,C); t=0:0.01:10; impulse(T,t) axis(0, 2.5, -0.2, 0.2); title(Response of Pendulum Position to an Impulse Disturbance under PID Control: Kp = 100, Ki = 1, Kd = 1);Kp = 100; Ki = 1; Kd = 20; C = pid(Kp,Ki,Kd); T

4、 = feedback(P_pend,C); t=0:0.01:10; impulse(T,t) axis(0, 2.5, -0.2, 0.2); title(Response of Pendulum Position to an Impulse Disturbance under PID Control: Kp = 100, Ki = 1, Kd = 20); 这时,小车的位置?传递函数: P_cart = (I+m*l2)/q)*s2 - (m*g*l/q)/(s4 + (b*(I + m*l2)*s3/q - (M + m)*m*g*l)*s2/q - b*m*g*l*s/q); T2

5、= feedback(1,P_pend*C)*P_cart; t = 0:0.01:5; impulse(T2, t); title(Response of Cart Position to an Impulse Disturbance under PID Control: Kp = 100, Ki = 1, Kd = 20);基于状态空间方程的倒立摆小车的控制方法设计 开环根 (LQR) 增加补偿 基于观测器的控制1 状态空间方程设计目标:1 倒立摆倒立状态2首先假设系统状态全部测量获得:求开环的根,即A的特征值M = 0.5;m = 0.2;b = 0.1;I = 0.006;g = 9.

6、8;l = 0.3;p = I*(M+m)+M*m*l2; %denominator for the A and B matricesA = 0 1 0 0; 0 -(I+m*l2)*b/p (m2*g*l2)/p 0; 0 0 0 1; 0 -(m*l*b)/p m*g*l*(M+m)/p 0;B = 0; (I+m*l2)/p; 0; m*l/p;C = 1 0 0 0; 0 0 1 0;D = 0; 0;states = xx_dotphiphi_dot;inputs = u;outputs = x; phi;sys_ss = ss(A,B,C,D,statename,states,in

7、putname,inputs,outputname,outputs);poles = eig(A)poles = 0线性二次型整定 (LQR)1 检查可控性co = ctrb(sys_ss);controllability = rank(co)controllability = 4设 R=1Q = C*CQ = 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0Q = C*C;R = I;K = lqr(A,B,Q,R)Ac = (A-B*K);Bc = B;Cc = C;Dc = D;states = xx_dotphiphi_dot;inputs = r;outputs = x

8、; phi;sys_cl = ss(Ac,Bc,Cc,Dc,statename,states,inputname,inputs,outputname,outputs);t = 0:0.01:5;r =0.2*ones(size(t);y,t,x=lsim(sys_cl,r,t);AX,H1,H2 = plotyy(t,y(:,1),t,y(:,2),plot);set(get(AX(1),Ylabel),String,cart position (m)set(get(AX(2),Ylabel),String,pendulum angle (radians)title(Step Response

9、 with LQR Control)K =Q = C*C;Q(1,1) = 5000;Q(3,3) = 100R = 1;K = lqr(A,B,Q,R)Ac = (A-B*K);Bc = B;Cc = C;Dc = D;states = xx_dotphiphi_dot;inputs = r;outputs = x; phi;sys_cl = ss(Ac,Bc,Cc,Dc,statename,states,inputname,inputs,outputname,outputs);t = 0:0.01:5;r =0.2*ones(size(t);y,t,x=lsim(sys_cl,r,t);A

10、X,H1,H2 = plotyy(t,y(:,1),t,y(:,2),plot);set(get(AX(1),Ylabel),String,cart position (m)set(get(AX(2),Ylabel),String,pendulum angle (radians)title(Step Response with LQR Control)Q = 5000 0 0 0 0 0 0 0 0 0 100 0 0 0 0 0K =增加补偿系数: = 1 0 0 0;sys_ss = ss(A,B,0);Nbar = rscale(sys_ss,K)Nbar =sys_cl = ss(Ac

11、,Bc*Nbar,Cc,Dc,statename,states,inputname,inputs,outputname,outputs);t = 0:0.01:5;r =0.2*ones(size(t);y,t,x=lsim(sys_cl,r,t);AX,H1,H2 = plotyy(t,y(:,1),t,y(:,2),plot);set(get(AX(1),Ylabel),String,cart position (m)set(get(AX(2),Ylabel),String,pendulum angle (radians)title(Step Response with Prepensat

12、ion and LQR Control)基于能观器的控制检查能观性:ob = obsv(sys_ss);observability = rank(ob)observability = 4能观器的根要比控制器的根快5到10倍的收敛控制器的根:poles = eig(Ac)poles =置根法设置 能观器的根:P = -40 -41 -42 -43;L = place(A,C,P)L = 1.0e+03 *Ace = (A-B*K) (B*K); zeros(size(A) (A-L*C);Bce = B*Nbar; zeros(size(B);Cce = Cc zeros(size(Cc);Dc

13、e = 0;0;states = xx_dotphiphi_dote1e2e3e4;inputs = r;outputs = x; phi;sys_est_cl = ss(Ace,Bce,Cce,Dce,statename,states,inputname,inputs,outputname,outputs);t = 0:0.01:5;r = 0.2*ones(size(t);y,t,x=lsim(sys_est_cl,r,t);AX,H1,H2 = plotyy(t,y(:,1),t,y(:,2),plot);set(get(AX(1),Ylabel),String,cart positio

14、n (m)set(get(AX(2),Ylabel),String,pendulum angle (radians)title(Step Response with Observer-Based State-Feedback Control)FunctionNbar=rscale(a,b,c,d,k) % Given the single-input linear system: % . % x = Ax + Bu % y = Cx + Du % and the feedback matrix K, % % the function rscale(sys,K) or rscale(A,B,C,

15、D,K) % finds the scale factor N which will % eliminate the steady-state error to a step reference % for a continuous-time, single-input system % with full-state feedback using the schematic below: % % /- % R + u | . | % - N -() -| X=Ax+Bu |- y=Cx - y % -| -/ % | | % |- K -| % %8/21/96 Yanjie Sun of

16、the University of Michigan % under the supervision of Prof. D. Tilbury %6/12/98 John Yook, Dawn Tilbury revised error(nargchk(2,5,nargin); % - Determine which syntax is being used - nargin1 = nargin; if (nargin1=2),% System form A,B,C,D = ssdata(a); K=b; elseif (nargin1=5), % A,B,C,D matrices A=a; B=b; C=c; D=d; K=k; else error(Input must be of the form (sys,K) or (A,B,C,D,K) end; % pute Nbar s = size(A,1); Z = zeros(1,s) 1; N = inv(A,B;C,D)*Z; Nx = N(1:s); Nu = N(1+s); Nbar=Nu + K*Nx;21 / 21

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号