## Figures.m ## Makes figures for the InvertedPendulumOnCart_PPP exasmple. ## $Log$ ## Revision 1.4 2000/08/17 12:34:58 peterg ## *** empty log message *** ## ## Revision 1.3 2000/08/11 16:01:27 peterg ## Fixed documentation error ## ## Revision 1.2 2000/05/21 06:39:40 peterg ## Parameterised _sm ## ## Revision 1.1 2000/05/20 11:30:41 peterg ## Initial revision ## ## Revision 1.2 2000/05/17 16:59:57 peterg ## Revised for Inverted pendulum - it works !!!! ## ## Revision 1.1 2000/05/17 14:07:53 peterg ## Initial revision ## ## Revision 1.1 2000/05/17 09:14:37 peterg ## Initial revision ## system_name = "InvertedPendulumOnCartPPP"; ## Uncomment the following the first time ## (Or do ./Make InvertedPendulumOnCartPPP in this directory) ## MTT stuff for the system simulation ##system("Make InvertedPendulumOnCartPPP"); t_s=1.0*[0:0.1:10]; u = [ones(4,length(t_s))]; x_0 = InvertedPendulumOnCartPPP_state; par = InvertedPendulumOnCartPPP_numpar; ## Simulate the system tick=time; [y,x] = InvertedPendulumOnCartPPP_sim(x_0,u,t_s,par); Elapsed = time-tick plot(t_s,y, t_s,x); ## Simulate the system to give just the final few points t_s1 = 10*[9:0.1:10]; tick=time; [y,x] = InvertedPendulumOnCartPPP_sim(x_0,u,t_s1,par); Elapsed = time-tick plot(t_s1,y,t_s1,x); ## Sensitivity system simulation parameters x_0s = sInvertedPendulumOnCartPPP_state; pars = sInvertedPendulumOnCartPPP_numpar; sympars = sInvertedPendulumOnCartPPP_sympar; ## Simulate the sensitivity system sensitivities = [sympars.ppp_1s,sympars.ppp_2s,sympars.r_cs] tick=time; [y,ys] = sInvertedPendulumOnCartPPP_sim(x_0s,u,t_s,pars,sensitivities); Elapsed = time-tick plot(t_s,y,t_s,ys); ### PPP parameters A_w = [0;0]; A_u = laguerre_matrix(4,20); # Specify basis functions: constant & # exp(-5t) tau = 0.5*[0.9:0.01:1]; # Optimisation interval t_ol =0.5*[0:0.01:0.2]; # Open-loop interval N = 20; # Number of open-loop intervals in simulation w = [0;0]; # Setpoint ## Linear system ## Linear system [A,B,C,D] = InvertedPendulumOnCartPPP_sm(par); Q = [1;1]; ppp_lin_plot (A,B(:,1),C,D(:,1),A_u,A_w,tau,Q,w,x_0); psfig("InvertedPendulumOnCartPPP_lin"); ## Simulate non-linear PPP (on this nonlinear system) extras.U_initial = "zero"; extras.U_next = "continuation"; extras.criterion = 1e-5; extras.max_iterations = 10; extras.v = 0; extras.verbose = 0; # ## -- with no optimisation using linear PPP with continuation # extras.U_initial = "linear"; # extras.U_next = "continuation"; # extras.criterion = 1e-5; # extras.max_iterations = 0; # [y_c,x,u_c,t,U,U_c,U_l] = ppp_nlin_sim (system_name,A_u,tau,t_ol,N,w,extras); # ## -- with no optimisation using linear PPP at each step # extras.U_initial = "linear"; # extras.U_next = "linear"; # extras.criterion = 1e-5; # extras.max_iterations = 0; # [y_l,x,u_l,t,U,U_c,U_l] = ppp_nlin_sim (system_name,A_u,tau,t_ol,N,w,extras); ## -- with optimisation using nonlinear PPP with continuation extras.U_initial = "zero"; extras.U_next = "continuation"; extras.criterion = 1e-4; extras.max_iterations = 100; extras.v = 1e-3; extras.verbose = 0; [y,x,u,t,U,U_c,U_l] = ppp_nlin_sim (system_name,A_u,tau,t_ol,N,w,extras); ## Plots title(""); ## U, U_c and U_l I = 1:N; IU1 = [I' U(1,:)']; IU1_c = [I' U_c(1,:)']; IU1_l = [I' U_l(1,:)']; gset grid; xlabel "Interval" gplot IU1 title "U_1", IU1_c title "U_c1", IU1_l title "U_l1" psfig("InvertedPendulumOnCartPPP_U1"); IU2 = [I' U(2,:)']; IU2_c = [I' U_c(2,:)']; IU2_l = [I' U_l(2,:)']; gset grid; xlabel "Interval " gplot IU2 title "U_2", IU2_c title "U_c2", IU2_l title "U_l2" psfig("InvertedPendulumOnCartPPP_U2"); ## y & u gset grid; xlabel "Time (sec)" tu = [t' u']; gplot tu title "Output" psfig("InvertedPendulumOnCartPPP_u"); gset grid; xlabel "Time (sec)" ty_th = [t' y(1,:)'] ; ty_x = [t' y(2,:)'] ; gplot ty_th title "Theta",ty_x title "x" psfig("InvertedPendulumOnCartPPP_nppp");