[[授業]]

//[[latest lecture>#j156dee6]]

** &color(green){[lecture #1]}; 2020.9.3 outline of the lecture, review of classical and modern control theory (1/3) [#k1f20901]

- outline of this lecture
-- syllabus([https://vos-lc-web01.nagaokaut.ac.jp/])
-- evaluation
--- mini report #1 ... 10%
--- mini exam #1 ... 10%
--- mini report #2 ... 10%
--- mini exam #2 ... 10%
--- final report ... 60%
-- [[schedule2020]] (tentative)
-- map &ref(授業/制御工学特論2017/map_v1.1.pdf); for review &ref(授業/制御工学特論2017/map_v1.1_review.pdf);

- review : stabilization of SISO unstable plant by classical and modern control theory
-- transfer functions / differential equations
-- poles / eigenvalues
-- impulse response / initial value response
-- ...

s = tf('s')
P = 1/(s-1)
pole(P)
impulse(P)
k = 2
Tyr = feedback(P*k, 1)
step(Tyr)
k = 10
Tyr = feedback(P*k, 1)
step(Tyr)
k = 0.5
Tyr = feedback(P*k, 1)
step(Tyr)

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

** &color(green){[lecture #2]}; 2020.9.10 review of classical and modern control theory (2/3) with introduction of Matlab/Simulink [#x9c8259b]

+ minute paper
+ introduction of Matlab and Simulink
&ref(授業/制御工学特論2015/text_fixed.pdf); Basic usage of MATLAB and Simulink used for 情報処理演習及び考究II/Consideration and Practice of Information Processing II: Advanced Course of MATLAB
-- interactive system (no compilation, no variable definition)
-- m file
//-- example: stabilization of inverted pendulum (sorry in Japanese)
//--- [[derivation of equation of motion>http://c.nagaokaut.ac.jp/~kobayasi/i/Matlab/ex/text.pdf]]
//
//
+ system representation: Transfer Function(TF) / State-Space Representation (SSR)
//
-- example: mass-spring-damper system
-- definition of SSR
-- from SSR to TF
-- from TF to SSR: controllable canonical form
+ open-loop characteristic
-- open-loop stability: poles and eigenvalues
-- Bode plot and frequency response &ref(ex0910_1.m); &ref(mod0910_1.mdl);
--- cut off frequency; DC gain; -40dB/dec; variation of c
--- relation between P(jw) and steady-state response
+ closed-loop stability
-- Nyquist stability criterion (for L(s):stable)
-- Nyquist plot &ref(ex0910_2.m); &ref(mod0910_2.mdl);
--- Gain Margin(GM); Phase Margin(PM)

%-- 20/09/10 12:48 --%
a = 1
b = 2
a + b
ex0910_1
P
ctrlpref
ex0910_1
P
P.num
P.num{:}
P.den{:}
ex0910_2
roots(P.den{:})
roots(L.den{:})
ex0910_2
K
ex0910_2

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

-Q: マトラボの使いかたが分かるオススメの本やサイトが知りたいです
-A: この授業では基本的な使い方ができれば十分のため、まずは今日示したpdfファイルを見てもらえればと思います。

** &color(green){[lecture #3]}; 2020.9.17 review of classical and modern control theory (3/3) [#fa6c0b51]

+ LQR problem
-- controllability
-- cost function J >= 0
-- positive (semi-)definite matrices
-- solution of LQR problem
-- example &ref(ex0917_1.m); &ref(mod0917_1.mdl);
-- scalar case (solve by hand)
//-- closed loop stability ... Lyapunov criterion
//-- Jmin
-- matrix case &ref(授業/制御工学特論2015/lqr.pdf); ≒ &ref(授業/制御工学特論2015/proof4.pdf); (from B3「動的システムの解析と制御」)

%-- 20/09/17 12:42 --%
ex0917_1
A
B
Uc
det(Uc)
R
M
M = [2, 1; 1, 1]
eig(M)
ex0917_1
C
D
F
R
Q
P
A
eig(A)
eig(P)
R\B'
R\B'*P
F
J
J(end)

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

** &color(green){[lecture #4]}; 2020.9.24 relation between LQR and H infinity control problem (1/2) [#n5336e05]

- GOAL: to learn difference in concepts between LQR problem and H infinity control problem
//- review of LQR problem and the simple example
+ a simple example relating LQR and H infinity control problems
-- For given plant G
$G = \left[\begin{array}{c|c:c} a & 1 & b \\ \hline \sqrt{q} & 0 & 0 \\ 0 & 0 & \sqrt{r} \\ \hdashline 1 & 0 & 0 \end{array} \right] = \left\{ \begin{array}{l} \dot x = ax + bu + w\\ z = \left[ \begin{array}{c} \sqrt{q} x \\ \sqrt{r} u \end{array}\right] \\ x = x \end{array}\right.$
with zero initial state value x(0) = 0,
find a state-feedback controller
$u = -f x$
such that
\begin{eqnarray}
(i) &&\quad \mbox{closed loop is stable} \\
\left\{\begin{array}{l} \| z \|_2 \mbox{ for } w(t) = \delta(t) \quad \mbox{(LQR)} \\
\| T_{zw} \|_\infty \mbox{($H_\infty$ control problem)}\end{array}\right.
\end{eqnarray}
-- comparison of norms in (ii) (for a = -1, b = 1, q = 1, r = 1)
$\begin{array}{|c||c|c|}\hline & \mbox{LQR}: f=-1+\sqrt{2} & \quad \quad H_\infty: f=1\quad\quad \\ \hline\hline J=\|z\|_2^2 & & \\ \hline \|T_{zw}\|_\infty & & \\ \hline \end{array}$
+ an alternative description to LQR problem
++ J = (L2 norm of z)^2
++ impulse resp. with zero initial value = initial value resp. with zero disturbance
+ definition of H infinity norm (SISO)
s = tf('s');
G1 = 1/(s+1);
bode(G1);
norm(G1, 'inf')
G2 = 1/(s^2 + 0.1*s + 1);
bode(G2);
norm(G2, 'inf')
+ definition of H infinity norm (SIMO)
+ solve the problem by hand
+ solve the problem by tool(hinfsyn)
&ref(ex0924_1.m);

%-- 20/09/24 12:36 --%
s = tf('s');
G1 = 1/(s+1);
bode(G1);
norm(G1, 'inf')
norm(G1)
norm(G1, inf)
bode(G2)
G2 = 1/(s^2 + 0.1*s + 1);
bode(G2);
G2
ctrlpref
bode(G2);
norm(G2, inf)

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

-Q: 日本語での講義が良いです。
-A: 反対意見が無かったため、次回から日本語で講義を行います。

** &color(green){[lecture #5]}; 2020.10.08 relation between LQR and H infinity control problem (2/2) [#r1ec1147]

+ complete the table in simple example
+ confirm the cost function J for both controllers by simulation &ref(mod1008.mdl);
-- block diagram in the simulink model
-- how to approximate impulse disturbance with a step function
-- impulse disturbance resp. with zero initial condition = initial condition resp. with zero disturbance
+ confirm the closed-loop H infinity norm for both controllers by simulation
-- H infinity norm = L2 induced norm
-- review: steady-state response; the worst-case disturbance w(t) which maximizes L2 norm of z(t) ?
-- how to make the worst-case disturbance w(t)? w(t) for the simple example ?
+ general state-feedback case: &ref(授業/制御工学特論2015/hinf.pdf);
-- includes the simple example as a special case
-- LQR &ref(授業/制御工学特論2015/lqr.pdf); is included as a special case in which gamma -> infinity, w(t) = 0, B2 -> B, and non-zero x(0) are considered

%-- 20/10/08 12:36 --%
ex0924_1
mod1008
f
f = -1+sqrt(2)
x0
x0 = 0
h
h = 0.01
f
zz
zz(end)
sqrt(2)-1
h = 0.001
zz(end)
f
f = 1
zz(end)
h
x0
x0 = 1
zz(end)
x0
h
h = 0.00001
zz(end)
x0 = 0
zz(end)
format long e
zz(end)
x0
f
h
h = 10
zz(end)
sqrt(zz(end)/ww(end))
format short
sqrt(zz(end)/ww(end))
h
h = 100
sqrt(zz(end)/ww(end))
f
f = -1+sqrt(2)
sqrt(zz(end)/ww(end))

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

** &color(green){[lecture #6]}; 2020.10.15 Mixed sensitivity problem 1/3 [#je22d5a0]

+ outline: &ref(授業/制御工学特論2017/map_v1.1_mixedsens1.pdf);
-- sensitivity function S and complementary sensitivity function T
+ H infinity control problem (general case)
-- with generalized plant G
-- including the state-feedback case
+ reference tracking problem
-- how to translate the condition (ii) into one with H infinity norm ?
-- corresponding generalized plant G ?
-- introduction of weighting function for sensitivity function in (ii)
+ design example &ref(ex1015_1.m); &ref(ex1015_2.m);
+ the small gain theorem
-- proof: Nyquist stability criterion
//+ from performance optimization to robust stabilization

%-- 20/10/15 12:54 --%
ex1015_1
P
eig(P)
K
help step
ex1015_2
who
K_hinf
eig(K.a)
eig(K_hinf.a)
help hinfsyn
ex1015_2
P

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

** &color(green){[lecture #7]}; 2020.10.22 Mixed sensitivity problem 2/3 [#x430237d]

+ outline: from point to set &ref(授業/制御工学特論2017/map_v1.1_mixedsens2.pdf);
+ review: the small gain theorem ... robust stability = H infinity norm condition
+ normalized uncertainty Delta
+ uncertainty model
+ how to determine P0 and WT
-- example: frequency response of plant with perturbation &ref(ex1022_1.m);
-- frequency response based procedure for P0 and WT &ref(ex1022_2.m);
+ robust stabilization problem and equivalent problem
-- design example and simulation &ref(ex1022_3.m); &ref(mod1022.mdl);

%-- 20/10/22 12:55 --%
ex1022_1
ex1022_2
ex1022_3
mod1022
c
c = 0.8
c = 2

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

** &color(green){[lecture #8]}; 2020.10.29 Mixed sensitivity problem 3/3 [#ibb4d1da]
//- schedule (no lecture will be given on Nov.31)
- review: &ref(授業/制御工学特論2017/map_v1.1_mixedsens2.pdf); (1)robust stabilization and (2)performance optimization
- outline:
++ how to design controllers considering both conditions in (1) and (2)
++ gap between NP(nominal performance) and RP(robust performance)
+ mixed sensitivity problem => (1) and (2) : proof
+ generalized plant for mixed senstivity problem
+ design example &ref(ex1029_1.m); minimize gamma by hand
+ gamma iteration by bisection method &ref(ex1029_2.m);
+ intro. to RP(problem of NP) &ref(ex1029_3.m);

%-- 20/10/29 13:00 --%
ex1029_1
ex1029_2
ex1029_3

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

** &color(green){[lecture #9]}; 2020.11.5 robust performance problem 1/3 [#nb63de12]
-- [[schedule2020]] due date for mini reports corrected
+ review
-- mixed sensitivity problem : N.P. but not R.P.
-- robust performance problem (R.P.) c.f. the last whiteboard, but can not be solved by tool
-- the small gain theorem
+ an equivalent robust stability (R.S.) problem to R.P.
-- (i) introduction of a fictitious uncertainty Delta_p (for performance)
-- (ii) for 2-by-2 uncertainty block Delta hat which includes Delta and Delta_p
+ definition of H infinity norm for general case (MIMO)
-- definition of singular values and the maximum singular value
M = [1/sqrt(2), 1i; 1/sqrt(2), -1i]
M'
eig(M'*M)
svd(M)
-- mini report #1 &ref(report1.pdf); ... You will have a mini exam #1 related to this report
+ proof of ||Delta hat||_inf <= 1
+ design example: &ref(ex1105_1.m);
-- robust performance is achieved but large gap
-- non structured uncertainty is considered ... the design problem is too conservative

%-- 20/11/05 13:59 --%
M = [1/sqrt(2); 1i; 1/sqrt(2), -1i]
M'
eig(M'*M)
svd(M)
M = [1/sqrt(2), 1i; 1/sqrt(2), -1i]
M'
M'*M
eig(M'*M)
svd(M)
max(svd(M))
ex1105_1

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

** &color(green){[lecture #10]}; 2020.11.12 Robust performance problem (2/3) [#i7f1f228]

+ return of mini report #1
//+ review
//-- robust performance but too conservative
// ex1108_1
//-- robust stability problem for Delta hat and its equivalent problem(?) with Delta tilde
//-- structured unertainty Delta hat and unstructured uncertainty Delta tilde
+ SVD: singular value decomposition
-- definition
-- meaning of the largest singular value (a property and proof)
-- 2-norm of vectors (Euclidean norm)
-- SVD for 2-by-2 real matrix &ref(ex1112_1.m);

%-- 20/11/12 13:18 --%
M = [sqrt(2), -1i/sqrt(2); sqrt(2), 1i/sqrt(2)]
help svd
X
svd(M)
[U,Sigma,V] = svd(M);
Sigma
U
U'*U
V'*V
V*V'
ex1112_1
svd(M)
ex1112_1
help rand
ex1112_1
svd(M)

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

** &color(green){[lecture #11]}; 2020.11.19 Robust performance problem (3/3) [#z07ce024]

+ review
-- H infinity norm (MIMO case)
-- R.S. problems for structured and unstructured uncertainty
+ scaled H infinity control problem
+ relation between three problems
+ how to determine structure of scaling matrix
+ design example &ref(ex1119_1.m);
ex1105_1
gam2 = gam_opt
K2 = K_opt;
ex1119_1
gam_opt
+ mini exam #1 (10 min.)

%-- 20/11/19 12:51 --%
ex1105_1

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

** &color(green){[lecture #12]}; 2020.11.26 Robust performance problem (3/3) (cont.), Control system design for practical system (1/3) [#ba15e52c]

+ return of mini exam #1
+ review of scaling &ref(ex1126_1.m);
+ mini report #2 &ref(report2.pdf);
+ introduction of a practical system: active noise control in duct
-- experimental setup
#ref(photo1.jpg,left,noimg);
#ref(photo2.jpg,left,noimg);
-- objective of control system: to drive control loudspeaker by generating proper driving signal u using reference microphone output y such that the error microphone's output z is attenuated against the disturbance input w
-- frequency response experiment
#ref(ex1126_2.m);
&ref(spk1.dat); &ref(spk2.dat);
-- %%room 157 @ Dept. Mech. Bldg. 2%%

%-- 20/11/26 13:09 --%
ex1105_1
gam2 = gam_opt
K2 = K_opt;
ex1119_1
gam_opt
gam2
ex1126_1
gam2
gam3
close all
clear all
clf
ex1105_1; %
gam2 = gam_opt
K2 = K_opt;
ex1119_1
gam3 = gam_opt
K3 = K_opt;
Delta_tilde = [0, 1/sqrt(2); 0, -1/sqrt(2)]; % example of non-structured
uncertainty
fprintf('***1st check for singular values of Delta_tilde:');
svd(Delta_tilde) % less than or equal to 1
fprintf('***2nd check for closed-loop stability of M2(Ghat(gamma2) and K2) and
Delta_tilde:');
M2 = lft(mdiag(1,1/gam2,1)*Ghat, K2, 1, 1);
clp2 = lft(Delta_tilde, M2, 2, 2);
real(eig(clp2.a)) % closed-loop stability regardless the structure of
uncertainty block
clp2
clp2.a
max(eig(clp2.a))
fprintf('***3rd check for closed-loop stability of M3(Ghat(gamma3) and K3) and
Delta_tilde:');
M3 = lft(mdiag(1,1/gam3,1)*Ghat, K3, 1, 1);
clp3 = lft(Delta_tilde, M3, 2, 2);
real(eig(clp3.a)) % closed-loop instability by the non-structured uncertainty
block
fprintf('***4th check for closed-loop H infinity norm of M3:');
norm(M3, 'inf') % larger than 1
fprintf('***5th check for closed-loop H infinity norm of M3 with scaling:');
W = mdiag(d_opt,1);
M3_d = W\M3*W;
norm(M3_d, 'inf') % less than 1
d_opt
ex1126_2
ctrlpref
ex1126_2
346/(4*1.62)

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

** &color(green){[lecture #13]}; 2020.12.3 Control system design for practical system (2/3) [#rfc936a0]

+ return of mini report #2;  ... You will have a mini exam #2 related to this report next week
-- [[schedule2020]]
+ review of the experimental system
-- closed-loop system of 2-by-2 plant G and controller K
-- closed-loop gain is desired to be minimized
-- frequency response data of G can be used; how to handle modeling error of G ?
+ design example (modeling error for Gyu is only considered for simplicity)
-- frequency response experiment data&br;
[[spk1.dat>/:~exp/seigyokougakutokuron_2020/exp/freqresp/1/spk1.dat]]&br;
[[spk2.dat>/:~exp/seigyokougakutokuron_2020/exp/freqresp/1/spk2.dat]]&br;
-- determination of plant model(nominal plant and additive uncertainty weight)&br;
&ref(nominal.m);&br; &ref(subspace.m); ... replacement of n4sid in System Identification Toolbox (not provided in IPC)&br;
&ref(weight.m);
-- configuration of generalized plant and controller design by scaled H infinity control problem using one-dimensional search on the scaling d&br;
&ref(cont.m);
-- comparison of closed-loop gain characteristics with and without control&br;
&ref(compare.m);
-- result of control experiment&br;
[[result.dat>/:~exp/seigyokougakutokuron_2020/exp/design_example/1/result.dat]]&br;
&ref(perf.m);
+ final report and remote experimental system
++design your controller(s) so that the system performance is improved compared with the design example
++Draw the following figures and explain the difference between two control systems &color(red){(your controller and the design example)};:
+++bode diagram of controllers
+++gain characteristic of closed-loop system from w to z
+++time response of control experiment
++Why is the performance of your system improved(or unfortunately deteriorated)?
--&size(30){&color(red){due date: 6th(Wed) Jan 17:00};};
--submit your report(pdf file) by e-mail to kobayasi@nagaokaut.ac.jp
--You can use Japanese
--maximum controller order is 35
--the system will be started until next lecture
--You can send up to %%5%% &color(red){10}; controllers
--&size(30){&color(black){[[control experimental results will be uploaded here>/:~exp/seigyokougakutokuron_2020/exp]]};};
--freqresp ... frequency response will be measured and uploaded everyday
+ how to improve the performance ?
-- order of the nominal plant
-- weighting for robust stability
//+ detailed explanation of m-files in the previous lecture
+ specifications of the experimental system
++ experimental equipments
--- loudspeakers: FOSTEX FE-87(10W)
--- loudspeakers: FOSTEX %%FE-87%%&color(red){FE87E};(10W)
--- A/D, D/A converters: CONTEC AD12-16(PCI), DA12-4(PCI)
--- PC: Dell Dimension 1100
--- OS: Linux kernel 2.4.22 / Real Time Linux 3.2-pre3
++ program sources for frequency response experiment
--- [[freqresp.h>/:~exp/seigyokougakutokuron_2020/freqresp.h]]
--- [[freqresp_module.c>/:~exp/seigyokougakutokuron_2020/freqresp_module.c]]
--- [[freqresp_app.c>/:~exp/seigyokougakutokuron_2020/freqresp_app.c]]
--- format of spk1.dat (u is used instead of w for spk2.dat)
1st column ... frequency (Hz)
2nd column ... gain from w(V) to y(V) (signal's unit is voltage (V))
3rd column ... phase from w to y
4th column ... gain from w to z
5th column ... phase from w to z
++ program sources for control experiment
--- [[hinf.h>/:~exp/seigyokougakutokuron_2020/hinf.h]]
--- [[hinf_module.c>/:~exp/seigyokougakutokuron_2020/hinf_module.c]]
--- [[hinf_app.c>/:~exp/seigyokougakutokuron_2020/hinf_app.c]]
--- format of result.dat
1st column: time (s)
2nd column: z (V)
3rd column: y (V)
4th column: u (V)
5th column: w (V)
++ configuration of control experiment
--- disturbance signal w is specified as described in hinf.h and hinf_module.c:
#define AMP 0.5 // amplitude for disturbance

w = AMP * (2. * rand() / (RAND_MAX + 1.) - 1.); // uniform random number in [-AMP, AMP]

da_conv(V_OFFSET + w, 0); // D/A output to noise source
--- control signal u is limited to [-4, 4] as specified in hinf.h and hinf_module.c:
#define U_MAX 3.00

if(u > U_MAX) u = U_MAX;
if(u < -U_MAX) u = -U_MAX;
u is set to 0 for t < 5(s). (controller is operated for 5 <= t < 10)

%-- 20/12/03 12:59 --%
nominal
weight
cont
compare
plot(result(:,1),result(:,2))
plot(result(:,1),result(:,2))
plot(result(:,1),result(:,4))
K_opt
size(K_opt.a)
plot(result(:,1),result(:,2))
plot(result(:,1),result(:,5))

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

** &color(green){[lecture #14]}; 2020.12.10 Control system design for practical system (3/3) [#s88e0e8f]

- web based remote experiment system
-- usage; how to upload controller's
- mini exam #2
- preparation of your own controller(s) by using the remote experiment system

//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//&color(black,red){&size(20){!!! the remaining page is under construction (the contents below are from last year) !!!};};
//

** &color(green){[lecture #15]}; 2020.12.17 Control system design for practical system (cont.) [#h01bfc0b]

- return of mini exam #2
- [[schedule2020]] no lecture will be given next week
- review & supplemental explanations
-- final report
--- controller design procedure in the design example
--- generating wav file [[filter.c>/:~exp/seigyokougakutokuron_2020/filter.c]] (txt2wav.c is used to convert the text file to wav file)
--- &ref(perf.m); (sampling period is fixed to 0.2ms (don't change this in cont.m))
--- c2d() is used to discretize the resultant continuous-time controller in cont.m
---You can send up to 10 controllers (don't fall into trial and error; think always about the reason)
--- discuss relationship between the required figures (a), (b), and (c)
--- no strict control objective is given ( there is a freedom to define what is good performance; a frequency dependent weighting function can be introduced to evaluate the performance )
-- web based remote experiment system
//--- now you can login after registration
--- room temperature is displayed and stored in temp.txt (Bosch Sensortec BME280 is used)
//--- the system will be unavailable from %%21(Fri)%% &color(red){7:30 on 22(Sat)}; to &color(red){19:00 on}; 22(Sat) due to electrical construction scheduled on 22(sat)
- preparation of your own controller(s) by using the remote experiment system

//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
&color(black,red){&size(20){!!! the remaining page is under construction (the contents below are from 2017) !!!};};
//