*Advanced Automation [#zc0d6c13] ** &color(green){[lecture #1]}; 2013.9.5 outline of the lecture, review of classical and modern control theory (1/3) [#we254b0e] - outline of this lecture -- syllabus -- map #ref(map_v1.0.pdf); -- evaluation --- mini report #1 ... 10% --- mini exam #1 ... 10% --- mini report #2 ... 10% --- mini exam #2 ... 10% --- final report ... 60% - review #ref(2013.09.05-1.jpg,left,noimg,whiteboard #1); #ref(2013.09.05-2.jpg,left,noimg,whiteboard #2); ... missed (derivation of G(s) = 1/(ms^2+cs+k) by Laplace transformation from given equation of motion) #ref(2013.09.05-3.jpg,left,noimg,whiteboard #3); #ref(2013.09.05-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #2]}; 2013.9.12 CACSD introduction with review of classical and modern control theory (2/3) [#wb3e6bee] + introduction of Matlab and Simulink --[[Basic usage of MATLAB and Simulink>/:~kobayasi/easttimor/2009/text/text_fixed.pdf]] used for 情報処理演習及び考究II/Consideration and Practice of Information Processing II: Advanced Course of MATLAB // + How to define open-loop system // ++ &color(black,cyan){TF}; s = tf('s'); G1 = 1 / (s+1); G2 = 1 / (s^2 + 0.1*s + 1); ++ &color(black,lightgreen){SSR}; A = [-0.3, -1; 1, 0]; B = [1; 0]; C = [0, 1]; D = 0; G3 = ss(A, B, C, D); -- Bode plot bode(G1, 'b-', G2, 'g', G3, 'r--'); grid on; // + open-loop stability can be checked by // ++ &color(black,cyan){poles of TF}; roots(G2.den{:}) ++ &color(black,lightgreen){eigenvalues of A-matrix in SSR}; eig(G3.a) ++ also by simulation #ref(mod0912_1.mdl); // + closed-loop stability // L = 1/(s^3+1.5*s^2+1.5*s+1); % example of open-loop system roots(L.den{:}) % confirm the open-loop system is stable // ++ graphical test by &color(black,yellow){Nyquist stability criterion}; and &color(black,yellow){Bode plot}; with &color(black,yellow){GM};(gain margin) and &color(black,yellow){PM};(phase margin) nyquist(L) // bode(L) ++ numerical test by closed-loop system clp_den = L.den{:} + L.num{:}; roots(clp_den) ++ simulation #ref(mod0912_2.mdl); a = 1 ver t = [1 2 3] pwd ls foo pwd bar s = tf('s') G1 = 1 / (s+1); G2 = 1 / (s^2 + 0.1*s + 1); G1 G2 A = [-0.3, -1; 1, 0]; B = [1; 0]; C = [0, 1]; D = 0; G3 = ss(A, B, C, D); G3 bode(G1, 'b-', G2, 'g', G3, 'r--'); grid on; G2 G2.den G2.den{:} roots(G2.den{:}) G3.a eig(G3.a) mod0912_1 L = 1/(s^3+1.5*s^2+1.5*s+1); % example of open-loop system roots(L.den{:}) % confirm the open-loop system is stable nyquist(L) nyquist(L*1.25) nyquist(L) clp_den = L.den{:} + L.num{:}; roots(clp_den) ex0912_2 mod0912_2 L = 1.5*L #ref(2013.09.12-1.jpg,left,noimg,whiteboard #1); #ref(2013.09.12-2.jpg,left,noimg,whiteboard #2); ** &color(green){[lecture #3]}; 2013.9.19 CACSD introduction with review of classical and modern control theory (3/3) [#ubfee4e1] + LQR problem + ARE and quadratic equation #ref(J.pdf); + (semi)-positive definiteness + example #ref(mod0919.mdl); mod0919 A = [1, 2, 3; 4, 5, 6; 7, 8, 9] eig(A) B = [1; 1; 1] Uc = ctrb(A, B) det(Uc) B = [1; 0; 0] Uc = ctrb(A, B) det(Uc) help are P = are(A, B/R*B', Q) Q = eye(3) R = 1 P = are(A, B/R*B', Q) P = are(A, B*inv(R)*B', Q) P - P' eig(P) x(0) x0 = [1; 1; 1] x0'*P*x0 F = R\B'*P C = eye(3) D = [0; 0; 0] J #ref(2013.09.19-1.jpg,left,noimg,whiteboard #1); #ref(2013.09.19-2.jpg,left,noimg,whiteboard #2); #ref(2013.09.19-3.jpg,left,noimg,whiteboard #3); #ref(2013.09.19-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #4]}; 2013.9.26 Intro. to robust control theory (H infinity control theory) 1/3 [#edb9111a] + Typical design problems ++ robust stabilization ++ &color(black,yellow){performance optimization}; ++ robust performance problem (robust stability and performance optimization are simultaneously considered) // + H infinity norm -- definition -- example // + H infinity control problem -- definition -- application example : reference tracking problem --- relation to the sensitivity function S(s) (S(s) -> 0 is desired but impossible) --- given control system #ref(ex0926_1.m) --- controller design with H infinity control theory #ref(ex0926_2.m) s = tf('s') G = 1/(s+1) norm(G, 'inf') G = s/(s+1) norm(G, 'inf') G = 1/(s^2+0.1*s+1) bodemag(G) norm(G, 'inf') bodemag(G, 'b', ss(10.0125), 'r--') G = 1/(s^2+0.5*s+1) norm(G, 'inf') bodemag(G, 'b', ss(2.0656), 'r--') ex0926_1 ex0926_2 eig(K_hinf) #ref(2013.09.26-1.jpg,left,noimg,whiteboard #1); #ref(2013.09.26-2.jpg,left,noimg,whiteboard #2); #ref(2013.09.26-3.jpg,left,noimg,whiteboard #3); #ref(2013.09.26-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #5]}; %% 2013.10.3 Intro. to Robust Control Theory (H infinity control theory) 2/3 %% &color(red){&size(20){cancelled};}; [#r0a1de6e] ** &color(green){[lecture #5]}; 2013.10.10 Intro. to Robust Control Theory (H infinity control theory) 2/3 [#cf0799b9] + Typical design problems ++ &color(black,yellow){robust stabilization}; ++ performance optimization ++ robust performance problem (robust stability and performance optimization are simultaneously considered) // + connection between [H infinity control problem] and [robust stabilization problem] -- small gain theorem -- normalized uncertainty \Delta -- sketch proof ... Nyquist stability criterion + How to design robust stabilizing controller with H infinity control problem ? -- practical example : unstable plant with perturbation #ref(ex1010_1.m) -- how to use uncertainty model (multiplicative uncertainty model) #ref(ex1010_2.m) -- how to set generalized plant G ? #ref(ex1010_3.m) -- simulation #ref(mod1010.mdl) ex1010_1 ex1010_2 WT] WT P0 P0_jw ex1010_3 mod1010 #ref(2013.10.10-1.jpg,left,noimg,whiteboard #1); #ref(2013.10.10-2.jpg,left,noimg,whiteboard #2); #ref(2013.10.10-3.jpg,left,noimg,whiteboard #3); #ref(2013.10.10-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #6]}; 2013.10.17 Intro. to robust control theory (H infinity control theory) (3/3) [#kfa23202] + review -- robust stabilization ... (1) ||WT T||_inf < 1 (for multiplicative uncertainty) -- performance optimization ... (2) ||WS S||_inf < gamma -> min -- &color(black,yellow){mixed sensitivity problem}; ... simultaneous consideration of stability and performance + a sufficient condition for (1) and (2) ... (*) property of maximum singular value + definition of singular value + mini report #1 + meaning of singular value ... singular value decomposition (SVD) + proof of (*) + example #ref(ex1017.m); //#ref(mod1017.mdl); j A = [1, j; 0, 2] A' eig(A'*A) sqrt(ans) 3+sqrt(5) sqrt(3+sqrt(5)) sqrt(3-sqrt(5)) A [U,S,V] = svd(A) U'*U U*U' help svd ex1017 #ref(2013.10.17-1.jpg,left,noimg,whiteboard #1); #ref(2013.10.17-2.jpg,left,noimg,whiteboard #2); #ref(2013.10.17-3.jpg,left,noimg,whiteboard #3); ... sorry for missing to take photo ... &color(red){&size(20){mini report #1: write by hand; submit at the beginning of the next lecture; You will have a mini exam #1 related to this report on 31st Oct.};}; #ref(2013.10.17-4.jpg,left,noimg,whiteboard #4); #ref(2013.10.17-5.jpg,left,noimg,whiteboard #5); #ref(2013.10.17-6.jpg,left,noimg,whiteboard #6); ** &color(green){[lecture #7]}; 2013.10.24 review of SVD, motivation of robust performance &color(red){(robust performance problem 1/3), %%state space representation of generalized plant%%}; [#v3874954] - review of SVD #ref(ex1024_1.m); - motivation of robust performance #ref(ex1024_2.m); #ref(ex1024_3.m); ... SSR of generalized plant #ref(ex1024_4.m); ex1024_1 ex1024_2 ex1024_3 ex1024_4 #ref(2013.10.24-1.jpg,left,noimg,whiteboard #1); #ref(2013.10.24-2.jpg,left,noimg,whiteboard #2); #ref(2013.10.24-3.jpg,left,noimg,whiteboard #3); #ref(2013.10.24-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #8]}; 2013.10.31 Robust performance problem (2/3) [#e4893dbc] + review of mini report #1 + review of the limitation of mixed sensitivity problem + a solution of conservative design -- example based on the one given in the last lecture #ref(ex1031_1.m); -- a check of the conservativeness #ref(ex1031_2.m); + mini exam #1 #ref(exam1.pdf); %-- 10/31/2013 1:02 PM --% A = [j, 0; -j, 0] A = [j, 0; -j, 1] svd(A) sqrt((3+sqrt(5))/2) sqrt((3-sqrt(5))/2) ex1024_2 ex1024_3 ex1024_4 ex1031_1 #ref(2013.10.31-1.jpg,left,noimg,whiteboard #1); #ref(2013.10.31-2.jpg,left,noimg,whiteboard #2); #ref(2013.10.31-3.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #9]}; 2013.11.14 Robust performance problem (3/3) [#w1002562] - map - review of #8 - Q1 and Q2 - ex1031_2.m - scaled H infinity control problem #ref(ex1114_1.m); - mini report #2 ex1024_2 ex1024_3 ex1024_4 ex1024_5 ex1031_1 gam ex1024_3 gam ex1031_2 help lft ex1031_2 ex1031_1 ex1031_2 #ref(2013.11.14-1.jpg,left,noimg,whiteboard #1); #ref(2013.11.14-2.jpg,left,noimg,whiteboard #2); #ref(2013.11.14-3.jpg,left,noimg,whiteboard #3); #ref(2013.11.14-4.jpg,left,noimg,whiteboard #4); #ref(2013.11.14-5.jpg,left,noimg,whiteboard #5); ** &color(green){[lecture #10]}; 2013.11.21 Robust performance problem (1/3) (cont.) [#d51591df] - effect of scaling - mini report #2 - practical design procedure - derivation of generalized plant in SSR for mixed sensitivity problem ex1024_2 ex1024_3 gam ex1024_4 ex1031_1 gam ex1031_2 ex1114_1 gam #ref(2013.11.21-1.jpg,left,noimg,whiteboard #1); #ref(2013.11.21-2.jpg,left,noimg,whiteboard #2); #ref(2013.11.21-3.jpg,left,noimg,whiteboard #3); #ref(2013.11.21-4.jpg,left,noimg,whiteboard #4); #ref(2013.11.21-5.jpg,left,noimg,whiteboard #5); ** &color(green){[lecture #11]}; 2013.11.28 Robust stabilization of inverted pendulum [#qa2b64c0] - plant model for perturbed unstable poles - LFT(Linear Fractional Transformation) - a simple example - inverted pendulum (penddemo.m) - design example - references: --[[How to control objects>/:~kobayasi/easttimor/2009/index.html]] to design, to simulate and to experiment control system by using MATLAB/Simulink with an application of Inverted Pendulum ---[[stabilization of 1-link inverted pendulum>/:~kobayasi/easttimor/2009/ex/1link.html]] --[[情報処理演習および考究 II MATLAB コース ホームページ (2005)>/:~kobayasi/i/Matlab/ex/index.html]] (in Japanese) ---[[倒立振子の安定化>/:~kobayasi/i/Matlab/ex/1link.html]] (in Japanese) #ref(ex1128_1.m); #ref(mod1128_1.mdl); #ref(2013.11.28-1.jpg,left,noimg,whiteboard #1); #ref(2013.11.28-2.jpg,left,noimg,whiteboard #2); #ref(2013.11.28-3.jpg,left,noimg,whiteboard #3); #ref(2013.11.28-4.jpg,left,noimg,whiteboard #4); //#ref(ex_penddemo.m); //#ref(mod_penddemo.mdl); ** &color(green){[lecture #12]}; 2013.12.5 Robust control design for a practical system : Active vibration control of a pendulum using linear motor (1/3) [#g60eadfe] - review of report #2 - introduction of experimental setup #ref(photo1.jpg,left,noimg,photo1); #ref(photo2.jpg,left,noimg,photo2); #ref(photo3.jpg,left,noimg,photo3); #ref(photo4.jpg,left,noimg,photo4); #ref(photo5.jpg,left,noimg,photo5); -- linear motor : Oriental motor EZC4D005M-A / stepping motor, 0.01mm = 1pulse, stroke 50mm (= 5000 pulse), thrust 70N, speed(max)600mm/s (but used as 400mm/s max with pulse_module.c which generates a pulse every 25us) -- Potentio meter : Midori Precisions Model QP-2H / input:5V, output:0-4.17V for 90 deg (experimentally measured) -- PC : Dell PowerEdge840 (RTAI3.6.1/Linux kernel 2.6.20.21) -- Parallel input and output board : CONTEC PIO-32/32T(PCI) / 32bit 200ns (connected to linear motor) -- A/D : CONTEC AD12-16 (PCI) 12bit, 10us - Objective of control system ++ to attenuate vibration due to pendulum oscillation ++ robust stability against modelling error due to plant variation and non-linear dynamics etc. - physical model - frequency response experiment #ref(freqresp.m); #ref(frdata_0_2.dat); #ref(frdata_0_3.dat); #ref(frdata_0_4.dat); #ref(2013.12.5-1.jpg,left,noimg,whiteboard #1); #ref(2013.12.5-2.jpg,left,noimg,whiteboard #2); #ref(2013.12.5-3.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #13]}; 2013.12.12 Robust control design for a practical system : Active vibration control of a pendulum using linear motor (2/3) [#b6f2d69a] - mini exam #2 - pendulum No.2 ... l = 8.5cm #ref(pendulum2.jpg,left,noimg); due to the difficulty of the inverted and short pendulum, the control target has been changed to an non-inverted and longer pendulum (I'm sorry) - modelling based on frequency response experiment #ref(frdata_0.5mm.dat); #ref(freqresp_fixed.m); - control objective - design example 1 : proportional control -- negative feedback always stabilizes the closed loop theoretically #ref(check_pcont.m); -- control experiment #ref(cont_P.dat,,,`cont.dat' file for P control); #ref(cont_P_order.dat,,,`cont_order.dat' file for P control); #ref(result_P.dat); #ref(result_openloop.dat); #ref(openloop.mp4); #ref(ex1.mp4); - design example 2 : H infinity control (nominal performance, physical model is used as nominal plant) -- m-files #ref(weight_ex2.m); #ref(cont_ex2.m); >> weight_ex2 >> cont_ex2 -- control experiment #ref(cont_ex2.dat,,,`cont.dat' file for ex2); #ref(cont_ex2_order.dat,,,`cont_order.dat' file for ex2); #ref(cont_ex2.mat,,,`cont.mat' file for ex2); #ref(result_ex2.dat); - design example 3 : H infinity control (nominal performance, nominal plant is derived from freq. resp. exp.) -- m-files #ref(nominal_ex3.m); ... &size(25){&color(red){n4sid is not available IPC! (19 Dec.)};}; #ref(weight_ex3.m); #ref(cont_ex3.m); >> nominal_ex3 >> weight_ex3 >> cont_ex3 -- control experiment #ref(cont_ex3.dat,,,`cont.dat' file for ex3); #ref(cont_ex3_order.dat,,,`cont_order.dat' file for ex3); #ref(cont_ex3.mat,,,`cont.mat' file for ex3); #ref(result_ex3.dat); #ref(ex3.mp4); - design example 4 : H infinity control (robust performance) -- m-files #ref(weight_ex4.m); #ref(cont_ex4.m); >> weight_ex4 >> cont_ex4 -- control experiment #ref(cont_ex4.dat,,,`cont.dat' file for ex4); #ref(cont_ex4_order.dat,,,`cont_order.dat' file for ex4); #ref(cont_ex4.mat,,,`cont.mat' file for ex4); #ref(result_ex4.dat); #ref(ex4.mp4); - summary of design examples : comparison of designed controllers #ref(compare.m) - report +design your controller(s) so that the system performance is improved compared with the design &size(25){%% example 3 (ex3) %% &color(red){example 2 (ex2)};}; +Draw the following figures and explain the difference between two control systems &color(red){(your controller and &size(25){%%ex3%% ex2};)};: ++bode diagram of controllers ++gain characteristic of closed-loop systems ++time response of control experiment +Why is the performance of your system improved(or unfortunately decreased)? --&size(30){&color(red){due date: 31th(Tue) Dec 17:00};}; --submit your report(pdf or doc) by e-mail to kobayasi@nagaokaut.ac.jp --You can use Japanese --maximum controller order is 20 --submit your &size(25){&color(red){cont.dat, cont_order.dat, and cont.mat};}; to kobayasi@nagaokaut.ac.jp &size(30){&color(red){not later than 26th(Thu) Dec};}; - program sources for frequency response experiment #ref(freqresp.h) #ref(freqresp_module.c) #ref(freqresp_app.c) -- format of frdata.dat file --- 1st column: frequency (Hz) --- 2nd column: gain --- 3rd column: phase (deg) - program sources for control experiment #ref(hinf.h) #ref(hinf_module.c) #ref(hinf_app.c) -- format of result.dat file --- 1st column: time (s) --- 2nd column: potentio meter's output (V) --- 3rd column: theta (rad) --- 4th column: x (m) --- 5th column: reference position for linear motor (number of pulse) -program sources for generating linear motor's pulse #ref(pulse.h); #ref(pulse_module.c); -common header #ref(common.h); #ref(2013.12.12-1.jpg,left,noimg,whiteboard #1); #ref(2013.12.12-2.jpg,left,noimg,whiteboard #2); #ref(2013.12.12-3.jpg,left,noimg,whiteboard #3); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // &color(black,red){&size(20){#################### the remaining page is under construction ###################};}; ** &color(green){[lecture #14]}; 2013.12.19 Robust control design for a practical system : Active vibration control of a pendulum using linear motor (3/3) [#n066ab5d] - review of the design examples &color(red){&size(25){[IMPORTANT] Due to unavailability of n4sid in IPC which is used in cont_ex3.m, please compare your controller and example 2 (not 3) in your report.}; The explanation of the report has been modified due to this change. See above.}; - preparation of your own controller(s) [[participant list2013]] freqresp_fixed frdata check_pcont weight_ex2 freqresp_fixed weight_ex2 cont_ex2 nominal_ex3 weight_ex4 cont_ex4 compare #ref(2013.12.19-1.jpg,left,noimg,whiteboard #1); #ref(2013.12.19-2.jpg,left,noimg,whiteboard #2); ** &color(green){[lecture #15]}; 2013.12.26 Robust control design for a practical system : Active vibration control of a pendulum using linear motor (cont.) [#sfeed31c] -preparation of your own controller(s) //**related links [#g1a68a2b] //-東ティモール工学部復興支援/support of rehabilitation for faculty of eng. National University of Timor-Leste //--[[How to control objects>/:~kobayasi/easttimor/2009/index.html]] to design, to simulate and to experiment control system by using MATLAB/Simulink with an application of Inverted Pendulum //--[[Prof. Kimura's page>http://sessyu.nagaokaut.ac.jp/~kimuralab/index.php?%C0%A9%B8%E6%B9%A9%B3%D8%C6%C3%CF%C0]]