*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 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ &color(black,red){&size(20){#################### the remaining page is under construction ###################};}; %-- 10/11/2012 12:56 PM --% ex1011_1 ex1011_2 ex1011_3 mod1011 ex1011_1 P ex1011_2 1i j j = 2 1i = 2 ex1011_3 mod1011 c = 0.8 c = 1.2 c = 1.3 c = 2 #ref(2012.10.11-1.jpg,left,noimg,whiteboard #1); #ref(2012.10.11-2.jpg,left,noimg,whiteboard #2); #ref(2012.10.11-3.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #6]}; 2012.10.18 Introduction to Robust Control (cont.) [#kfa23202] + review -- robust stabilization ... ||WT T||_inf < 1 (for multiplicative uncertainty) -- performance optimization ... ||WS S||_inf < gamma -> min -- mixed sensitivity problem gives &color(red){a sufficient condition}; such that both conditions hold ... nominal (not robust) performance problem // + proof of small gain theorem ... Nyquist stability criterion + mixed sensitivity problem -- the sufficient condition -- exercise #ref(ex1018_1.m); #ref(ex1018_1_ans.m); #ref(mod1018.mdl); %-- 10/18/2012 12:56 PM --% mod1018 ex1018_1 input_to_P0 WT WSgam systemnames ex1018_1 G ex1018_1 #ref(2012.10.18-1.jpg,left,noimg,whiteboard #1); #ref(2012.10.18-2.jpg,left,noimg,whiteboard #2); #ref(2012.10.18-3.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #7]}; 2012.10.25 singular value decomposition(SVD) [#v3874954] - review of mixed sensitivity problem - definition of SVD and maximum singular value %-- 10/25/2012 1:27 PM --% A = [1, 2, 3; 4, 5, 6] [U, Sigma, V] = svd(A) U*U' U'*U V'*V [U, Sigma, V] = svd(A') A = [1, 2, 3; 4, 5, 1i] [U, Sigma, V] = svd(A) #ref(2012.10.25-1.jpg,left,noimg,whiteboard #1); #ref(2012.10.25-2.jpg,left,noimg,whiteboard #2); #ref(2012.10.25-3.jpg,left,noimg,whiteboard #3); #ref(2012.10.25-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #8]}; 2012.11.1 Robust performance problem [#e4893dbc] - review of the proof - nominal and robust performance (motivation of robust performance problem) -- setting for P0 and WT #ref(ex1101_1.m); -- controller design with mixed sensitivity problem #ref(ex1101_2.m); -- robust performance is not satisfied #ref(ex1101_3.m); - %%how to tackle with the robust performance problem (a conservative design with H infinity control problem)%% //#ref(ex1101_4.m); - %%less conservative design with scaled H infinity control problem%% //#ref(ex1101_5.m); %-- 11/1/2012 1:37 PM --% ex1101_1 ex1101_2 K ex1101_2 ex1101_3 #ref(2012.11.01-1.jpg,left,noimg,whiteboard #1); #ref(2012.11.01-2.jpg,left,noimg,whiteboard #2); ** &color(green){[lecture #9]}; 2012.11.8 Robust performance problem (cont.) [#w1002562] - review: mixed sensitivity problem = robust stability + nominal performance(not robust performance) - how to tackle with the robust performance problem ++ introduction of a fictitious uncertainty ++ the maximum singular value of block diagonal matrices is less than or equal to 1 ---> a conservative design with H infinity control problem #ref(ex1101_4.m); ++ intruduction of scalling matrix ---> less conservative design with scaled H infinity control problem #ref(ex1101_5.m); %-- 11/8/2012 1:29 PM --% ex1101_4 ex1101_1 ex1101_2 ex1101_3 ex1101_4 ex1101_5 #ref(2012.11.08-1.jpg,left,noimg,whiteboard #1); #ref(2012.11.08-2.jpg,left,noimg,whiteboard #2); #ref(2012.11.08-3.jpg,left,noimg,whiteboard #3); #ref(2012.11.08-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #10]}; 2012.11.15 Robust performance problem (cont.) [#d51591df] - review of scaled H infinity control problem ++ ex1101_4.m, ex1101_5.m ... What does the designed result mean ? ++ How was the class of scaling determined ? ++ effect of scaling on closed-loop H infinity norm ... motivation of scaling %-- 11/15/2012 1:08 PM --% ex1101_1 ex1101_2 ex1101_3 ex1101_4 ex1101_5 -13/20 10**-0.65 10^-0.65 ex1101_4 K ex1101_4 ex1101_5 gam K d gam K sigma(mdiag(1,1/gam)*lft(G,K)) sigma(mdiag(1/d,1/gam)*lft(G,K)*mdiag(d,1),'r') sigma(mdiag(1,1/gam)*lft(G,K)) hold on sigma(mdiag(1/d,1/gam)*lft(G,K)*mdiag(d,1),'r') #ref(2012.11.15-1.jpg,left,noimg,whiteboard #1); #ref(2012.11.15-2.jpg,left,noimg,whiteboard #2); #ref(2012.11.15-3.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #11]}; 2012.11.22 will be given by Prof. Kimura [#b3bcf006] ** &color(green){[lecture #12]}; 2012.11.29 will be given by Prof. Kimura [#l3bcde04] ** &color(green){[lecture #13]}; 2012.12.6 Robust control design for a practical system (1/3) : Active vibration control of a pendulum using linear motor (loudspeaker) [#ucd0105e] &color(red){some mistakes fixed on 2012.12.13}; [#w0e25ce2] - 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 : FOSTEX &color(red){FW-};208N (corn, edge, and damper are partially removed to decrease damping) -- PSD(Position Sensitive Detector) : Hamamatsu Photonics Corp. C3683-01 -- Potentio meter : Midori Precisions Model QP-2H -- PC : Dell Dimension 2400 (Intel Celeron 2.4G, Linux 2.4.22, RTlinux-3.2pre3) -- D/A : CONTEC DA12-4 (PCI) 12bit, 10us -- A/D : CONTEC AD12-16 (PCI) 12bit, 10us -- He-Ne Laser : NEC GLG5230 - Objective for control system design ++ to attenuate vibration due to pendulum oscillation ++ robust stability against modelling error due to non-linear dinamics etc. - Modelling -- frequency response experiment results: #ref(frdata_amp005.dat); #ref(frdata_amp010.dat); #ref(frdata_amp020.dat); &color(red){due to some change on experimental apparatus, please use following data as frequency response experimental results (2012.12.13)}; #ref(frdata_amp005_1st.dat); #ref(frdata_amp010_1st.dat); #ref(frdata_amp020_1st.dat); #ref(frdata_amp005_2nd.dat); #ref(frdata_amp005_3rd.dat); #ref(frdata_amp005_4th.dat); -- example of m-files &color(red){(the following files have been replaced by modified ones (2012.12.13)}; #ref(freqresp.m) #ref(nominal.m) #ref(weight.m); >> freqresp >> nominal >> weight - Controller design (robust performance problem) -- example of m-file #ref(cont.m) >> cont -- design example #ref(cont.dat) #ref(cont_order.dat) #ref(cont.mat) #ref(result.dat) #ref(result_no.dat) -- example of m-file to compare designed controllers #ref(compare.m) - report +design your controller(s) so that the system performance is improved compared with the given example above +Draw the following figures and explain the difference between two control systems &color(red){(your controller and the example above)};: ++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: 27th(Thu) 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 cont.dat, cont_order.dat, and cont.mat to kobayasi@nagaokaut.ac.jp &size(30){&color(red){not later than %%21th(Fri)%% 25th(Tue) 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) --- 4th column: gain --- 5th 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: PSD output (V) --- 3rd column: Potentio meter output (V) --- 4th column: control input (V) --- 5th column: input disturbance (V) - configuration of control experiment -- input disturbance is given as described in hinf_module.c: if(t < 0.1){ w = DIST_AMP; }else{ w = 0; } da_conv(V_OFFSET + w, 0); // D/A output for linear motor freqresp nominal help n4sid load result.dat load result_no.dat plot(result(:,1),result(:,3),'r',result_no(:,1),result_no(:,2),'g') plot(result(:,1),result(:,3),'r',result_no(:,1),result_no(:,3),'g') #ref(2012.12.06-1.jpg,left,noimg,whiteboard #1); #ref(2012.12.06-2.jpg,left,noimg,whiteboard #2); &color(red){... please use the potentio meter output as the measured output instead the PSD output (2012.12.13)}; #ref(2012.12.06-3.jpg,left,noimg,whiteboard #3); #ref(2012.12.06-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #14]}; 2012.12.13 Robust control design for a practical system (2/3) [#ke2d6da6] &size(20){&color(red){IMPOTANT};:due to some change on experimental apparatus, &color(red){please use the potentio meter output as the measured output}; instead of the PSD output. Moreover, some files have been re-uploaded due to this change. See previous links.}; -explanation of design example (cont. from the previous lecture) -preparation of your own controller(s) %-- 12/13/2012 12:59 PM --% freqresp pwd freqresp nominal P0 weight cont compare load result.dat plot(result(:,1),result(:,3)); load result_no.dat plot(result_no(:,1),result_no(:,3),'b',result(:,1),result(:,3),'r'); plot(result_no(:,1),result_no(:,2),'b',result(:,1),result(:,2),'r'); plot(result_no(:,1),result_no(:,4),'b',result(:,1),result(:,4),'r'); #ref(2012.12.13-1.jpg,left,noimg,whiteboard #3); ** &color(green){[lecture #15]}; 2012.12.20 Robust control design for a practical system (3/3) [#vb924552] -preparation of your own controller(s) #ref(load_frdata.m) [[participant list2012]] **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]]