MRAC 適応制御の参照モデル追従シミュレーター 一覧へ
対話型シミュレーター

MRAC 適応制御の参照モデル追従シミュレーター

プラント出力 y(t) が参照モデル y_m(t) を追いかけ、追従誤差 e が縮み、適応ゲイン θ(t) が収束する様子をリアルタイムに描きます。適応ゲイン γ を上げると速く収束し、上げすぎると発散します。

パラメータ入力
プリセット
プラント時定数 τ_p
s

制御対象の応答の遅さです。

参照モデル時定数 τ_m
s

目標とする応答の速さです。

適応ゲイン γ
-

パラメータ更新の強さです。大きいほど速く収束し、過大だと発散します。

外乱強度
%

未モデル化外乱や負荷変動の大きさです。

ライブ数値
0.0
時刻 t [s]
0.00
プラント y
0.00
参照モデル y_m
0.000
追従誤差 e
0.00 / 0.00
θ_r / θ_y
適応中…
出力追従 y(t) vs 参照モデル y_m(t)
プラント y(t) 参照モデル y_m(t) 指令 r(t)
追従誤差 e = y − y_m
適応ゲイン θ_r(t), θ_y(t)
θ_r (前向き) θ_y (帰還) 理想値 θ*
計算結果
定常追従誤差 (RMS)
適応整定時間
振動傾向
適応進行度
理論・主要公式

一次プラントを一次参照モデルに追従させます:

$$\dot y=-\tfrac{1}{\tau_p}y+\tfrac{1}{\tau_p}u+d,\qquad \dot y_m=-\tfrac{1}{\tau_m}y_m+\tfrac{1}{\tau_m}r$$

制御則とMITルール(適応則):

$$u=\theta_r\,r-\theta_y\,y,\qquad e=y-y_m,\qquad \dot\theta_r=-\gamma\,e\,r,\quad \dot\theta_y=\gamma\,e\,y$$

理想マッチングゲイン(ゲイン曲線が収束する先):

$$\theta_r^{*}=\frac{\tau_p}{\tau_m},\qquad \theta_y^{*}=\frac{\tau_p}{\tau_m}-1$$

$\gamma$ を大きくすると収束は速くなりますが、過大だと $\theta$ が振動・発散します。外乱があると $e$ が完全には 0 にならず、ゲインが揺れ続けます(パラメータドリフト)。検証例:$\tau_p=2.5,\ \tau_m=1.2$ → $\theta_r^{*}\approx2.08,\ \theta_y^{*}\approx1.08$ に収束。

MRAC(モデル規範適応制御)とは

MRAC(Model Reference Adaptive Control)は、制御対象(プラント)の正確なパラメータが分からない、あるいは運転中に変化する場合でも、出力が「こう動いてほしい」という参照モデルの応答に一致するよう、コントローラのゲインをオンラインで自動調整する適応制御の代表的手法です。

本シミュレーターでは、一次遅れプラント $\dot y=-y/\tau_p+u/\tau_p+d$ を、望ましい一次遅れ参照モデル $\dot y_m=-y_m/\tau_m+r/\tau_m$ に追従させます。コントローラは前向きゲイン $\theta_r$ とフィードバックゲイン $\theta_y$ を持ち、追従誤差 $e=y-y_m$ を使ってMITルールでゲインを更新します。

このシミュレーターの見方

出力追従図:青い線がプラント出力 y(t)、橙の破線が参照モデル出力 y_m(t) です。最初は青が橙からずれていますが、時間が経つと重なっていきます。重なった時が「適応完了」です。

追従誤差図:e=y−y_m の履歴です。指令が切り替わる瞬間は誤差が跳ねますが、適応が進むとピークが小さくなり 0 線に貼り付きます。誤差がいつまでも縮まなければ、γ が小さすぎるか大きすぎます。

適応ゲイン図:θ_r(緑)と θ_y(赤)が、白い点線で示した理想マッチングゲイン θ* に向かって動きます。ゲインが平らになれば適応が落ち着いた合図。暴れ続けるなら γ が大きすぎる(振動・暴走)サインです。

会話で学ぶMRAC 適応制御の参照モデル追従

🙋
アニメーションで青いプラントの線が、だんだん橙の参照モデルの線に重なっていきますね。これは何が起きているんですか?
🎓
ざっくり言うと、コントローラが「自分のゲインがまだ合ってない」と気づいて、その場で直しているんだ。追従誤差 e=y−y_m を見て、誤差が出る方向と逆にゲインを少しずつ動かす。これがMITルール dθ/dt=−γ e φ だよ。重なった瞬間が適応完了だ。
🙋
なるほど。じゃあ適応ゲイン γ を大きくすれば、もっと速く重なって嬉しいんじゃないですか?
🎓
途中まではそう。「高速収束」プリセットを押すと γ が大きくて、数秒で誤差が消えるのが見える。でも「振動」プリセットを押してごらん。γ が極端に大きいと、1回の更新で行き過ぎてしまって、ゲイン θ が大きく暴れ、外乱があると誤差がいつまでも揺れ続ける。例えるなら、ハンドルを切りすぎて蛇行する車だね。
🙋
適応ゲインの図で、緑と赤の線が白い点線に近づいていきます。あの点線は何ですか?
🎓
あれが理想マッチングゲイン θ* なんだ。一次系なら θ_r*=τ_p/τ_m、θ_y*=τ_p/τ_m−1 と理論で計算できる。MRACはこの値を知らずに、誤差だけを頼りにそこへたどり着く。点線にピタッと乗れば「正解のゲインを自力で見つけた」ということ。実機ではプラント時定数が分からないから、これが効いてくる。
🙋
外乱スライダーを上げると、重なったあとも線がちょっと揺れ続けますね。これは問題ですか?
🎓
いい観察だ。外乱があると誤差が完全には 0 にならないから、MRACは「まだ誤差がある」と思ってゲインを動かし続ける。これをパラメータドリフトと呼ぶ。放っておくとゲインがゆっくり暴走することもある。実務では誤差が小さい領域で適応を止めるデッドゾーンや、σ修正・e修正でこれを抑えるんだ。
🙋
じゃあ、このツールで γ を決めたら、そのまま実機に使ってよいですか?
🎓
ここでは初期検討として扱ってほしい。この簡易モデルは一次プラント+一次参照モデルだけ。実機はむだ時間や高次の振動モードがあって、MITルールそのままだと不安定になりやすい。最終判断では規格値・実測・詳細解析・メーカー条件を確認して、リアプノフ設計の適応則や入力制限も併用してね。

