*Advanced Automation [#n6ab2895]

**2009.9.10 CACSD introduction [#pf7ea7ea]
** &color(green){[lecture #1]}; 2010.9.2 review of classical control theory (given by Prof. Kimura) [#m90cc73a]

** &color(green){[lecture #2]}; 2010.9.9 CACSD introduction [#pf7ea7ea]

- introduction of Matlab and Simulink
--[[Basic usage of MATLAB and Simulink>/:~kobayasi/easttimor/2009/text/text.pdf]]
--[[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

#ref(2010.9.9-1.jpg,left,noimg,whiteboard #1);
#ref(2010.9.9-2.jpg,left,noimg,whiteboard #2);

** &color(green){[lecture #3]}; 2010.9.16 CACSD introduction [#pf7ea7ea]

-review of clasical control theory
++ transfer function
++ state-space representation
++ Bode diagram
++ characteristics of 2nd-order system
++ Nyquist stability criterion
++ gain margin and phase margin
++ characteristic polynomial
++ poles and impulse response
-review of modern control theory
++ state-space representation

#ref(ex.m)
#ref(ex1.m)
#ref(mod1.mdl)
#ref(ex2.m)
#ref(ex3.m)
#ref(ex4.m)

**2009.9.17 Intro. to Robust Control [#m35d72cd]
-robust stability
- performance improvement
#ref(2010.9.16-1.jpg,left,noimg,whiteboard #1);
#ref(2010.9.16-2.jpg,left,noimg,whiteboard #2);

** &color(green){[lecture #4]}; 2010.9.30 Intro. to Robust Control [#m35d72cd]
- H infinity norm
++ robust stabilization
++ performance improvement

#ref(ex21.m)
#ref(ex22.m)

 s = tf('s')
 G = 1/(s+1)
 norm(G, 'inf')
 P = 1/(s^2 + 0.2*s + 1)
 K = 1
 nyquist(P*K)
 help impulse
 impulse(P)
 T = 1/(1 + P*K)
 impulse(T)
 sqrt(2)/(2*pi)
 1/ans
 step(T)
 ex21
 ex22

#ref(2010.9.30-1.jpg,left,noimg,whiteboard #1);
#ref(2010.9.30-2.jpg,left,noimg,whiteboard #2);
#ref(2010.9.30-3.jpg,left,noimg,whiteboard #3);

** &color(green){[lecture #5]}; 2010.10.7 Introduction to Robust Control (cont.) [#gfc16a3d]
- H infinity norm
++ robust stabilization <--
++ performance improvement

#ref(ex23.m)
#ref(ex24.m)
#ref(ex25.m)
#ref(mod2.mdl)

** 2009.10.15 norm, vector space, normed linear space [#ma3b796e]
#ref(2010.10.7-1.jpg,left,noimg,whiteboard #1);
#ref(2010.10.7-2.jpg,left,noimg,whiteboard #2);
#ref(2010.10.7-3.jpg,left,noimg,whiteboard #3);
#ref(2010.10.7-4.jpg,left,noimg,whiteboard #4);

** 2009.10.22 eigenvalue, eigenvector, singular value decomposition [#yfa0a4e4]
** &color(green){[lecture #6]}; 2010.10.14 norm, vector space, normed linear space [#ma3b796e]
- H infinity &color(red){norm}; ... {robust stabilization, performance improvement}
- norm
-- size of {number, signal, system}
-- defined on &color(red){vector space (linear space)};
--- ---> normed linear space
--- ... optimization 

** 2009.11.5 state space representation of connected system, state space representation of generalized plant for various control problem, mixed sensitivity problem [#be4365ec]
#ref(norm.pdf)

#ref(ex61.m)
#ref(2010.10.14-1.jpg,left,noimg,whiteboard #1);
#ref(2010.10.14-2.jpg,left,noimg,whiteboard #2);
#ref(2010.10.14-3.jpg,left,noimg,whiteboard #3);
#ref(2010.10.14-4.jpg,left,noimg,whiteboard #4);

** 2009.11.19 [#f4dc4852]
** &color(green){[lecture #7]}; 2010.10.21 eigenvalue, eigenvector, singular value decomposition [#yfa0a4e4]
- H infinity norm : scalar (SISO) ---> matrix (MIMO)
-- absolute value ---> maximum &color(red){singular value}; 
-- background: mixed sensitivity problem {robust stabilization and performance improvement are simultaneously considered}

#ref(rub2.m)
... generalized  plant is described by hand
#ref(rub.m) 
... function sysic() is used to obtain generalized plant
#ref(norm2.pdf)

simulink model
#ref(simurub.mdl)
 A = [2, 1; 0, 1]
 [X, L] = eig(A)
 X*L/X - A
 [U, S, V] = svd(A)
 U*U'
 V*V'
 U*S*V'
 U*S*V' - A
 sqrt(eig(A'*A))
 S

simulink model for noise problem
#ref(simurub_noise.mdl)
#ref(2010.10.21-1.jpg,left,noimg,whiteboard #1);
#ref(2010.10.21-2.jpg,left,noimg,whiteboard #2);
#ref(2010.10.21-3.jpg,left,noimg,whiteboard #3);
#ref(2010.10.21-4.jpg,left,noimg,whiteboard #4);
#ref(2010.10.21-5.jpg,left,noimg,whiteboard #5);

execution example for Matlab
 rub2
 size(Ap)
 size(Ap,1)
 size(Ap,2)
 M = zeros(3,2)
 size(M,1)
 size(M,2)
 gopt
 simulink
 simout
 plot(t, y)
 plot(t, y, 'r', t, r, 'b')
 figure(3);
 bodemag(S, 'r', gopt/WS, 'r--', T, 'b', gopt/WT, 'b--');
 ctrlpref
 bodemag(S, 'r', gopt/WS, 'r--', T, 'b', gopt/WT, 'b--');
 grid on
 ctrlpref
 figure(6);
 plot(t, y, 'r', t, r, 'b')
 grid on
 figure(7);
 bodemag(P0, 'r', K, 'b')
 grid on
 rub2
 grid on
 gopt
 plot(t, y, 'r', t, r, 'b')
 grid on
 simulink
 plot(t, y, 'r', t, r, 'b')
** &color(green){[lecture #8]}; 2010.10.28 state space representation of connected system, state space representation of generalized plant for various control problem, mixed sensitivity problem [#be4365ec]

#ref(2010.10.28-1.jpg,left,noimg,whiteboard #1);
#ref(2010.10.28-2.jpg,left,noimg,whiteboard #2);

#ref(ex26.m)

** &color(green){[lecture #9]}; 2010.11.4 robust control design example: Robust Control System Synthesis for Pneumatic Systems (given by Prof. Kimura) [#z86a8e2b]

see [[RubustControlOfPneumatic-e.pdf>http://sessyu.nagaokaut.ac.jp/~kimuralab/index.php?plugin=attach&refer=%C0%A9%B8%E6%B9%A9%B3%D8%C6%C3%CF%C0&openfile=RubustControlOfPneumatic-e.pdf]] in Prof. Kimura's homepage for detail 

#ref(2010.11.4-1.jpg,left,noimg,whiteboard #1);
#ref(2010.11.4-2.jpg,left,noimg,whiteboard #2);

** &color(green){[lecture #10]}; 2010.11.11 robust control design example (cont.) [#h2f8cc41]
+ Design H infinity controller with Eqs.(41)-(47) and generalized plant depicted in Fig.3 in the pdf file.
++ Confirm the following m-file for design:
#ref(pneum.m);
#ref(pneum_ans.m);
++ Derive the generalized plant by hand and correct the m-file. 
++ Run the m-file to find controller.
+ Simulation
#ref(simu_pneum.mdl);
#ref(simu_pneum_noise.mdl);

 simu_pneum
 plot(t, y, 'r', t, r, 'b');
 
 simu_pneum_noise
 plot(t, y, 'r', t, n, 'b')
 plot(t, y*10, 'r', t, n, 'b')
 plot(t, y, 'r', t, n, 'b')
 bodemag(P0, 'r', K, 'b')
 grid on
 bode(P0, 'r', K, 'b')
 grid on
 bode(P0, 'r', K, 'b', P0*K, 'm')
 grid on
 bode(P0, 'r', K, 'b', -P0*K, 'm')
 grid on
 size(K.a)
 size(WS.a)
 size(WT.a)
 size(P0.a)

** 2009.12.3 [#j7fbd803]
#ref(2010.11.11-1.jpg,left,noimg,whiteboard #1);
#ref(2010.11.11-2.jpg,left,noimg,whiteboard #2);

#ref(rub3.m)
** &color(green){[lecture #11]}; 2010.11.18 robust control design example (cont.) (given by  Prof. Kimura) [#r6404f9c]

#ref(rub4.m)
Exercise
+step response
+noise response (noise type: step, sinusoidal wave 1Hz, 50Hz, 500Hz)
+initial response (x(0) = [1;0;0])

** 2009.12.10 Speed control of two inertia system with servo motor (1/3) [#ucb6f027]
#ref(2010.11.18-1.jpg,left,noimg,whiteboard #1);

** &color(green){[lecture #12]}; 2010.11.25 Speed control of two inertia system with servo motor (1/3) [#ucb6f027]
- simulation (cont. from Nov.18)
- Problem setup
#ref(apparatus.pptx);
- Modelling (frequency response experiment)

#ref(2010.11.25-1.jpg,left,noimg,whiteboard #1);

** &color(green){[lecture #13]}; 2010.12.2 Speed control of two inertia system with servo motor (2/3) [#t3f1dacb]
- %%reduced-order controller design%% (will be given by Prof. Kimura using with the robust control design example)
#ref(2010.12.2-1.jpg,left,noimg,whiteboard #1);
#ref(2010.12.2-2.jpg,left,noimg,whiteboard #2);
- Problem setup
-- Objective for control system design
++ speed tracking
++ robust against inertia-load variation
#ref(setup.pdf)
- Modelling 
-- frequency response experiment results:
#ref(frdata_offset0_small.dat)
#ref(frdata_offset0_large.dat)
#ref(frdata_offset5_small.dat)
#ref(frdata_offset5_large.dat)
#ref(frdata_offset10_small.dat)
#ref(frdata_offset10_large.dat)
-- example of m-file
#ref(freqresp.m)
#ref(frdata_amp2_offset10.dat)
#ref(frdata_amp3_offset10.dat)
#ref(frdata_amp4_offset10.dat)
#ref(frdata_amp3_offset5.dat)
#ref(frdata_amp3_offset0.dat)
#ref(nominal.m)

** 2009.12.17 Speed control of two inertia system with servo motor (2/3) [#ce40f227]
- Controller design

- frequency response experiments are re-executed so that all data files have same frequency range. The format of data files are also changed. Use the following links instead those given in the previous lecture!:
#ref(freqresp_fixed.m)
#ref(frdata_amp2_offset10_fixed.dat)
#ref(frdata_amp3_offset10_fixed.dat)
#ref(frdata_amp4_offset10_fixed.dat)
#ref(frdata_amp3_offset5_fixed.dat)
#ref(frdata_amp3_offset0_fixed.dat)
#ref(frdata_amp10_offset20_fixed.dat)

-You can design controllers based on mixed sensitivity problem by executing the following m-files in the order:  
#ref(nominal_fixed.m)
#ref(weight.m)
#ref(weight.m);
 >> freqresp
 >> nominal
 >> weight
- Controller design (mixed sensitivity problem)
-- example of m-file
#ref(cont.m)
 >> cont
-- design example 1 (wt1 = 2*pi*50 is set in weight.m)
#ref(cont1.dat)
#ref(cont_order1.dat)
#ref(cont1.mat)
#ref(result_small1.dat)
#ref(result_large1.dat)
-- design example 2 (wt1 = 2*pi*20 is set in weight.m)
#ref(cont2.dat)
#ref(cont_order2.dat)
#ref(cont2.mat)
#ref(result_small2.dat)
#ref(result_large2.dat)
-- example of m-file to compare designed controllers
#ref(compare.m)

-example of results
#ref(cont.dat)
#ref(cont_order.dat)
#ref(result.dat)

-report
+design your controller so that the system performance is improved compared with the given example
- report
+design your controller 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:
++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)?
--due date: %%28th(Mon) Dec 17:00%% --> &color(red){&size(15){8th(Fri) Jan 2010};}; 
--submit your report by e-mail to kobayasi@nagaokaut.ac.jp(pdf or doc files is OK)
--&size(30){&color(red){due date: 28th(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 cont.dat and cont_order.dat to kobayasi@nagaokaut.ac.jp %%until 24th Dec%% --> &color(red){&size(15){8th(Fri) Jan 2010};};
--submit your cont.dat and cont_order.dat to kobayasi@nagaokaut.ac.jp &size(30){&color(red){not later than 24th Dec};};

&size(30){&color(black,red){2009.12.22 announcement to design controller};};

&size(20){&color(black,red){Please use LMI based H infinity control method instead of Riccati based method (default). Specifically, please use hinfsyn function in cont.m as follows:};};

 [K, clp, gopt] = hinfsyn(G, 1, 1, 'DISPLAY', 'on', 'METHOD', 'lmi')

&color(red){There were some numerical problems in the execution of cont.m last week: the gain characteristics of sensitivity(and complementary sensitivity) function was not bounded by the weighting function in the resultant figure as following:};
#ref(cont.png);

&color(red){You can also check if the design result is OK or not as following:};
 >> cont
 Test bounds:      0.0000 <  gamma  <=      0.9051 
 
   gamma    hamx_eig  xinf_eig  hamy_eig   yinf_eig   nrho_xy   p/f
     0.905   4.1e-03 -2.2e-08   1.5e-03   -1.9e-20    0.0674    p 
     0.453   4.1e-03# ********   1.5e-03   -3.8e-05# ********    f 
     0.679   4.1e-03# ********   1.5e-03   -1.5e-04# ********    f 
     0.792   4.1e-03 -2.2e-08   1.5e-03  -3.9e-04#   0.0031    f 
     0.849   4.1e-03 -2.2e-08   1.5e-03  -9.0e-04#   0.0064    f 
     0.877   4.1e-03 -2.2e-08   1.5e-03  -2.1e-03#   0.0138    f 
     0.891   4.1e-03 -2.2e-08   1.5e-03  -5.3e-03#   0.0343    f 
     0.898   4.1e-03 -2.2e-08   1.5e-03  -2.2e-02#   0.1384    f   
 
 Gamma value achieved:     0.9051
 >> norm(clp, 'inf')
 
 ans = 
 
     1.2593

&color(red){In the above result, the closed-loop H infinity norm were 0.9051 and 1.2593 by hinfsyn() and norm() functions, respectively.  This inconsistency implies that the design result might be incorrect since these two values of gamma should be the same.};



** 2009.12.24 Speed control of two inertia system with servo motor (3/3) [#g499f9db]
- Control experiment

[[participant list]]

#ref(cont_fixed.m)
#ref(cont_lmi.m)
#ref(compare.m)
#ref(load_cont_data.m)

** 2009.12.25 [#s10fc19f]
- 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 [sec]
-- 2nd column: motor speed [rad/sec] (measured output)
-- 3rd column: load speed [rad/sec]
-- 4th column: motor torque [Nm] (control input)
-- 5th column: reference speed [rad/sec]
-- format of result.dat file
--- 1st column: time (s)
--- 2nd column: motor speed (rad/s)
--- 3rd column: motor torque (Nm)
--- 4th column: reference speed (rad/s)
- configuration of control experiment
-- reference signal is generated as described in hinf_module.c: 
 if((t > 5)&&(t < 15)){
   r = 15.0;
 if((t > 3)&&(t < 7)){
   r = 10.0;
 }else{
   r = 5;
 }
-- 30% of rated torque is loaded from 10 to 12 sec as specifying in hinf_module.c:
 if((t > 10.)&&(t < 12.)){
   daconv(0, bit16_conv(torq_volt_conv(RATED_TORQ*-0.3)));
 }else{
   daconv(0, bit16_conv(torq_volt_conv(0)));
 }
-- two inertia-load discs (small and large) are used 

** 2009.12.28 [#m1b3e8f6]
- Difficulties of our plant: 
As motor speed is approximately calculated by using difference for one sampling period in hinf_module.c like
 thetaM_rad = (double)read_theta(1) / (double)Pn212 * 2 * M_PI;
 speedM_rad = (thetaM_rad - thetaM_rad_before) / msg->sampling_period;
 thetaM_rad_before = thetaM_rad
sampling period should not become too small.
On the other hand, sampling period should be chosen as small as possible so that desiged continuous-time controller could be closely implemented by its descretized version. 
Therefore, we have a dilemma to control our plant.
The sampling period 0.25 msec was chosen by traial and error so that noise in measured speed is not too large. 
The gain in high frequency range of continuous-time controller should be small enough for discretization.  

There are some ways to tackle the problem:
-- Use loose weight WT(s) (over estimate of modeling error in high frequency range as explained in Dec. 24.)
-- Loop shaping design procedure
-- sampled-data H infinity control design
-- Evaluate of control input u with a high pass filter
-- ...
** &color(green){[lecture #14]}; 2010.12.9 Speed control of two inertia system with servo motor (3/3) [#t3f1dacb]

The final option will be explained below:
Due to a dimension change of the driven shaft, frequency response experiment has been re-conducted. Please use the following fixed files instead of the ones introduced on the previous lecture.
 
-- frequency response experiment results:
#ref(frdata_offset5_small_fixed.dat)
#ref(frdata_offset5_large_fixed.dat)
#ref(frdata_offset10_small_fixed.dat)
#ref(frdata_offset10_large_fixed.dat)
-- example of m-file
#ref(freqresp_fixed.m)
#ref(nominal_fixed.m)
#ref(weight_fixed.m);
#ref(cont_fixed.m)
-- design example 1 (wt1 = 2*pi*20 is set in weight.m)
#ref(cont1_fixed.dat)
#ref(cont_order1_fixed.dat)
#ref(cont1_fixed.mat)
#ref(result_small1_fixed.dat)
#ref(result_large1_fixed.dat)
-- design example 2 (wt1 = 2*pi*5 is set in weight.m)
#ref(cont2_fixed.dat)
#ref(cont_order2_fixed.dat)
#ref(cont2_fixed.mat)
#ref(result_small2_fixed.dat)
#ref(result_large2_fixed.dat)

- [[Design example with evaluation of control input u]]
#ref(2010.12.9-1.jpg,left,noimg,whiteboard #1);


** &color(green){[lecture #15]}; 2010.12.16 Speed control of two inertia system with servo motor (cont.) [#u53e94d6]

-preparation of your own controller(s)

[[participant list2010]]

**related links [#c31aa7a5]
//-東ティモール工学部復興支援/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]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS