æè¿ãããããªãšããã§ãMPCã£ãŠæ§èœããããããããšèãããã«ãªããŸããã
ãã®èšäºã§ã¯è»äž¡ã®è»é远åŸåé¡ãäŸã«ãMPCã®èšè𿹿³ãšæ§èœã«ã€ããŠæžããŠã¿ãŸãã
äžã«è»äž¡ã®è»é远åŸã«ãã䜿ãããPIDãšpure-pursuitãšã®æ¯èŒã·ãã¥ã¬ãŒã·ã§ã³ã貌ããŸããããããèŠããšãæ²çããã€ãéšåã§ãMPCã¯ãã£ãã远åŸã§ããŠããããšãåãããŸãã
ãã®èšäºã¯ãMPCè¯ãããããå®è£
ããããã©ãæ§èœãæžãæ¹ããããããããã£ãŠäººåãã«æžããŠããŸãã
æ°åŒããŒã¹ã§èª¬æããŠããã®ã§ãçè§£ãæ·±ãããæ¹ã¯ïŒè¡ãã€è¿œã£ãŠã¿ãŠãã ããã
ã¡ãªã¿ã«ã¢ãã«äºæž¬å¶åŸ¡ã¯ãã¢ãã«ã䜿ã£ãŠäºæž¬ãããã®ã§ãã£ãŠããã¢ãã«ãäºæž¬ãããã®ã§ã¯ãããŸãããã¢ãã«ãäºæž¬ããªããå¶åŸ¡ãããæ¹ã¯ãé©å¿å¶åŸ¡ïŒadaptive controlïŒãã§ããã£ãŠã¿ãŠãã ããã
å¶åŸ¡ã«ãããMPCã®ç«ã¡äœçœ®
ã¯ããã«å¶åŸ¡çè«ã«ãããMPCã®ç«ã¡äœçœ®ã§ãããå¶åŸ¡çè«ã®çºå±ã®æµããæéé ã§æžããšä»¥äžã®ããã«ãªããŸãã
-
å€å žå¶åŸ¡ïŒ~1960ïŒïŒåšæ³¢æ°è§£æïŒPIDå¶åŸ¡ãäœçžé²ã¿ã»é ãè£ååšãªã©ïŒ
-
çŸä»£å¶åŸ¡ïŒ1960sïŒïŒå€å ¥åºåæé©åïŒLQRãã«ã«ãã³ãã£ã«ã¿ãŒãªã©ïŒ
-
ããã¹ãå¶åŸ¡ïŒ1980sïŒïŒã¢ãã«å誀差å®åŒåïŒ$H^{\infty}$å¶åŸ¡ãªã©ïŒ
-
ã¢ãã«äºæž¬å¶åŸ¡ïŒ1990~ïŒïŒåžæé©åïŒMPCãããã¹ãMPCãªã©ïŒ
ãã£ããã§ãããããã¹ãå¶åŸ¡ã¯å€å žå¶åŸ¡ã®ãã¢ãã«äºæž¬å¶åŸ¡ã¯çŸä»£å¶åŸ¡ã®é²åç³»ã«åœãããŸãïŒäžå³ïŒãMPCã®çè«ã¯çŸä»£å¶åŸ¡ã®LQRïŒç·åœ¢æé©å¶åŸ¡ïŒã«ãã䌌ãŠããã®ã§ããæææ¡ä»¶ä»ãLQRããšåŒã°ããããšããããŸãã
å³ã«æžããŠããåšæ³¢æ°é åãšæéé åã«ã€ããŠã¯æåŸã«è§£èª¬ããŠããŸãïŒãããããã®äœè«ãäžçªèšãããããšãªæ°ãããŸãïŒã
MPCã®æŠèŠ
MPCã¯ç°¡åã«èšããšãå¶åŸ¡å¯Ÿè±¡ã®ã¢ãã«ã«åºã¥ããŠãå¶åŸ¡åšæããšã«æé©ååé¡ãè§£ããããã®çµæã䜿ã£ãŠå¶åŸ¡ãããšãããã®ã§ãã
äºåã«äžããå¶åŸ¡å¯Ÿè±¡ã®ã¢ãã«ãçšããŠããã®åäœãç®æšè»éã«åãããã«å¶åŸ¡å
¥åãæé©åããæãã§ããã
äžæ¹ã§åãæé©åãè¡ãLQRã¯å¶åŸ¡å¯Ÿè±¡ã®ã¢ãã«ã«åºã¥ããŠãäºãæé©ååé¡ãè§£ããŠã²ã€ã³ãèšç®ããããã®ã²ã€ã³ã䜿ã£ãŠå¶åŸ¡ãããšãããã®ã§ãã
LQRãšMPC倧ããªéãã¯ãäºãæé©åèšç®ãããããå¶åŸ¡åšæããšã«æé©åèšç®ãããããã§ããã
å¶åŸ¡åšæããšã®æé©åã®ã€ã¡ãŒãžå³ã以äžã«ç€ºããŸãã
MPCã§ã¯å³ã®ããã«ãå¶åŸ¡åšæ$\ dt\ $ããšã«äºæž¬æéåïŒããã§ã¯6dtïŒã®å ¥åãèšç®ããŸããå®éã«å ¥åãšããŠäœ¿ãããã®ã¯ãæé©åã®çµæã®å é ã®å€ã«ãªããŸãã
MPCã®å
¥éã«é¢ããŠã¯ããããããèªã¿ãããèšäºãããããããã®ã§ããã¡ããããããããŸãã
ã»Model Predictive Control: ã¢ãã«äºæž¬å¶åŸ¡å
¥é
ã»ããè¯ãå¶åŸ¡ãç®æããŠãã¢ãã«äºæž¬å¶åŸ¡ã®å°å
¥ã
MPCã®ç¹åŸŽ
ã¢ãã«äºæž¬å¶åŸ¡ã®ç¹åŸŽãšããŠããèšãããã®ã以äžã®ïŒç¹ã
- å°æ¥ã®ç¶æ ãäºæž¬ããªããå¶åŸ¡ãã
- æææ¡ä»¶ãèæ ®ã§ãã
ããã«å ããŠãå人çã«åŒ·ãæãã®ã次ã®ç¹åŸŽã
- è€éãªãã€ããã¯ã¹ãæè»œã«åãæ±ãã
ãã®3ç¹ã«ã€ããŠèª¬æããŸãã
å°æ¥ã®äºæž¬
ãå°æ¥ã®äºæž¬ãã«ã€ããŠã§ãããå®ã¯æ°åŒäžã¯LQRãç¡éæéå ãŸã§å°æ¥ãäºæž¬ããŠæé©åãããŠããã®ã§ãMPCã ããå°æ¥ãäºæž¬ããŠããã®ã§ã¯ãããŸããããããMPCã¯æéæéãŸã§ããæé©åãæããªãã®ã§ããã®ç¹ã§ã¯LQRã®æ¹ãåããŸãã
ãã ããLQRã¯ç¡éæéå ãŸã§äºæž¬ããããã«ãããã€ãã®ä»®å®ã眮ããŠããŸããäŸãã°è»é远åŸåé¡ã ãšãç®æšçµè·¯ã¯çŽç·ã§ããããšããããã¯LQRããè§£æçãã«è§£ãæ±ããããã«ããã¹ãŠã®æ å ±ãæ°åŒã§èšè¿°ããå¿ èŠãããããã§ããçµè·¯ãæ°åŒã§è¡šããéçïŒãããç·åœ¢ã®ç¯å²å ã§ïŒããçµè·¯ã¯çŽç·ãã«ãªãããã§ãã
ããŠãå®éã®ç®æšçµè·¯ã®æ²çã¯ã¬ã³ã¬ã³å€ããã®ã§ããããªç°¡åã«æ°åŒã§èšè¿°ã§ããŸãããããã§ãè§£æçã«è§£ãããšã«ãã ãããªãã§ããæ°å€çãã«è§£ããŠããŸãã°ããããããšãªã£ãã®ãMPCã§ãã
æ°å€çã«è§£ã以äžã¯ç¡éæéå ãŸã§èŠããšããç¡è¬ãªããšã¯ã§ããŸãããããã§ãMPCã§ã¯äºæž¬ãã©ã€ãºã³ãšããæŠå¿µãå°å ¥ããæéåºéã§ã®æé©åãæœããŠããŸããé·ãæéå ãèŠãã»ã©èšç®éã¯èšå€§ã«ãªããŸãããæ°åŒã§è¡šããªããããªè€éãªçµè·¯ãæ¥ãŠãé©åã«å¯ŸåŠãã§ããããã«ãªããŸãã
æææ¡ä»¶
2ç¹ç®ã®ç¹åŸŽã®æææ¡ä»¶ã§ãããMPCã®åé¡èšå®ã¯æçµçã«åžæé©ååé¡ã§è¡šãããŸããåžæé©ååé¡ã¯ãåžéåäžã§åžé¢æ°ãæé©åããåé¡ããªã®ã§ãããMPCã䜿ãã ãã§ããã°ãããŸã§è©³çްãªç¥èã¯ãªããŠã倧äžå€«ã§ãã
éåžžã®MPCã§ã¯ãç·åœ¢ææäžã§äºæ¬¡é¢æ°ãæé©åãããããšãå€ãã§ããããã§èšãç·åœ¢ææãšããã®ã¯äŸãã°ãã¿ã€ã€ã®è§åºŠã¯$\pm$30床以å ããäºæ¬¡é¢æ°ãšããã®ã¯ã远åŸèª€å·®ã®2ä¹ããªã©ã§ãã€ãŸããã¿ã€ã€ã®è§åºŠã¯$\pm$30床以å ã§è¿œåŸèª€å·®ã®2ä¹ãæå°åããå¶åŸ¡å ¥åãæ±ãããããšããåé¡ãè§£ãããšã«ãªããŸãããã®åé¡ãåžæé©åã®åéã§é²åããŠããã¢ã«ãŽãªãºã ãçšããŠé«éã§æ°å€èšç®ã§ããããšããããšãç¥ã£ãŠããã°okã§ãã
åžæé©åã¯ãã§ã«è§£æ³ã確ç«ãããŠãããããå®çšäžã¯ãåžæé©ååé¡ã§è¡šããïŒè§£ããããšãªããŸãããªã®ã§MPCã®åéã§ã¯ãäžèŠéç·åœ¢ã«èŠããæææ¡ä»¶ã«å¯Ÿãã倿°å€æãªã©ãè¡ã£ãŠåžæé©ååé¡ã«èœãšããããšããè«æãããèŠãããŸãã
è€éãªãã€ããã¯ã¹ãæè»œã«åãæ±ãã
å ã»ã©MPCãšLQRãšã®æ¯èŒãæžããŸããããLQRã®æ§èœãæªãã®ããšãããšãããã§ã¯ãããŸãããLQRãPIDã®ããã«ç·åœ¢ãä»®å®ããŠããå¶åŸ¡ç³»ã䜿ããšãã¯ããã£ãŒããã©ã¯ãŒãå¶åŸ¡ã倿°å€æãšçµã¿åãããŠãå¶åŸ¡ç³»ããèŠãçµè·¯ãçŽç·ã«ãªãããã«å€æãæã¿ãå¶åŸ¡ç³»ãä»®å®ããŠãããçµè·¯ã¯çŽç·ã§ããããšããæ¡ä»¶ãæãç«ã€ããã«ããŠæ§èœãäžããŸãã
ãããŸã§ã§ããã°ãæææ¡ä»¶ããèæ ®ã¯åºæ¥ãŸããããæ§èœãšããŠã¯ç¡éæéå ãèŠãŠããLQRãåã€ã¯ãã§ãã
ãããå®éã«ãã£ãŠã¿ããšãçµè·¯ã®æ²çãéç·åœ¢æ§ãç¹ç°ç¹ãªã©ãèæ
®ãã¹ãããšãå€ãéåžžã«å€§å€ã§ãããããããããå
šãŠãå®ç§ã«èæ
®ã§ãã倿ãååšããããšã¯çšãªã®ã§ãå
šäœãããæãã«èæ
®ã§ããå€æãæ¢ãããšã«ãªããŸãïŒfeedback-linearizationãexact-linearizationãªã©ãšåŒã°ããææ³ïŒã
ãããã®ææ³ã¯éç·åœ¢ãåãæ±ãããäžè¬çãªææ³ãšããŠå®åŒåããã®ã¯é£ãããç·åœ¢ä»£æ°ã埮ç©åã®ç¥èã䜿ã£ãŠæ°åŒãã¬ãã¬ããããããšã«ãªããŸãã
äžæ¹MPCã¯ãã¢ãã«åŒãããã£ãããšããŠããã°ããã®èŸºãå šãŠèæ ®ããŠäžçªæé©ãªè§£ãåºããŠããŠãããŸãã
ãã®æè»œãã¯æ°å€èšç®ãå©çšããŠããMPCã®å€§ããªç¹åŸŽã§ãã
ãã®ããã«ãä»ã®å¶åŸ¡ã§åãæ±ãããšãå°é£ãªåé¡ãç°¡åã«è§£ããŠããŸãã®ã§ãé«ãèšç®ã³ã¹ããé€ãã°éåžžã«åªããå¶åŸ¡æ¹æ³ã«ãªããŸããè¿å¹Žã®èšç®æ©ã®æ§èœåäžã«äŒŽã£ãŠMPCãå®çšã¬ãã«ãšèšãããããã«ãªããŸããã
çµå±ãäžèšã§MPCã®ç¹åŸŽãèšããš**ãè€éãªæ¡ä»¶ãèæ ®ããŠæé©åã§ããã**ã£ãŠæãã§ããããã
ç·åœ¢MPCã®å®åŒå
æé©ååé¡ãšããŠå®åŒåãã
åãã«ç·åœ¢ã·ã¹ãã ã«éã£ãŠMPCã説æããŸãããã®åŸã«å¿çšãšããŠè»äž¡ã®è»é远åŸåé¡ïŒéç·åœ¢ïŒã®äŸã瀺ããŸãã
ã¡ãªã¿ã«MPCã®å®åŒåã¯äœçš®é¡ãããã®ã§ãããå人çã«äžçªãããæããšæãæ¹æ³ã§æžããŠããŸãã
ãŸã察象ã®ã·ã¹ãã ã¯ä»¥äžã§æžãããšããŸãã
x_{k+1} = Ax_k + Bu_k + w_k,\ \ y_k=Cx_k\\
\quad x_k\in R^n, u_k\in R^m, w_k\in R^n, y_k\in R^l, A\in R^{n\times n}, B\in R^{n\times m}, C\in R^{l\times n}\tag{1}
ããã§$x_k$ã¯ç¶æ éã$u_k$ã¯å ¥åã$w_k$ã¯ãæ¢ç¥ã®ãå€ä¹±æåã$y_k$ã¯åºåïŒããã§ã¯è©äŸ¡é¢æ°ã«çµã¿èŸŒã¿ããå€ãšããŠå®çŸ©ïŒã§ããã¡ãªã¿ã«ãã®$w$ãé©åã«æ±ããã®ãMPCã®åŒ·ã¿ã§ããå€ä¹±æåãšæžããŸãããããã®åŒã®åœ¢ã«åœãŠã¯ãŸãã°äœã§ãè¯ãã§ãïŒéç·åœ¢ãžã®é©å¿ã®éšåã§äŸãåºãŠããŸãïŒã
ãã®æ¹çšåŒã¯ãæå»$\ k\ $ãã$\ k+1\ $ãæ±ãããã®ãªã®ã§ããããç¹°ãè¿ãçšããã°ã$N$ã¹ãããå ã®ç¶æ ãäºæž¬ããããšãã§ããŸãã
ãã£ãŠã¿ãŸãããã
ç°¡åã®ãããæåã®ç¶æ ã$\ k=0\ $ãšããŠ$\ x_0\ $ã«ããŠãããŸãã
ãŸã$\ k=1\ $ã§ã®ç¶æ $\ x_1\ $ã¯(1)åŒãã
x_{1} = Ax_0 + Bu_0 + w_0\tag{2}
ã§ããç¶ããŠ$\ k=2\ $ã®æã¯ã(2)åŒã䜿ããš
\begin{align}
x_{2} &= Ax_1 + Bu_1 + w_1\\
&=A(Ax_0+Bu_0+w_0) + Bu_1 + w_1\\
&=A^2x_0+ABu_0+Aw_0+Bu_1+w_1\\
&=A^2x_0+
\begin{bmatrix}
AB&B
\end{bmatrix}
\begin{bmatrix}
u_0\\
u_1
\end{bmatrix}
+
\begin{bmatrix}
A&I
\end{bmatrix}
\begin{bmatrix}
w_0\\
w_1
\end{bmatrix}
\tag{3}
\end{align}
$\ k=3\ $ã®æã¯(3)åŒãã
\begin{align}
x_{3} &= Ax_2 + Bu_2 + w_2\\
&=A(A^2x_0+ABu_0+Bu_1+Aw_0+w_1) + Bu_2 + w_2\\
&=A^3x_0+A^2Bu_0+ABu_1+A^2w_0+Aw_1+Bu_2+w_2\\
&=A^3x_0+
\begin{bmatrix}
A^2B&AB&B
\end{bmatrix}
\begin{bmatrix}
u_0\\
u_1\\
u_2
\end{bmatrix}
+
\begin{bmatrix}
A^2&A&I
\end{bmatrix}
\begin{bmatrix}
w_0\\
w_1\\
w_2
\end{bmatrix}
\tag{4}
\end{align}
ãããªæãã§ $\ k=n\ $ã® ãšãã¯
\begin{align}
x_{n}=A^nx_0+
\begin{bmatrix}
A^{n-1}B&A^{n-2}B&\cdots&B
\end{bmatrix}
\begin{bmatrix}
u_0\\
u_1\\
\vdots\\
u_{n-1}
\end{bmatrix}
+
\begin{bmatrix}
A^{n-1}&A^{n-2}&\cdots&I
\end{bmatrix}
\begin{bmatrix}
w_0\\
w_1\\
\vdots\\
w_{n-1}
\end{bmatrix}
\tag{5}
\end{align}
ãšãªããŸããããã(2)ã(5)ãŸã§ãã¹ãŠãŸãšãããšä»¥äžã®è¡åæ¹çšåŒãåºæ¥äžãããŸãã
\begin{align}
\begin{bmatrix}
x_1\\x_2\\x_3\\
\vdots\\ x_{n}
\end{bmatrix}
=
\begin{bmatrix}
A\\A^2\\A^3\\
\vdots\\ A^n
\end{bmatrix}
x_0+&
\begin{bmatrix}
B&0&\cdots & & 0\\
AB & B & 0 & \cdots & 0\\
A^2B & AB & B & \cdots & 0\\
\vdots & \vdots & & & 0\\
A^{n-1}B&A^{n-2}B&\cdots&AB&B
\end{bmatrix}
\begin{bmatrix}
u_0\\
u_1\\
u_2\\
\vdots\\
u_{n-1}
\end{bmatrix}
\\&+
\begin{bmatrix}
I & 0 & \cdots & & 0\\
A & I & 0 & \cdots & 0\\
A^2 & A & I & \cdots & 0\\
\vdots& \vdots & & & 0\\
A^{n-1}&A^{n-2}&\cdots&A&I
\end{bmatrix}
\begin{bmatrix}
w_0\\
w_1\\
w_2\\
\vdots\\
w_{n-1}
\end{bmatrix}
\tag{6}
\end{align}
ãªããåºåã®æ¹çšåŒã¯ç°¡åã§åžžã«$\ y_k=Cx_k\ $ã§ãã®ã§ã
\begin{bmatrix}
y_1\\y_2\\y_3\\ \vdots \\ y_n
\end{bmatrix}
=
\begin{bmatrix}
C&0&\cdots&&0\\
0&C&0&\cdots&0\\
0&0&C&\cdots&0\\
\vdots& & & \ddots & 0\\
0&\cdots&0&0&C
\end{bmatrix}
\begin{bmatrix}
x_1\\x_2\\x_3\\
\vdots\\ x_{n}
\end{bmatrix} \tag{7}
ãšãªããŸãããã¡ããã¡ãããŠãŠãããã¥ããã®ã§ã(6), (7)åŒãäžã®ãããªè¡šèšã§ãŸãšããŠæžããŠãããŸãã
\ X = Fx_0+GU+SW, \quad Y=HX\ \tag{8}
ã©ã®å€æ°ãäœãã¯ã(6)ã(7)åŒãšæ¯èŒããŠç¢ºèªããŠãã ãããäŸãã°$X$㯠$\ [x_1,x_2,\cdots,x_n]^T\ $ ã«å¯Ÿå¿ããã®ã§ã$\ n\ $ã¹ããããŸã§ã®äºæž¬ããç¶æ ãã¯ãã«ã«ãªããŸãã
ããŠãããã§**$\ n\ $ã¹ãããå ãŸã§ã®åºåã®æå$\ Y\ $ãå ¥å$\ U\ $ã®åŒã§è¡šã**ããšãã§ããŸããïŒ$\ U\ $以å€ã¯æ¢ç¥ïŒããã®$\ Y(U)\ $ãç®æšè»é$ \ Y_{ref}\ $ã«æ²¿ãããã«å¶åŸ¡å ¥å$\ U\ $ãèšç®ããŸãã
次ã«è©äŸ¡é¢æ°ãäœããŸããè©äŸ¡é¢æ°ã¯äžè¬çã«ä»¥äžã®2次圢åŒã䜿ããŸãã
\ J= (Y-Y_{ref})^TQ(Y-Y_{ref})+(U-U_{ref})^TR(U-U_{ref}) \ \tag{9}
ããã§$\ U_{ref}\ $ã¯$\ U\ $ã®ç®æšå ¥åã§ãããã®è©äŸ¡é¢æ°ã¯LQRãšåããã®ã§ã$\ J\ $ã®ç¬¬1é ã¯ãç®æšã®è»éãéã£ãŠããããšãããã®ã第2é ã¯ãæå®ã®å ¥åããé¢ããªãã§ããšãªããŸãã$\ Q,\ R\ $ã¯ããããã®éã¿ã§ããã
ã¡ãªã¿ã«$\ U_{ref}=0\ $ãšããããšãå€ãã§ãããããã¯è»é远åŸã ãšã«ãŒããæ²ããéã«ãã¹ãã¢è§ããªãã¹ã0ã«ãããšèšãããšã«ãªã£ãŠããŸãã®ã§ãããã§ã¯$\ U_{ref}\ $ã䜿ã£ãŠèª¬æããŸãããã®$\ U_{ref}\ $ã¯ç®æšè»éã®æ²çããäºãèšç®ãããã®ã§ãããã®æ²çãæ²ãããªããã¹ãã¢è§ã¯ãããããã«ãªãã¯ãããšããææšãMPCã«äžããããšã«ãªããŸãã
ãªãããã®$\ Q,R\ $ã¯ãããã忣å®ãåã³æ£å®è¡åã§ãªããŠã¯ãããŸããïŒåŸã®æé©åèšç®ã®ããã«å¿ èŠïŒãæ£å®è¡åã£ãŠãªãã ã£ããšããæ¹ã¯ãïŒæ¬¡å ã§èšãæ£ã®å€$\ a>0\ $ãè¡åã«æ¡åŒµãããã®$A>0$ãæ£å®è¡åã ãšæã£ãŠãããŠãã ããã忣å®ã¯$A \geq 0$ã§ãã
ããŠããã®è©äŸ¡é¢æ°ã§ããã$\ Y = Y(U)\ $ãªã®ã§ãè©äŸ¡é¢æ°ã¯$\ U\ $ã«ã®ã¿äŸåããŸããã€ãŸã$\ J=J(U)\ $ããããæå°åãã$\ U\ $ãæ±ããŸãã
ããã§(9)åŒã«(8)åŒãä»£å ¥ããŠãåŒã$\ U\ $ã«ã€ããŠæŽé ãããš
\begin{align}
J(U)=& (H(Fx_0+GU+SW)-Y_{ref})^TQ(H(Fx_0+GU+SW)-Y_{ref})\\
&+(U-U_{ref})^TR(U-U_{ref}) \\
=&U^T(G^TH^TQHG+R)U+2\{(H(Fx_0+SW)-Y_{ref})^TQHG-U_{ref}^TR\}U\\
&+(宿°é
)\tag{10}
\end{align}
ãšãªããŸãããã®åŒãèŠããš$U$ã®2次圢åŒïŒ$\ U^TAU+B^TU\ \ $ã®åœ¢ïŒã§ããããšãããããŸãã$U$ã®2次é ã®ä¿æ°è¡å$\ \ G^TC^TQCG+R\ $ã¯ãå ã»ã©ã®$Q,R$ã®åæ£å®ãæ£å®ã®ä»®å®ã«ããæ£å®è¡åã«ãªããŸãããããã£ãŠãã®è©äŸ¡é¢æ°ã¯ãã¯ãã«$U$ã倿°ã«æã€äžã«åžã®2æ¬¡é¢æ°ã«ãªã£ãŠããããã§ãã$\ U=[u_1, u_2]^T\ $ã®å Žåã¯ãããªæãã§ããïŒäžå³ïŒãèŠãããã«æé©åããããããªåœ¢ç¶ãããŠããŸãã
åžæé©ååé¡ãè§£ã
(10)åŒã§æå°åãã¹ãè©äŸ¡é¢æ°ãæ±ãŸããŸãããMPCã§ã¯æ®éã¯ãããåžæé©åãœã«ããŒïŒäºæ¬¡èšç»æ³ïŒã§è§£ãã®ã§ãããåžæé©ãè¥å¹²åã£ä»ãã¥ãã人ããããšæãã®ã§ããšãããã髿 ¡ã§ç¿ã£ãäºæ¬¡é¢æ°ã®æé©åæ¹æ³ã埮åããŠ0ã«ãªãç¹ãæ¢ããã§è§£ããŠã¿ãŸãã
æææ¡ä»¶ããªãå Žåã®è§£æ³ïŒæå°äºä¹æ³ïŒ
è©äŸ¡é¢æ°ã¯(10)åŒã§äžããããããã$U$ã«ã€ããŠäžã«åžã§ããããšãããã£ãŠããã®ã§ãæææ¡ä»¶ããªããã°$U$ã§åŸ®åããŠ0ã«ãªãç¹ãèŠã€ããã°çµããã§ãïŒç°¡åïŒïŒã
è¡åã®åŸ®åã®ããããã§ãã
\ J(u)=u^TAu+2Bu \
ã$u$ã§åŸ®åãããš
\ \frac{dJ}{du}=u^T(A+A^T)+2B\ \
ãšãªããŸãã$A$ã察称è¡åã®æã¯
\ \frac{dJ}{du}=2u^TA+2B \ \tag{11}
ã«ãªããŸãïŒä»åã¯$\ A \ $ã¯æ£å®è¡åã€ãŸã察称ãªã®ã§ããã®åŒã䜿ããïŒããã£ãŠ$\ J(u)\ $ãæå°åãã$u$ã¯(11)åŒ=0ã$u$ã«ã€ããŠè§£ãã°
\ u=-A^{-1}B^T\
ãšãªããŸãïŒ$\ A \ $ã¯æ£å®è¡åãªã®ã§å¿ ãéè¡åãååšïŒã
ãããèžãŸããã°ã(10)åŒãæå°åããå ¥å$U^{\ast}$ã¯
U^{\ast}=-M^{-1}N^T,\tag{11}\\
M=G^TC^TQCG+R, \\
N=(C(Fx_0+SW)-Y_{ref})^TQCG-U_{ref}^TR
ã§åŸãããŸãããã£ãŠãããŸäœ¿ãå ¥åå€ã¯
u=U^{\ast}(0)
ã«ãªããŸãããªãããã®å ¥åã䜿ã£ãæã®ç¶æ 倿°ã®é·ç§»ã¯(8)åŒãã
\ \ X = Fx_0+GU^{\ast}+SW\ \
ãšäºæž¬ã§ããŸãã
åžæé©ãœã«ããŒã§ã®è§£æ³
åžæé©åãœã«ããŒã䜿ãã°ãäžã®æé©åãç·åœ¢æææ¡ä»¶ãèæ ®ããŠè§£ãããšãã§ããŸãã
ä»åã¯ç®æšé¢æ°ãïŒæ¬¡ãªã®ã§ãåžæé©åã®äžã§ãäºæ¬¡èšç»æ³ãšãããžã£ã³ã«ã«åœãããŸããäºæ¬¡èšç»ã®ãœã«ããŒã¯äžã®äžã«ããããããã®ã§ãããäœ¿ãæ¹ã¯ã ãããã©ããåãã§ãç®ç颿°ãšæææ¡ä»¶ã®è¡åãæå®ããŠæé©åãè¡ããŸãã
äŸãã°MATLABã®Optimization Toolboxã§æäŸãããŠããäºæ¬¡èšç»æ³ãè§£ã颿°ã¯"quadprog"ãšãããã®ã§ã次ã®ãããªæãã«ãªããŸãã
% convex optimization
% minimize
% J(x) = 1/2 * x' * N * x + M' * x,
% subject to
% A*x <= b, lb <= x <= ub
% ç®ç颿°ãèšå®
N = [1, 3;
3, 5];
M = [-2;
1];
% æææ¡ä»¶ãèšå®
A = [];
b = [];
lb = -1 * ones(2,1);
ub = 1 * ones(2,1);
% ã¢ã«ãŽãªãºã ãèšå®
options = optimoptions('quadprog', 'Algorithm','interior-point-convex', 'Display', 'off');
% æé©åå®è¡
[x_opt, fval, exitflag, output, lambda] = quadprog(N, M, A, b, [], [], lb, ub, [], options);
ããã§è§£ããŠããåé¡ã¯ä»¥äžã§å®åŒåãããåžæé©ååé¡ã§ãã
\quad \quad \min\ \ J(x)=x^TNx+M^Tx, \ \quad {\rm s.t. }\ \ Ax \leq b,\ \ lb \leq U \leq ub\quad \quad \tag{12}
äžã®ã³ãŒãã§ã¯optionã§ãœã«ããŒã§çšããè§£æ³ã«"interior-point-convex"ãæå®ããŠããŸããããã¯å ç¹æ³ãšåŒã°ãããã®ã§ãåžæé©åã«çšããããã¢ã«ãŽãªãºã ã®äžã€ã§ããä»ã«ãæå¹å¶çŽæ³ãªã©ã®ã¢ã«ãŽãªãºã ããããåé¡ã®ç¹æ§ã«ãã£ãŠé©åãªãã®ãéžã³ãŸãã
å®éã«MPCãè§£ããšãã¯ãã³ãŒãå ã®$N,M$ã«(11)åŒãä»£å ¥ããå¿ èŠã«å¿ããŠæææ¡ä»¶ã®$\ A, b, lb, ub\ $ãæå®ããã°okã§ãã
è»äž¡ã®è»é远åŸåé¡ïŒéç·åœ¢ïŒã«é©çšãã
ã·ã¹ãã ãç·åœ¢ã®å Žåã¯ä»ãŸã§ã®è°è«ã§okã§ãããè»äž¡ã®è»é远åŸã¯éç·åœ¢ã«ãªãã®ã§ããã®ãŸãŸã§ã¯å¯Ÿå¿ã§ããŸãããããã§ã¯èª€å·®ç³»ãžã®å€æãšç·åœ¢è¿äŒŒã䜿ã£ãŠãç·åœ¢MPCã«å¯Ÿå¿ãããŸãã
ãŸãè»äž¡ã®ã¢ãã«ã以äžã®ããã«å®çŸ©ããŸãã
\begin{align}
x_{k+1} &= x_k+v \cos \theta_kdt\\
y_{k+1} &= y_k+v \sin \theta_kdt\\
\theta_{k+1}&= \theta_k+\frac{v \tan \delta_k}{L}dt\\
\delta_{k+1} &= \delta_k-\tau^{-1}(\delta_k - \delta_{des})dt\\
\end{align} \tag{13}
ããã¯è»äž¡ã®ããããã£ã¯ã¹ãåŸèŒªäžå¿ã§èãããã®ã§ã$\ v, \theta, \delta, \delta_{des}$ã¯ããããåŸèŒªã®è»éãæ £æ§ç³»ã«å¯Ÿããè»äž¡è§åºŠãè»äž¡ã«å¯Ÿããã¿ã€ã€è§åºŠãã¿ã€ã€è§åºŠã®ç®æšå€ã$\ L\ $ã¯è»äž¡ã®ãã€ãŒã«ããŒã¹é·ãã$\ \tau\ $ã¯ã¿ã€ã€é ãã®æå®æ°ã§ãããªããããã§ã¯ç°¡åã®ããã«ãMPCã§å¶åŸ¡ããã®ã¯ã¹ãã¢è§ã®ã¿ãšããŠã$v$ã¯ç®æšé床ã«å¯ŸããŠå®ç§ã«å¶åŸ¡ã§ããŠããåæãšããŠããŸãã
å³ã§æžããšãããªæãã
ãã®åŒã«ã¯$\sin, \cos$ãå ¥ã£ãŠããã®ã§ããã®ãŸãŸç·åœ¢MPCãé©çšããããšã¯ã§ããŸããããŸããç·åœ¢åãæœãã«ããŠãã$\theta$ã埮å°ãšããä»®å®ãæã¡èŸŒãã®ã¯ç¡çããããŸãã
ããã§ããã®ãããªè»é远åŸåé¡ã«ãããŠã¯ãè»éè¿åã®ãã€ããã¯ã¹ã«å€æããããã§è¿œåŸèª€å·®ã埮å°ãšããä»®å®ãçšããã®ãäžè¬çã§ããå³ã§æžããšãããªæãã
ããã§ããã°$\theta$ã埮å°ãšããä»®å®ã§ãäœãšããªãããã§ãããã®æã®èª€å·®ãã€ããã¯ã¹ã®åŒã¯
\begin{align}
y_{k+1} &= y_k+v \sin \theta_kdt\\
\theta_{k+1}&= \theta_k+\frac{v \tan \delta_k}{L}dt - \kappa_r v \cos \theta_kdt\\
\delta_{k+1} &= \delta_k-\tau^{-1}(\delta_k - \delta_{des})dt\\
\end{align} \tag{14}
ãšãªããŸããä»åã¯æšªæ¹åã®èª€å·®ãã¹ãã¢ã§åãé€ãããšãç®çã®ãããxæ¹åã®ãã€ããã¯ã¹ã¯ç¡èŠããŠããŸãã
ãŸãã2è¡ç®ã®$\ \kappa_r \ $ã¯è»éäžã®åç¹ã«ãããè»éã®æ²çã§ãå³èŸºç¬¬3é
å
šäœã§åºæºåº§æšç³»ã®è§é床ã衚ããŠããŸããããã¯åºæºåº§æšç³»ãæéå€åããããšã«ãã£ãŠçããé
ã«ãªããŸãã
ãã®ãã€ããã¯ã¹ã«å¯ŸããŠç·åœ¢è¿äŒŒãæœããŸãã
ç·åœ¢è¿äŒŒã®å¯Ÿè±¡ã«ãªã倿°ã¯$\ y, \theta, \delta \ $ã®3ã€ã$\ y, \theta\ $ã«é¢ããŠã¯ã远åŸèª€å·®ããªã®ã§ã埮å°ãšããè¿äŒŒã§okã§ãã$\ \delta \ $ã«é¢ããŠã¯ã¹ãã¢ãªã³ã°è§ãªã®ã§ããã®ãŸãŸåŸ®å°ãšããŠè¿äŒŒã¯ã§ããŸããã
ïŒãšèšã£ãŠãã¿ã€ã€ã®è§åºŠã¯æå€§45床çšåºŠãªã®ã§ã20%çšåºŠã®èª€å·®ãåé¡ãªãå Žåã¯ãã®ãŸãŸ$\ \delta \ $ã埮å°ãšããããšããããŸããïŒ
è»é远åŸã®å Žåã¯è»éã®æ²ç$\ \kappa_r \ $ãããã£ãŠããã®ã§ããã®æ²çãæ²ããéã®ã¹ãã¢è§ã¯ããããã£ã¯ã¹ã¢ãã«ãçšããŠå€§ãŸãã«ä»¥äžã®ããã«èšç®ã§ããŸãïŒãã®å€ãäžã§åºãŠãã$\ U_{ref}\ $ã«ããããŸãïŒã
\ \delta_r = \arctan(L \kappa_r)
å®éã«è»éãæ²ãããšãã®ã¹ãã¢è§$\ \delta \ $ã¯ãã ããããã®å€$\ \delta_r \ $ã«ãªãã¯ããªã®ã§ã以äžã®åŒãæãç«ã¡ãŸãã
\ \delta = \delta_r + \Delta\delta,\quad \Delta\delta << 1 \
ãã®åŒã(14)åŒã«ä»£å ¥ããŠ$\ \Delta\delta\ $ã埮å°ã®è¿äŒŒãæœããŸãã
$\ \tan\delta \ $ã®åŒãè¥å¹²ããã©ãããã§ããã
\begin{align}
\tan\delta &\simeq \tan\delta_r + \left. \frac{d \tan \delta}{d\delta}\right|_{\delta=\delta_r}\Delta\delta\\
&=\tan\delta_r + \frac{1}{\cos ^2 \delta_r}\Delta\delta\\
&=\tan\delta_r + \frac{1}{\cos ^2 \delta_r}(\delta -\delta_r)\\
&=\tan \delta_r-\frac{\delta_r}{\cos ^2 \delta_r} + \frac{1}{\cos ^2 \delta_r}\delta\
\end{align}
ãšè¿äŒŒããã°MPCã®åœ¢åŒã«æã¡èŸŒããŸããããã§(14)åŒã®2è¡ç®ã¯
\begin{align}
\theta_{k+1}&= \theta_k+\frac{v \tan \delta_k}{L}dt - \kappa_r v \cos \theta_kdt \\
&\simeq \theta_k+\frac{v }{L}dt \left( \tan \delta_r-\frac{\delta_r}{\cos ^2 \delta_r} + \frac{1}{\cos ^2 \delta_r}\delta_k\right) - \kappa_r v dt \\
&= \theta_k+\frac{v }{L}dt \left( L\kappa_r-\frac{\delta_r}{\cos ^2 \delta_r} + \frac{1}{\cos ^2 \delta_r}\delta_k\right) - \kappa_r v dt \\
&= \theta_k+\frac{v }{L}\frac{dt}{\cos ^2 \delta_r}\delta_k -\frac{v }{L}\frac{\delta_rdt}{\cos ^2 \delta_r}
\end{align}
æçµçã«ã¢ãã«åŒã¯
\begin{align}
\begin{bmatrix}
y_{k+1}\\ \theta_{k+1} \\ \delta_{k+1}
\end{bmatrix}
=
\begin{bmatrix}
1 & vdt & 0 \\
0 & 1 & \frac{v }{L}\frac{dt}{\cos ^2 \delta_r} \\
0 & 0 & 1-\tau^{-1}dt
\end{bmatrix}
\begin{bmatrix}
y_{k}\\ \theta_{k} \\ \delta_{k}
\end{bmatrix}
+
\begin{bmatrix}
0 \\ 0 \\ \tau^{-1}dt
\end{bmatrix}
\delta_{des}
+
\begin{bmatrix}
0 \\ -\frac{v }{L}\frac{\delta_rdt}{\cos ^2 \delta_r} \\ 0
\end{bmatrix}
\end{align}
ãšãªããŸãããã®åŒã¯MPCã®ä»®å®ã®(1)åŒãšåã圢åŒãªã®ã§ãããè¡å$\ \ A,\ B,\ w\ $ã座æšå€æïŒè»éæ å ±ïŒã«äŸåããŠå€åããŸãããã®ããšãæç€ºãããããåŒå šäœã以äžã®ããã«æžããŠãããŸãã
\ x_{k+1} = A_kx_k+B_k u_k+w_k\
(1)åŒãšæ¯ã¹ããšã$\ A \rightarrow A_k \ $ãšãªã£ãŠããŸããããã¯$k$ã¹ãããïŒã€ãŸãk*dtç§ïŒåŸã®è»éè¿åã§ç·åœ¢è¿äŒŒãæœããéã®$A$è¡åãšããããšãªã®ã§ãäºåã«è»éãåãã£ãŠããã°æ±ããããšãã§ããŸãã
ãã®åŒã䜿ã£ãŠ(2)ã(6)åŒã®ããã«æŽæ°ã®åŒãæžããŠãããšãæçµçã«ä»¥äžã®ãããªåœ¢ã«ãªããŸãïŒé·ãïŒã
\begin{align}
\begin{bmatrix}
x_1\\x_2\\x_3\\
\vdots\\ x_{n}
\end{bmatrix}
=
\begin{bmatrix}
A_0\\A_1A_0\\A_2A_1A_0\\
\vdots\\ \prod_{i=0}^{n-1}A_{k}
\end{bmatrix}
x_0&+
\begin{bmatrix}
B_0&0&\cdots & & 0\\
A_1B_0 & B_1 & 0 & \cdots & 0\\
A_2A_1B_0 & A_2B_1 & B_2 & \cdots & 0\\
\vdots & \vdots & & \ddots & 0\\
\prod_{i=1}^{n-1}A_{k}B_0 & \prod_{i=2}^{n-1}A_{k} B_1& \cdots & A_{n-1}B_{n-1} & B_{n-1}
\end{bmatrix}
\begin{bmatrix}
u_0\\
u_1\\
u_2\\
\vdots\\
u_{n-1}
\end{bmatrix}
\\&+
\begin{bmatrix}
I & 0 & \cdots & & 0\\
A_1 & I & 0 & \cdots & 0\\
A_2A_1 & A_2 & I & \cdots & 0\\
\vdots& \vdots & & \ddots & 0\\
\prod_{i=1}^{n-1}A_{k} & \prod_{i=2}^{n-1}A_{k}&\cdots&A_{n-1}&I
\end{bmatrix}
\begin{bmatrix}
w_0\\
w_1\\
w_2\\
\vdots\\
w_{n-1}
\end{bmatrix}
\end{align}
èŠãç®ã¯è€éã§ãããçµå±ã¯(6)åŒãšåã圢ãªã®ã§ãç·åœ¢ã®ã±ãŒã¹ãšåæ§ã«æé©åãæœããŠããã°å®æã§ãã
å®éã«ã³ãŒãåããå Žåã¯æ¬¡ã®ãããªæãã«ãªããšæããŸãïŒäžã®ã³ãŒãã¯c++ãã€ã¡ãŒãžããŠããŸãïŒã
// è¡åãå®çŸ©
matrix F, G, S, H, Ure, Yref;
// çŸåšæå»ãååŸ
double t = getCurrentTime();
// æå»tã«å¯Ÿå¿ããè»éäžã®ç¹ãååŸ
point p = getTrajectoryPoint(t);
// ç®æšç¹ããä»ã®è¿œåŸèª€å·®ãèšç®
// ïŒä»åã¯x=[暪誀差ãè§åºŠèª€å·®ãã¹ãã¢è§]ãªã®ã§ãã¹ãã¢è§ã®æ
å ±ãå¿
èŠïŒ
double x0 = calculateInitialError(p);
// MPCã§äœ¿ãè¡åãèšç®
for (int i = 0; i < predict_num; ++i) {
// æå»ãæŽæ°
t += dt;
// ç®æšç¹ã®æ²çãšé床ãååŸ
curvature = getTrajectoryCurvature(t);
velocity = getTrajectoryVelocity(t);
// ç®æšå
¥åãã»ãã
updateReferenceInput(i, Uref, velocity curvature);
// F, G, H, Sã®è¡åãç®æšéåºŠãšæ²çã«å¿ããŠèšå®
updateMPCMatrix(i, F, G, H, S, velocity, curvature);
}
// éã¿è¡åãã»ãã
setWeightMatrix(Q, R);
// ç®æšè»éã®ç¹ãYrefãšããŠã»ãã
setReferenceOutput(Yref)
// åžæé©ååé¡ãé©çšããããã®è¡åãèšç®
matrix M = (C * G).transpose() * Q * C * G + R;
vector N = (C * (F * x0 + S * W) - Yref).transpose() * Q * C * G - Uref.transpose() * R;
// åžæé©ååé¡ãè§£ã
vector Uopt = solveQuadProg(M, N);
// çŸåšæå»ã§äœ¿ãå
¥åãåãåºã
u = Uopt(0);
è©äŸ¡é¢æ°ãšæææ¡ä»¶ã®äœãæ¹
ãããŸã§èª¬æããæ¹æ³ã§MPCã®èšèšã¯äžéãå¯èœã§ããããã§ã¯å ·äœçã«è©äŸ¡é¢æ°ãšæææ¡ä»¶ã®èšå®ãè¡ãæ¹æ³ã«ã€ããŠè¿°ã¹ãŸããå°ã现ãã話ã«ãªãã®ã§ãèªã¿é£ã°ããŠããã ããŠãæ§ããŸããã
è©äŸ¡é¢æ°
äžè¬çãªéã¿ã®ä»ãæ¹ã«ã€ããŠ
MPCãåºæ¬ã¯LQRãšåãæ¹æ³ã§éã¿ä»ããè¡ããŸãã
è©äŸ¡é¢æ°ã¯(9)åŒã§æžããããã«ãåºåãšå ¥åã®ãã©ã³ã¹ãåãããã®ãã®ã§ããã
äŸãã°äžã§èª¬æããè»äž¡ã®è»é远åŸåé¡ã§$C$ãåäœè¡åãšãããšãåºå$y=x=[y,\ \theta,\ \delta]$ãšãªããŸããïŒåºåã®$y$ãšæšªåå·®ã衚ã$y$ã®æåã被ã£ãŠããŸã£ãã®ã§ãããã ãæšªåå·®ã$e$ãšãããŠãã ãããïŒ
äŸãšããŠè©äŸ¡é¢æ°ã®éã¿è¡å$Q_1$ã以äžã®ããã«æ±ºããŠãããŸãã
Q_1=
\begin{bmatrix}
q_e&0&0&0&0&0\\
0&q_{\theta}&0&0&0&0\\
0&0&0&0&0&0\\
0&0&0&q_e&0&0\\
0&0&0&0&q_{\theta}&0\\
0&0&0&0&0&0
\end{bmatrix}
ããã§$n=2$ãšããŠè©äŸ¡é¢æ°(9)åŒã®ç¬¬ïŒé ãæžãäžããšæ¬¡ã®ããã«ãªããŸãïŒ$Y_{ref}$ã¯0ãšããŸãïŒã
\quad \ q_e(e_0^2+e_1^2)+q_{\theta}(\theta_0^2+\theta_1^2)\ \quad
ãããèŠãã°ã$q_e$ãæšªæ¹å誀差ãžã®éã¿ã$q_{\theta}$ãè§åºŠèª€å·®ãžã®éã¿ã«ãªã£ãŠããããšãåãããŸãã
ãã®ãšãäŸãã°ã$q_{\theta}$ã0ã«ããã°ãè»äœã®è§åºŠã¯ã©ãã ãã¶ããŠãããããè»éã«è¿œåŸããããšããå¶åŸ¡ã«ãªããŸããã§ããã1cmã®èª€å·®ãæ£ãããã«æå€§è§åºŠãŸã§ãã³ãã«ãåãããŠãå°ããŸããããããåŸã ã«$q_{\theta}$ã®å€ãå¢ãããŠãããšããªãã¹ããé²è¡æ¹åãåããªãã誀差ãçž®ããŠããšãªããŸãããã¡ãã®ã»ããå®çšçã§ããããªããã®äŸã§ã¯ã$q_{e}$ãPã²ã€ã³ã$q_{\theta}$ãDã²ã€ã³ã®ãããªåããããŸãããããã®ãã©ã³ã¹ïŒ$\ R\ $ãå«ããŠïŒã¯å®éã«å®éšãããªããæ±ºããŠãããŸãã
MPCç¹æã®éã¿ã®ä»ãæ¹
äžã®ããã«éã¿ä»ãã«å¯Ÿè§æåã ããäœ¿ãæ¹æ³ã¯LQRãšå šãåãèãæ¹ã§ãããMPCã¯é察è§é ãããŸã䜿ã£ãŠé¢çœãããšãã§ããŸãã
ããã§$Q_2$ãæ¬¡ã®ããã«æžããŠã¿ãŸãã
Q_2=
\begin{bmatrix}
0&0&0&0&0&0\\
0&0&0&0&0&0\\
0&0&q_d&0&0&-q_d\\
0&0&0&0&0&0\\
0&0&0&0&0&0\\
0&0&-q_d&0&0&q_d
\end{bmatrix}
$n=2$ã§ã$Q_2$ã䜿ã£ãè©äŸ¡é¢æ°ã®ç¬¬ïŒé ãå±éãããš
\quad \ q_d(\delta_0^2-2\delta_0\delta_1+\delta_1^2)=q_d(\delta_0-\delta_1)^2\ \quad
ãšãªããŸããããã¯$q_d$ã®å€ã$\delta$ã®å€åéã«éã¿ããããŠããããšã«ãªãããæ¥ã«ã¿ã€ã€ãåãããªãã§ããããšããããšã«ãªããŸãããã®é ã远å ããããšã§ããæ¥ãã³ãã«ãåã£ãŠãŸã§è¿œåŸç²ŸåºŠãç¶æãããã©ãããã®ãã©ã³ã¹ãåãããããšãã§ããŸãã
MPCã¯é·ãæéãèŠãŠæé©åããããã®ã§ãæé©å倿°ã®äžã«æéå€åã®ç¶æ ãå«ãŸããŠããŸãããããããŸãå©çšããããšã«ãã£ãŠãç¶æ ã®å€åéãè©äŸ¡é¢æ°ã«æã¡èŸŒãããšãã§ããã®ã§ãã
ãŸããéã¿è¡åã¯ç·åœ¢ã«è¶³ãåãããããšãã§ããã®ã§ãæçµçãªéã¿ã$Q=Q_1+Q_2$ãšããŠå©çšããããšãã§ããŸãã
å ¥åå¶çŽ
äžã§äœåºŠã説æãããã¿ã€ã€ã®è§åºŠã¯$\pm$30床以å ããšããã®ã¯ãå ¥åå¶çŽããšåŒã°ãããã®ã§ããããæºããã«ã¯
\ \ u_{min} < u < u_{max}\ \
ã®äžçåŒãæºããããã«åžæé©åãæããããšã«ãªããŸãããã®å€æ°$u$ã¯åžæé©åã®å¯Ÿè±¡ãšãªã倿°$U_{ref}$ã®èŠçŽ ãªã®ã§ããã®ãŸãŸæææ¡ä»¶ãšããŠèšè¿°ã§ããŸãã
å ¥åã®åŸ®åã®å¶çŽ
ãã以å€ã«ãäŸãã°ãã¿ã€ã€ã®å€åé床ã«äžéãèšããããå Žåãªã©ã¯ã©ãããã°ããã§ãããããã¿ã€ã€ã®å€åé床ã¯ããã§ã¯$\dot u$ã«åœããã®ã§ãæ°åŒçã«ã¯
\quad \ \dot u_{min} < \dot u < \dot u_{max}\ \quad
ãšãªãã®ã§ãããä»ååãæ±ã£ãåžæé©ååé¡ã«$\dot u$ãªããŠå€æ°ã¯åºãŠããŸããããããäžãšåãããæ¹ã§æææ¡ä»¶ã«å ¥ã蟌ã¿ãŸãã
ãŸã$\dot u$ã$(u_k-u_{k-1})/dt$ãšé¢æ£åããäžã®åŒã«å ¥ããŠäž¡èŸºã«$dt$ãæããŸãã
\quad \ \dot u_{min}dt < u_k - u_{k-1} < \dot u_{max}dt \ \quad
詊ãã«$n=3$ãšããŠæžãäžããšã
\ \dot u_{min}dt < u_1 - u_0 < \dot u_{max}dt\\
\ \dot u_{min}dt < u_2 - u_1 < \dot u_{max}dt
ãšãªããŸãããããäžçå·ã®åããããããŠä»¥äžã®ããã«æžããŸãã
\ u_1 - u_0 < \dot u_{max}dt\\
\ -u_1 + u_0 < -\dot u_{min}dt\\
\ u_2 - u_1 < \dot u_{max}dt\\
\ -u_2 + u_1 < -\dot u_{min}dt
(12)åŒã§æžããããã«ã倿°$x$ãæã€åžæé©åã®æææ¡ä»¶ã¯ä»¥äžã®åœ¢ã§æææ¡ä»¶ãæå®ããããšãã§ããã®ã§
\ Ax\leq b\
ããã«åãããã«å€åœ¢ããŠãããšã
\begin{bmatrix}
-1 & 1 & 0\\
1 & -1 & 0 \\
0 & -1 & 1\\
0 & 1 & -1
\end{bmatrix}
\begin{bmatrix}
u_0\\u_1\\u_2
\end{bmatrix}
\leq
\begin{bmatrix}
\dot u_{max}dt\\-\dot u_{min}dt\\ \dot u_{max}dt \\ -\dot u_{min}dt
\end{bmatrix}
ã®åœ¢ã§$\ A,\ b$è¡åãæå®ããŠããã°ïŒæ¬¡è¿äŒŒã®ã¬ãã«ã§åŸ®åå€ã®æææ¡ä»¶ãå ¥ããããšãã§ããŸãã
ããã§ã¯ç°¡åãªäŸã瀺ããŸããããäœãå¶çŽãå ¥ããããšæã£ããè©äŸ¡é¢æ°ãæææ¡ä»¶ã®åŒãå®éã«æžãäžããŠãã«ããã£ãããŠã¿ãŠãã ãããåŒå€åœ¢ã䜿ããšæå€ãšããŸãåã蟌ãããããããŸããã
æéé åãšåšæ³¢æ°é åãšMPCïŒäœè«ïŒ
ãå€å žå¶åŸ¡ãšçŸä»£å¶åŸ¡ã®éãã¯ãåšæ³¢æ°é åã§è§£æãããæéé åã§è§£æãããã ããã£ãŠæç« ãããèŠãŸãããå¶åŸ¡çè«ãç¥ããªã人ã«ãšã£ãŠã¯ãã®èª¬æã¯é£ãããšæããŸãã®ã§ãå°ã解説ããŸãã
â»ä»¥äžã®æç« ã¯ãããããããéèŠããŠããããŸã§é°å²æ°ã§æžããŠããŸãã
å€å žå¶åŸ¡
PIDå¶åŸ¡ãèªçããã®ã¯ç£æ¥é©åœã®æä»£ãšèšãããŠããŸãããªã®ã§18äžçŽã§ããããã®ããã¯ãã¹ãŠã®å¶åŸ¡å±ããPIDã¯ãã¥ãŒãã³ã°ãå šãŠã ïŒïŒããšèããŠããããã§ãïŒããã¯ãããã«çãéãã§ããïŒã
ã§ãããã°ããããŠããã£ãŒãããã¯ãæãããšãã«è¬ã®æ¯åãçããããšãããããšãããããŸãããç©äœã®éåã¯ãã¹ãŠïŒæéïŒåŸ®åæ¹çšåŒã§æžããã®ã§ããã®åŸ®åæ¹çšåŒãè§£æããã°æ¯åã®åå ããããã¯ãã§ãã
ãããåŸ®åæ¹çšåŒãšããã®ã¯ãªããªãè§£æãé£ãããäžåã«åå ãããããŸããã
ãã®åå ã¯1868幎ã«ãã¯ã¹ãŠã§ã«ã«ãã£ãŠçè«çã«ç€ºãããã®ã§ããããã®æãã§ã«PIDã®èªçãã100幎è¿ããçµã£ãŠããŸãããããã ãåŸ®åæ¹çšåŒã®è§£æã¯é£ããããã§ãã
æ¯åã®åå ãããã£ãåŸã¯ãã©ã®ããã«å¶åŸ¡ç³»ã®æ§èœãè§£æãããã«çŠç¹ãåœãããŸããããåŸ®åæ¹çšåŒãçŽæ¥åãæ±ãææ³ã¯ãã§ã«éçã§ããã
ããã§ã©ãã©ã¹å€æãç»å ŽããŸããããã€ã¯åŸ®åãæãç®ã«å€ããŠããã倿ãªã®ã§ãã©ãã©ã¹å€æãéããšåŸ®åæ¹çšåŒãä»£æ°æ¹çšåŒã«å€ããããã§ãããããŠä»£æ°æ¹çšåŒã¯åãæ±ããç°¡åãªã®ã§ãåŸ®åæ¹çšåŒãããã¯ããã«è©³çްã«è§£æãã§ããŸãã
ãŸãããã®ã©ãã©ã¹å€æã¯ããŒãªãšå€æãšè¿ãé¢ä¿ããããã©ãã©ã¹å€æãéããåŸã®ä»£æ°æ¹çšåŒã¯åšæ³¢æ°ãšå¯æ¥ã«é¢ãã£ãŠããŸãããªã®ã§ããã®ä»£æ°æ¹çšåŒãè§£æãããšãããã®å¶åŸ¡åšã¯1Hzã®sinæ³¢ã«è¿œåŸããããšãã®å¶åŸ¡èª€å·®ã¯1%ã ãã100Hzã§ã¯30%ã®èª€å·®ãåºãããšãã£ãè§£æãå¯èœã«ãªãã®ã§ãããããåšæ³¢æ°è§£æãšåŒãã§ããŸãã
ãã®åšæ³¢æ°è§£æããŸãšãããã®ãå€å žå¶åŸ¡çè«ãšåŒã°ããŠããããã§ãã
ãã®åšæ³¢æ°è§£æã¯éåžžã«æçšã§ãåœæã®å¶åŸ¡æè¡è ã®äžã§æ¥éã«åºãŸã£ãŠãããŸããã
çŸä»£å¶åŸ¡
å€å žå¶åŸ¡ã宿ããåŸã1960幎代ã«ã«ã«ãã³ã«ãã£ãŠãå€å ¥åå€åºåç³»ãžã®é©çšãç®çãšããçŸä»£å¶åŸ¡ãèªçããŸããããããŸã§1å ¥åºåã ã£ãå€å žå¶åŸ¡ã«å¯Ÿããå€å ¥åºåãåãæ±ãããã«çšããç§å¯å µåšããè¡åãã§ãã
ãŸãçŸä»£å¶åŸ¡ãããæé©æ§ãã®æŠå¿µãåãå ¥ããããŸãããäŸãã°ãæå°ã®å ¥åã§å¶åŸ¡ãããããšãã§ãããã®æå°å ¥åã®åé¡ã¯æ°åŒäžãç¡éæéãããŠå¶åŸ¡ãããšãã®å ¥åïŒã®2ä¹ïŒã®æéç©åãæå°åããå¶åŸ¡åšãèšèšããããšããŠå®åŒåãããŸããããã«åšæ³¢æ°ã®è©±ã¯å šãåºãŠããŸããããã®ããã«å¶åŸ¡ç³»ãèšèšè§£æããããšãæéé åã§ã®è§£æãšåŒã³ãŸãã
åœæå·¥åŠã§ã¯çããã£ãè¡åãé§äœ¿ããæé©åãåãå ¥ããçŸä»£å¶åŸ¡ã¯æ°åŠçã«ã¯éåžžã«çŸããçè«ã«ãªããŸãããå¯äžã®æ¬ ç¹ãšããã°ããè¡åããšãåšæ³¢æ°è§£æãã®çžæ§ãæªãã£ãããšã
è¡åã䞻軞ã«çè«ãæ§ç¯ããçŸä»£å¶åŸ¡ã¯ãå€å žå¶åŸ¡ã§å¹ãããåšæ³¢æ°è§£æã®ããŠããŠã掻ããããšãåºæ¥ãŸããã§ããã
å çšãæžããŸããããïŒç¹ã«å€æ¬¡å ã®ïŒåŸ®åæ¹çšåŒãçŽæ¥åãæ±ãã®ã¯æ¬è³ªçã«é£ããã®ã§ãã
å ·äœäŸãæãããšã質éãå€åãã察象ã®å¶åŸ¡ãèãããšããåšæ³¢æ°è§£æã§ã¯ç³»ãå®å®ãšãªã質éç¯å²ã®å¿ èŠå忡件ãèšããã®ã«å¯ŸããçŸä»£å¶åŸ¡ã§ã¯å®å®ãšãªãå忡件ããæç€ºããããšã¯ã§ããŸããããããŠããã¯çŸä»£å¶åŸ¡ã®åé¡ã§ã¯ãªããè¡åã®æ¬è³ªçãªåé¡ã§ãã
æé©åãæœããŠããåãPIDããã¯æ§èœã¯é«ãã¯ããªã®ã§ãããåœæã¡ãžã£ãŒã ã£ãåšæ³¢æ°è§£æã䜿ããªããã£ãŠãããããè¡åã£ãŠäœãæè©®æ°åŠè ã®ãéã³ã ãããšããçç±ã§ãªããªãåºãã¯åãå ¥ããããŸããã§ããã
ä»ã®æä»£ã§ããæéæãããŠã·ã¹ãã åå®ãããŠãè§£æã®ããããã諊ããŠããã£ãšçŸä»£å¶åŸ¡ãäœã£ãŠãPIDãšæ§èœãã»ãšãã©å€ãããªãã£ããšãããããããªè©±ã§ããçŸä»£å¶åŸ¡ã¯ããªãæ°åŠããŒã¹ã«ãªãã®ã§ããšããããPIDã§ãã¥ãŒãã³ã°ã ãæ¬¡ã¯çŸä»£å¶åŸ¡ã ãçãªããªã ãšå€§æµã®å Žåã¯æ§èœãåºãŸããã
ãããªç¢å ã«ããã®ã·ã¹ãã ã質éã3å²ãããå€ããå¯èœæ§ãããããããããèæ ®ããŠãããšèšããããšããã£ã±PIDïŒåšæ³¢æ°è§£æïŒããªãããšãªãèš³ã§ãã
ã«ã«ãã³ãã£ã«ã¿ãŒãšLQR
ã¡ãªã¿ã«çŸä»£å¶åŸ¡ãšåæã«èªçããã«ã«ãã³ãã£ã«ã¿ãŒã¯äžã®äžã«åºã浞éããŠããŸãããã£ã«ã¿ãªã³ã°ãšå¶åŸ¡ã¯éåžžã«ãã䌌ãŠããŠãã€ã¡ãŒãžãšããŠã¯ãPIDãIIRãã£ã«ã¿ãLQRãã«ã«ãã³ãã£ã«ã¿ãŒãšåããžã£ã³ã«ã«åœãããŸãã
ã«ã«ãã³ãã£ã«ã¿ãŒãšæé©å¶åŸ¡ïŒLQRïŒã¯æ°åŒçã«ã¯å šãåããªã®ã§ãããäžçªã®éãã¯å®äžçãšã®ãã£ãŒãããã¯ã®æç¡ã§ããã«ã«ãã³ãã£ã«ã¿ãŒã¯ã»ã³ãµãŒåºåã«å¯ŸããŠãã£ã«ã¿ãªã³ã°ãããã ããªã®ã§ãå°ãçµæãã¬ã¿ã€ããŠã誰ãæå¥ãèšããŸããããªã®ã§ããšããããæé©ãªã䜿ã£ãšãããã§ãªããšããªãããã§ããäžæ¹ã§å¶åŸ¡ã¯çµæãã¬ã¿ã€ãïŒå¯Ÿè±¡ãæ¯åãããã§ãã®ã§ãäœæ ã ïŒè§£æããïŒãšèšãããããã§ãã
ãããªããšãè§£æããã«ããLQRã䜿ãããªãã®ãçŽåŸã§ãã
MPC
ãããMPCã¯ã©ããªã®ããšèšããšãçŸä»£å¶åŸ¡ïŒæéé åïŒã®è€éããåŒãç¶ãã§ããã«ãããããããè¿å¹Žè²ã ãªãšããã§å®çšåããå§ããŠããŸããããã¯ãã¯ãMPCã®å§åçãªæ§èœãã·ã§ã¢ãæ¡å€§ãããŠããçç±ãªã®ããšæãããŸãã
MPCã®ç¹åŸŽã®ç« ã§ãæžããŸããããMPCã¯ãšããããå šéšãŸãšããŠèšç®ããŠããŸããªããªãªã®ã§ãäœãšãªãæ§èœãåºãŸãã
ãããããããã©æ§èœåºããã䜿ããïŒãšããèããæåãåããã®ã¯è¿å¹Žã®ç»ååŠçãèŠãã°æããã§ãããå¶åŸ¡ãä»åŸã¯åŒ·ååŠç¿ãšãã«çœ®ãæãã£ãŠããã®ã§ãããïŒãŸã ã ãã¶å ã ãšã¯æããŸããïŒã
åè
ã»ã¢ãã«äºæž¬å¶åŸ¡ -å¶çŽã®ããšã§ã®æé©å¶åŸ¡
ã»matlabãœãŒã¹ã³ãŒãïŒmatlabã«ã¯mpcã®ããŒã«ããã¯ã¹ãããã®ã§ãããããã§ã¯ããŒã«ããã¯ã¹ã¯äœ¿ããã«æžããŠããŸãã







