[[授業]] *Advanced Automation [#we2e9bed] ** &color(green){[]}; 2014.9.4 cancelled [#n7818221] ** &color(green){[lecture #1]}; 2014.9.11 outline of the lecture, review of classical and modern control theory (1/3) [#z238c276] - outline of this lecture -- syllabus -- evaluation --- mini report #1 ... 10% --- mini exam #1 ... 10% --- mini report #2 ... 10% --- mini exam #2 ... 10% --- final report ... 60% -- map #ref(map_v1.0_review.pdf); - review -- equation of motion -- transfer function -- state space representation -- eigenvalue and pole #ref(2014.09.11-1.jpg,left,noimg,whiteboard #1); #ref(2014.09.11-2.jpg,left,noimg,whiteboard #2); #ref(2014.09.11-3.jpg,left,noimg,whiteboard #3); #ref(2014.09.11-4.jpg,left,noimg,whiteboard #4); #ref(2014.09.11-5.jpg,left,noimg,whiteboard #5); #ref(2014.09.11-6.jpg,left,noimg,whiteboard #6); ** &color(green){[lecture #2]}; 2014.9.18 CACSD introduction with review of classical and modern control theory (2/3) [#b977e2f2] + introduction of Matlab and Simulink &ref(text_fixed.pdf); Basic usage of MATLAB and Simulink 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'); T1 = 1 / (s+1); T2 = 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; S3 = ss(A, B, C, D); -- Bode plot bode(T1, 'b-', T2, 'g', S3, 'r--'); grid on; // + open-loop stability can be checked by // ++ &color(black,cyan){poles of TF}; roots(T2.den{:}) ++ &color(black,lightgreen){eigenvalues of A-matrix in SSR}; eig(S3.a) ++ also by simulation #ref(mod0918_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(mod0918_2.mdl); %-- 9/18/2014 1:06 PM --% t = [1 2 3] u = [1;2;3] V = [1 2 3; 4 5 6; 7 8 9] t' t'*t who k=0:0.1:10: k=0:0.1:10; y = sin(k); whos plot(x,y) plot(k,y) foo print -djpeg sin.jpg s = tf('s'); T1 = 1/(s+1) T2 = 1/(s^2+0.1*s+1); A = [-0.3, -1; 1, 0]; B = [1; 0]; C = [0, 1]; D = 0; S3 = ss(A, B, C, D); A B S3 bode(T1, 'b-', T2, 'g', S3, 'r--'); grid on; T2 T3 = tf(S3); T3 T2 T2.num T2.num{:} T2.den{:} roots(T2.den{:}) S3 S3.a eig(S3.a) mod0918_1 bode(T1, 'b-', T2, 'g', S3, 'r--'); grid on; roots(L.den{:}) L L = 1/(s^3+1.5*s^2+1.5*s+1); L roots(L.den{:}) nyquist(L) bode(L) grid on nyquist(L) L clp_den = L.den{:} + L.num{:}; clp_den roots(clp_den) mod0918_2 #ref(2014.09.18-1.jpg,left,noimg,whiteboard #1); #ref(2014.09.18-2.jpg,left,noimg,whiteboard #2); ** &color(green){[lecture #3]}; 2014.9.25 CACSD introduction with review of classical and modern control theory (3/3) [#u1cf67cc] + LQR problem -- controllability -- cost function J >= 0 -- (semi)-positive definiteness + solution of LQR problem -- ARE and quadratic equation -- closed loop stability ... Lyapunov criterion -- Jmin &ref(proof4.pdf); (from B%%4%%3「動的システムの解析と制御」) + example &ref(mod0925.mdl); A = [1, 2; 0, -1]; % unstable plant B = [0; 1]; Uc = ctrb(A,B); det(Uc) % should be nonzero C = eye(2); % dummy D = zeros(2,1); % dummy F = [0, 0]; % without control x0 = [1; 1]; % initial state Q = eye(2); R = 1; P = are(A, B/R*B', Q); P-P' % should be zero eig(P) % should be positive F = R\B'*P; %-- 9/25/2014 2:17 PM --% A = [1, 2; 0, -1]; % unstable plant B = [0; 1]; Uc = ctrb(A,B); Uc det(Uc)] det(Uc) C = eye(2); % dummy D = zeros(2,1); % dummy F = [0, 0]; % without control x0 = [1; 1]; % initial state mod0925 Q = eye(2); R = 1; P = are(A, B/R*B', Q); P-P' % should be zero eig(P) % should be positive F = R\B'*P; F J x0 x0'*P*x0 &ref(2014.09.25-1.jpg,left,noimg,whiteboard #1); ... sorry for the mistake in Uc ! The correct one is \[ U_c := \left[\begin{array}{ccccc} B & AB & A^2 B & \cdots & A^{n-1} B \end{array}\right] \] #ref(2014.09.25-2.jpg,left,noimg,whiteboard #2); #ref(2014.09.25-3.jpg,left,noimg,whiteboard #3); #ref(2014.09.25-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #4]}; 2014.10.2 Intro. to robust control theory (H infinity control theory) 1/3 [#d73502ce] + review &ref(map_v1.0_intro1.pdf); ++ advantage and disadvantage of the modern control theory ++ explicit consideration of plant uncertainty ---> robust control theory // + Typical design problems of H infinity control theory ++ 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 // + performance optimization example : reference tracking problem -- relation to the sensitivity function S(s) (S(s) -> 0 is desired but impossible) -- given control system &ref(ex1002_1.m); -- controller design with H infinity control theory &ref(ex1002_2.m); %-- 10/2/2014 12:57 PM --% ex1002_1 ex1002_2 s = tf('s') T1 = 1/(s+1) norm(T1,inf) T2 = s/(s+1) norm(T2,inf) bode(T1) T3 = 10/(s+2) bode(T3) ex1002_1 ex1002_2 K K_hinf ex1002_2 eig(K_hinf.a) #ref(2014.10.02-1.jpg,left,noimg,whiteboard #1); #ref(2014.10.02-2.jpg,left,noimg,whiteboard #2); #ref(2014.10.02-3.jpg,left,noimg,whiteboard #3); #ref(2014.10.02-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #5]}; 2014.10.09 Intro. to Robust Control Theory (H infinity control theory) 2/3 [#pbd554d4] - review &ref(map_v1.0_intro2.pdf); - schedule of mini report and exam #1 + 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(ex1009_1.m) -- how to use uncertainty model (multiplicative uncertainty model) #ref(ex1009_2.m) -- how to set generalized plant G ? #ref(ex1009_3.m) -- simulation #ref(mod1009.mdl) %-- 10/9/2014 1:01 PM --% ex1009_1 ex1009_2 ex1009_3 mod1009 c #ref(2014.10.09-1.jpg,left,noimg,whiteboard #1); #ref(2014.10.09-2.jpg,left,noimg,whiteboard #2); #ref(2014.10.09-3.jpg,left,noimg,whiteboard #3); #ref(2014.10.09-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #6]}; 2014.10.16 Intro. to robust control theory (H infinity control theory) (3/3) [#g6834f91] + 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 -- write by hand -- submit at the beginning of next lecture on 23 Oct. -- check if your answer is correct or not before submission by using Matlab -- You will have a mini exam #1 related to this report on 30 Oct. + meaning of singular value ... singular value decomposition (SVD) + proof of (*) + example #ref(ex1016.m); %-- 10/16/2014 1:00 PM --% M = [j, 0; -j, 1] M svd(M) sqrt((3+sqrt(5))/2) M' M'*M ex1016 #ref(2014.10.16-1.jpg,left,noimg,whiteboard #1); #ref(2014.10.16-2.jpg,left,noimg,whiteboard #2); #ref(2014.10.16-3.jpg,left,noimg,whiteboard #3); #ref(2014.10.16-4.jpg,left,noimg,whiteboard #4); #ref(2014.10.16-5.jpg,left,noimg,whiteboard #5); #ref(2014.10.16-6.jpg,left,noimg,whiteboard #6); ** &color(green){[lecture #7]}; 2014.10.23 review of SVD, robust performance problem 1/3 (motivation of robust performance) [#d3dac11c] - submission of mini report #1 - review of SVD : graphical image and rotation matrix for 2-by-2 real matrix case #ref(ex1023_1.m); - motivation of robust performance : nominal performance to robust performance #ref(ex1023_2.m); #ref(ex1023_3.m); %-- 10/23/2014 12:58 PM --% ex1023_1 A S V V'*V V'*V(:,1) ex1009_1 ex1009_2 ex1023_2 ex1023_3 #ref(2014.10.23-1.jpg,left,noimg,whiteboard #1); #ref(2014.10.23-2.jpg,left,noimg,whiteboard #2); #ref(2014.10.23-3.jpg,left,noimg,whiteboard #3); -Q1: Is H infinity control theory available for discrete-time system ? -A1: The answer is yes. You can use the same tool hinfsyn in Matlab to design discrete-time controller. If the question is to ask how to implement digital (discrete-time) controller for given continuous-time plant, there are 3 ways to do this: (i) continuous-time H infinity control based design (continuous-time controller is designed, then it is discretized); (ii) discretized H infinity control design (continuous-time plant is discretized first, then discrete-time controller is designed); (iii) sampled-data H infinity control design (discrete-time controller is directly designed for continuous-time plant) ** &color(green){[lecture #8]}; 2014.10.30 Robust performance problem (2/3) [#z50bb5a3] + return of mini report #1 + review of the limitation of mixed sensitivity problem + diffinition of robust performance (R.P.) problem (cf. nominal performance problem on white board #6 in photo #4 of lecture #4) ... S is changed to S~ + review of robust stability (R.S.) problem on white board #5 in photo #5 of lecture #3 ... robust stability against Delta <=> closed-loop system without Delta has less-than-or-equal-to-one H infinity norm (by small gain theorem) + equivalent R.P. problem with structured uncertainty Delta_hat + a conservative problem to R.P. with 2-by-2 unstructured uncertainty Delta_tilde -- example based on the one given in the last lecture #ref(ex1030_1.m); -- a check of the conservativeness #ref(ex1030_2.m); + Delta_tilde is larger set than Delta_hat ... conservativeness + mini exam #1 &ref(exam1.pdf); %-- 10/30/2014 1:10 PM --% ex1023_2 ex1023_3 gam_opt ex1030_1 gam_opt #ref(2014.10.30-1.jpg,left,noimg,whiteboard #1); #ref(2014.10.30-2.jpg,left,noimg,whiteboard #2); #ref(2014.10.30-3.jpg,left,noimg,whiteboard #3); #ref(2014.10.30-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #9]}; 2014.11.13 Robust performance problem (3/3) [#y1331d96] - return of mini exam #1 - review - inclusion relation of two uncertain set (structured and non-structured) - scaled H infinity control problem - effect of scaling matrix - how to determine structure of scaling matrix - example #ref(ex1113_1.m); #ref(ex1113_2.m); - %%mini report #2%% %-- 11/13/2014 12:58 PM --% ex1023_2 gam_opt ex1023_3 ex1030_1 gam_opt ex1113 ex1113_1 gam_opt ex1113_2 #ref(2014.11.13-1.jpg,left,noimg,whiteboard #1); #ref(2014.11.13-2.jpg,left,noimg,whiteboard #2); #ref(2014.11.13-3.jpg,left,noimg,whiteboard #3); #ref(2014.11.13-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #10]}; 2014.11.20 Robust performance problem (1/3) (cont.) [#uecb44ef] - review - effect of scaling - mini report #2 -- write by hand -- submit at the beginning of next lecture on 27 Nov. -- check if your answer is correct or not before submission by using Matlab -- You will have a mini exam #2 related to this report on 4 Dec. - how to obtain generalized plant by hand - %%example: H infinity controller design by hand%% %-- 11/20/2014 1:11 PM --% ex1023_2 ex1023_3 ex1030_1 ex1030_2 k ex1113_1 ex1113_2 k Delta_hat #ref(2014.11.20-1.jpg,left,noimg,whiteboard #1); #ref(2014.11.20-2.jpg,left,noimg,whiteboard #2); #ref(2014.11.20-3.jpg,left,noimg,whiteboard #3); #ref(2014.11.20-4.jpg,left,noimg,whiteboard #4); ** &color(green){[lecture #11]}; 2014.11.27 relation between H infinity control and modern control theory [#p5cdaaf2] - mini report #2 submit - outline -- state-feedback H infinity control and LQR -- output-feedback H infinity control and LQG - simple example - find controller by hand <---> ans. by hinfsyn &ref(ex1127.m); - relation to LQR - H infinity norm = L2 induced norm - how to construct the worst case input ? &ref(mod1127.mdl); - general case &ref(J_hinf.pdf); %-- 11/27/2014 1:51 PM --% ex1127 1/sqrt(2) ex1127 2*(sqrt(2)-1) mod1127 x0 = 0 h = 1 f = 1 zz ww #ref(2014.11.27-1.jpg,left,noimg,whiteboard #1); #ref(2014.11.27-2.jpg,left,noimg,whiteboard #2); #ref(2014.11.27-3.jpg,left,noimg,whiteboard #3); -Q: \[ \dot x, z \] の導出過程(ホワイトボード◯2)がわからなかった -A: \[ \left[ \begin{array}{c} w \\ u \end{array} \right], \left[ \begin{array}{c} z \\ y \end{array} \right] \] をそれぞれ入力、出力とする一般化プラント \[ G = \left[ \begin{array}{c|c} A & B \\ \hline C & D \end{array} \right] \] に対して、次式が成り立ちます。 \[ \dot x = A x + B \left[ \begin{array}{c} w \\ u \end{array} \right] \] \[ \left[ \begin{array}{c} z \\ y \end{array} \right] = C x + D \left[ \begin{array}{c} w \\ u \end{array} \right] \] ただし、x は G の状態で、 \[ A = a = -1, \quad B = \left[ \begin{array}{cc} 1 & b \end{array} \right] = \left[ \begin{array}{cc} 1 & 1 \end{array} \right], \quad C = \left[ \begin{array}{c} \sqrt{q} \\ 0 \\ 1 \end{array} \right] = \left[ \begin{array}{c} 1 \\ 0 \\ 1 \end{array} \right], \quad D = \left[ \begin{array}{cc} 0 & 0 \\ 0 & \sqrt{r} \\ 0 & 0 \end{array} \right] = \left[ \begin{array}{cc} 0 & 0 \\ 0 & 1 \\ 0 & 0 \end{array} \right] \] です。状態空間表現の表記によります。これと、u = -f x より、導出されます。 ** &color(green){[lecture #12]}; 2014.12.4 relation between H infinity control and modern control theory (cont.); %%Speed control of two inertia system with servo motor (1/4)%% [#c8305e92] - return of mini report #2 - contents for the last lecture - %%speed control of two inertia system with servo motor%%&br; %%&ref(setup.pdf);%% - %%frequency response experiment and physical model of speed control system%%&br; %%&ref(ex1204_1.m);%%&br; %%&ref(ex1204_2.dat);%% - mini exam #2 %-- 12/4/2014 1:28 PM --% ex1127 mod1127 x0 = 0 h = 1 f = 1 ww zz h = 10 ww zz h = 50 zz h zz #ref(2014.12.4-1.jpg,left,noimg,whiteboard #1); #ref(2014.12.4-2.jpg,left,noimg,whiteboard #2); ** &color(green){[lecture #13]}; 2014.12.11 Robust control design for a practical system : Speed control of two inertia system with servo motor (1/3) [#q3906ee1] - return of mini exam #2 - introduction of experimental setup #ref(setup.pdf); #ref(photo1.jpg,left,noimg); - objective of control system ++ to reduce the tracking error of the driving motor against disturbance torque ++ robust stabilization against plant variation due to aging degradation - frequency response experiment and physical model of speed control system #ref(ex1211_1.m); #ref(ex1211_2.dat); #ref(ex1211_3.dat); #ref(ex1211_4.dat); - %%determination of nominal plant%%&br; %%&ref(ex1211_5.m);%% - %%determination of weighting function%%&br; %%&ref(ex1211_6.m);%% %-- 12/11/2014 1:24 PM --% ex1211_1 frdata frdata(:,1) P1_jw P1_g ex1211_1 #ref(2014.12.11-1.jpg,left,noimg,whiteboard #1); -Q: What is the inertia moment of the load disk ? -A: It is about 0.0002 (kg m^2) (60mm in diameter, 16mm in inner diameter, 20mm in thick, made by SS400) -Q: 周波数応答実験について、定常応答になるのにどのくらい待っているか?音が大きくなるのはゲインが高いから?周波数変化のきざみは? -A: 待ち時間は3秒です。音の発生源はよくわかりませんし、騒音計などで計測したこともありませんが、大きな音が聞こえるのは共振周波数付近です。周波数変化の刻みは常用対数で0.01です。以下に掲載するプログラムソースの freqresp.h 中で指定しています。 ** &color(green){[lecture #14]}; 2014.12.18 Robust control design for a practical system : Speed control of two inertia system with servo motor (2/3) [#z228b373] - design example //-- modeling based on frequency response experiment //- design example 1 : PI control //-- control experiment //#ref(cont_PI.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 -- m-files #ref(freqresp.m); #ref(nominal.m); #ref(weight.m); #ref(cont.m); #ref(perf.m); >> freqresp >> nominal >> weight >> cont >> perf -- control experiment ... see [[participant list2014]] - report +design your controller(s) so that the system performance is improved compared with the design 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 sensitivity function ++time response of control experiment +Why is the performance of your system improved(or unfortunately deteriorated)? --&size(30){&color(red){due date: 9th(Fri) Jan 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(Fri) Dec};}; - program sources for frequency response experiment #ref(freqresp.h) #ref(freqresp_module.c) #ref(freqresp_app.c) -- format of datafile --- 1st column ... frequency (Hz) --- 2nd column ... gain from T_M to omega_M --- 3rd column ... phase from T_M to omega_M --- 4th column ... gain from T_M to omega_L --- 5th column ... phase from T_M to omega_L - 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: omega_M (rad/s) --- 3rd column: T_M (Nm) --- 4th column: reference speed (rad/s) --- 5th column: T_L (Nm) - configuration of control experiment -- reference signal is generated as described in hinf_module.c: if((t > 1)&&(t < 4)){ r = 20.0; }else{ r = 10; } -- disturbance torque is specified as described in hinf_module.c: if((t > 2)&&(t < 3)){ d = -0.1; }else{ d = 0; } - calculation of rotational speed The rotational speed is approximately calculated by using difference for one sampling period in hinf_module.c and freqresp_module.c like: theta_rad = (double)read_theta(0) / (double)Pn212 * 2 * M_PI; speed_rad = (theta_rad - theta_rad_before) / msg->sampling_period; theta_rad_before = theta_rad where the sampling period is given as 0.25 ms. [[participant list2014]] %-- 12/18/2014 1:01 PM --% freqresp nominal help fitfrd weight cont help c2d perf #ref(2014.12.18-1.jpg,left,noimg,whiteboard #1); #ref(2014.12.18-2.jpg,left,noimg,whiteboard #2); //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ //&color(black,red){&size(20){!!! the remaining page is under construction (the contents below are from 2013) !!!};}; ** &color(green){[lecture #15]}; 2014.12.25 Robust control design for a practical system : Speed control of two inertia system with servo motor (3/3) [#b2861acd] -preparation of your own controller(s) %-- 12/25/2014 12:58 PM --% load cont.mat who K_opt who Kd who Ghat load result.dat plot(result(:,1), result(:,2)) plot(result(:,1), result(:,3)) who bode(K_opt) bode(Kd) Kd1 = Kd K_opt1 = K_opt load cont.mat bode(K_opt1, 'b', K_opt, 'r') bode(Kd1, 'b', Kd, 'r') Kd_tmp = c2d(K_opt1, 0.000001); bode(Kd1, 'b', Kd, 'r', Kd_tmp, 'm') clear all load cont.mat who bode(K_opt) K_example = K_opt; load cont.mat bode(K_example, 'b', K_opt, 'r') #ref(2014.12.25-1.jpg,left,noimg,whiteboard #1); #ref(2014.12.25-2.jpg,left,noimg,whiteboard #2); //**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]]