状態フィードバック(レギュレータ)~2

11. 状態フィードバック

はじめに

状態フィードバック(レギュレータ)の実システムへの適用について説明します。

一般のシステムでは、全ての状態をゼロに収束させるよりも、目標状態に保つことが要求される場合が多いため、状態フィードバック(レギュレータ)の実システムへの適用にはもう1段の検討が必要になります。

前走車追従制御への適用の場合

状態フィードバック(レギュレータ)は、制御目標との偏差をゼロにするので、モデルを制御目標との偏差のモデルに変更します。例えば、状態量を目標値(obj)とその偏差(d)に分けて

目標車間距離:\(L_{obj}\) 目標車間距離との偏差:\(L_{d}\)
目標車速:\(V_{obj}\) 目標車速との偏差:\(V_{d}\)

とすると

車間距離 \(L=L_{obj}+L_{d}\)
車速 \(V=V_{obj}+V_{d}\)  と表現できます。
※加速度 \(A\) 加速度は目標状態が0なので、そのまま

制御目標との偏差の関係をモデルにすると、加速度と速度の関係は
\[\frac{d V_{d}}{d t}=A \hspace{0.5cm} \frac{d L_{d}}{d t}=-V_{d}\]加速指示の応答(Tは時定数、加速指示Acmdに対して加速度Aは一次遅れで追従)
\[\frac{d}{d t} A=-\frac{1}{T} A+\frac{1}{T} A_{cmd}\]加速指示Acmdから加速度、速度、車間距離の関係を状態方程式にまとめてモデル化すると
\[\frac{d}{d t}\left[\begin{array}{c}L_{d} \\ V_{d} \\ A\end{array}\right]=\left[\begin{array}{ccc}0 & -1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & -\frac{1}{T}\end{array}\right]\left[\begin{array}{c}L_{d} \\ V_{d} \\ A\end{array}\right]+\left[\begin{array}{c}0 \\ 0 \\ \frac{1}{T}\end{array}\right] A_{cmd}\]

連続系で状態フィードバックゲインK を設定してから離散時間モデル化する

状態フィードバックゲインK を設定します。状態フィードバック(レギュレータ)の基本式
\[\frac{dx(t)}{dt}=(A-BK) x(t)\]において、連続時間系の状態フィードバックが収束するための安定条件は、

特性方程式 \(\operatorname{det}(\lambda I-(A-B K))=0\)

の固有値 (解) λ の実部が負です。(安定条件はこちら
今回のシステムは3次なので \(K=\left[k_{1} k_{2} k_{3}\right]\) とすると、特性方程式は
\[\operatorname{det}(\lambda I-(A-BK))\]\[=\operatorname{det}\left(\left[\begin{array}{lll}\lambda & 0 & 0 \\ 0 & \lambda & 0 \\ 0 & 0 & \lambda\end{array}\right]-\left[\begin{array}{ccc}0 & -1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & -\frac{1}{T}\end{array}\right]+\left[\begin{array}{ccc}0 & 0 & 0 \\ 0 & 0 & 0 \\ \frac{k_{1}}{T} & \frac{k_{2}}{T} & \frac{k_{3}}{T}\end{array}\right]\right)\]\[=\operatorname{det}\left(\left[\begin{array}{ccc}\lambda & 1 & 0 \\ 0 & \lambda & -1 \\ \frac{k_{1}}{T} & \frac{k_{2}}{T} & \lambda+\frac{k_{3}+1}{T}\end{array}\right]\right) \]\[=\lambda^{3}+\frac{k_{3}+1}{T} \lambda^{2}+\frac{k_{2}}{T} \lambda-\frac{k_{1}}{T}\]   ・・・・①

一方、安定条件は「固有値 (解) λ の実部が負」より \(λ=−d\) (dは正の整数)とすると
\[(\lambda+d)^{3}=\lambda^{3}+3d \lambda^{2}+3d^{2} \lambda+d^{3}\]   ・・・・② ※計算を簡単にするために重根にしています

式①と式②の係数比較から

  \(k_{1}=-d^{3}T\)    \(k_{2}=3d^{2}T\)    \(k_{3}=3 dT-1\)    

これで状態フィードバックのゲインKが設定できました。 
※状態フィードバックゲインの計算は、このモデルでは手計算できましたが、3次以上のモデルの場合は制御設計ツールなどの利用が必要になることが多いと思います。

離散時間モデル化

状態フィードバック(レギュレータ)の基本式
\[\frac{d x(t)}{d t}=(A-B K) x_{(t)}\]を離散化する際、制御入力は分離して設計しました。
\[A \rightarrow P \quad B \rightarrow Q \quad u=-K x\]\[x_{(n+1)}=Px_{(n)}+Q\left(-Kx_{(n)}\right)\]
前走車追従制御モデルの状態方程式は\[\frac{d}{d t}\left[\begin{array}{c}L_{d} \\ V_{d} \\ A\end{array}\right]=\left[\begin{array}{ccc}0 & -1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & -\frac{1}{T}\end{array}\right]\left[\begin{array}{c}L_{d} \\ V_{d} \\ A\end{array}\right]+\left[\begin{array}{c}0 \\ 0 \\ \frac{1}{T}\end{array}\right] A_{cmd}\]
ですから、\(-Kx\) はシステムの入力である加速指示値Acmdです。この状態方程式を離散時間モデル化します。

ダウンロード

こちらから状態フィードバックによる前走車追従制御のEXCELファイルをダウンロードできます。

状態フィードバックのゲインKの計算と離散時間モデル化の処理は状態方程式のシートです。


制御目標との偏差のモデルに変更しているため、符号が違うところはありますが、車両走行モデルの離散化処理とほぼ同じです。

シミュレーション

状態フィードバックによる前走車追従制御の収束性をシミュレーションで確認します。
EXCELファイルのシミュレーションのシートです。

状態フィードバック(レギュレータ)制御は、目標車間距離との偏差(Ld)や目標車速との偏差(Vd)、加速度(A)をゼロに収束させることで以下の追従制御を実現しています。

  • 車間距離を初期状態の60[m]から目標車間距離50[m]に短縮
  • 走行速度は前走車の速度の15[m/s]を維持し追従走行

\(-Kx_{(n)}\)をシステムへの加速指示Acmdとして計算し制御入力とする部分(赤枠内の計算)がコントローラに実装する処理になります。


結果

車間距離を初期状態の60[m]から目標車間距離50[m]に短縮し、走行速度は前走車の速度の15[m/s]を維持し追従走行しています。


目標車間距離との偏差Ld、目標車速との偏差Vd、加速度Aで見ると、それぞれゼロに収束しています。

EXCELファイルの上部のスライドボリュームで固有値 λ を0~-1まで変更できます。
固有値 λ=0 では安定条件から収束しないことが確認できます。

最後までお読みいただき、ありがとうございました。

 最後は最適レギュレータです → リンク

◎以下はオプションです。

 モデル予測制御(MPC)へ → リンク
 適応アルゴリズム(適応フィルタ)→ リンク
 カルマンフィルタ → リンク


QooQ