実世界での応用

サーボ・モーション制御:負荷慣性が運転中に変わるNCフライス盤の多軸サーボやロボットアームで、固定ゲインでは追従が悪化する状況の自動補償。

航空・宇宙:燃料消費で機体質量が大きく変わる航空機・ミサイルの飛行制御(MRACの歴史的な発祥分野の一つ)。

プロセス・建設機械:温度や材料で動特性が変わる化学プロセス、油圧アクチュエータの負荷変動補償。

よくある誤解と注意点

「γ は大きいほど良い」は誤り:γ は収束速度と安定性のトレードオフです。振動プリセットで、過大な γ がゲインを暴走・振動させる様子を必ず確認してください。

「誤差が 0 = ゲインが正解」とは限らない:持続的励振(PE条件)が無い指令だと、誤差は 0 でもゲインが理想値に収束しないことがあります。指令が十分に「変化」していることが重要です。

外乱と未モデル化ダイナミクスはドリフトを招く:素のMITルールは外乱に弱く、ロバスト修正(σ修正・デッドゾーン・正規化)が実務では必須です。

よくある質問

まず追従誤差 e=y−y_m が時間とともに 0 に近づくかを見ます。アニメーションでプラント出力 y(t)(青)が参照モデル出力 y_m(t)(橙の破線)に重なっていけば適応が進んでいます。次に適応ゲイン θ_r, θ_y が水平に落ち着くかを見ます。ゲインが平らになり誤差が消えた瞬間が「適応完了」です。
MITルール dθ/dt=−γ e φ は γ が大きいほどゲインを速く更新します。γ が過大だと1ステップの更新量が大きくなり、誤差の符号が反転する前に行き過ぎてしまい、ゲインが振動・発散します。本シミュレーターの「発散」プリセットで γ を極端に大きくすると、θ(t) が暴れて誤差が縮まらない様子が見えます。実務では γ を小さめから上げ、誤差が単調に減る範囲に留めます。
一次プラントの理想マッチングゲインは θ_r*=τ_p/τ_m、θ_y*=τ_p/τ_m−1 です。参照モデルをプラントより速く(τ_m を小さく)したいほど、必要なフィードフォワード θ_r とフィードバック θ_y が大きくなります。アニメーションのゲイン曲線は、この理想値(点線)へ収束していきます。比が大きすぎると制御入力が飽和しやすく、実機では入力制限を考慮します。
外乱を加えると追従誤差が完全には 0 にならず、ゲインが小さく揺れ続けます(パラメータドリフト)。MRACは外乱を誤差として拾い、ゲインを動かし続けるためです。対策として、誤差が小さい領域で適応を止めるデッドゾーンや、σ修正・e修正でゲインの暴走を抑えます。本ツールでは外乱スライダーでこの揺らぎの大きさを確認できます。
本ツールは一次プラント+一次参照モデルの最も基本的な MRAC です。高次系・むだ時間・非最小位相・大きな未モデル化ダイナミクスがある実機では、MITルールそのままでは不安定化し得ます。実装ではリアプノフ設計の適応則、正規化、ロバスト修正(σ/e/デッドゾーン)、入力制限を併用します。最終判断は規格値・実測・詳細解析・メーカー条件で確認してください。

使い方ガイド

  1. プラント時定数τ_p(秒)と参照モデル時定数τ_m(秒)を設定します。τ_pが大きい(遅い)プラントを、τ_mが小さい(速い)モデルに追従させるほど適応の効果が見えます
  2. 適応ゲインγを設定し、再生中のアニメーションで青いプラント線が橙の参照モデル線に重なるまでの速さと、ゲイン曲線が理想値(点線)へ収束する様子を観察します
  3. 「高速収束」「低速収束」「振動」プリセットで挙動を比較し、外乱スライダーを上げて適応完了後の揺らぎ(パラメータドリフト)を確認します

具体的な計算例

サーボモータ(プラント時定数τ_p=2.5s)を、より速い参照モデル(τ_m=1.2s)に追従させる場合、理想マッチングゲインは θ_r*=τ_p/τ_m=2.08、θ_y*=τ_p/τ_m−1=1.08 と計算できます。γ=3で再生すると、MRACはこの値を知らないまま、追従誤差を頼りに数秒で θ_r→2.08、θ_y→1.08 へ収束し、プラント出力が参照モデルにほぼ重なります。γ=0.2では収束が遅く誤差が残り、γ=2000では1回の更新が過大でゲインが発散します。製造業の多軸NC工作機械の軸補償や、燃料消費で質量が変わる飛行体の制御に発想が応用されています。

実務での注意点