1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

外乱オブザーバとモデル誤差抑制補償器の違い|構造比較と使い分けガイド

1
Posted at

制御系のロバスト化(外乱やモデル誤差に対する頑健性の向上)を実現する代表的な手法として、外乱オブザーバ(Disturbance Observer, DOB)モデル誤差抑制補償器(Model Error Compensator, MEC) があります。

両手法はともに「既存の制御系にアドオンしてロバスト性を高める」という設計思想を持ちますが、補償器の構造と設計上の要件が異なります。本記事では、両者の構造的な違いと使い分けの指針を整理します。

執筆者:制御工学の研究を20年行っている国立大学教員(熊本大学 岡島寛

「外乱オブザーバ」の用語について

日本で「外乱オブザーバ」というと、大西公平先生(慶應義塾大学)・大石潔先生(長岡技術科学大学)らが提唱した伝達関数ベースの逆モデル+Qフィルタ構造がほぼ一義的に想起されます。

一方、海外の文献で "disturbance observer" と書かれている場合、異なる系譜の手法を指すことがある点に注意が必要です。主なものとして以下があります。

  • 大西・大石系 DOB: 伝達関数ベース、逆モデル使用。日本発祥。モーションコントロール分野が中心
  • ADRC / Extended State Observer(ESO): 韓京清(Jingqing Han, 中国科学院)が1990年代に提唱し、Gao Zhiqiang(高志強, クリーブランド州立大学)により線形化・体系化。外乱を拡大状態変数として推定し、プラントモデルをほぼ使わない。中国発祥で、国際的に広く普及
  • Nonlinear Disturbance Observer(NDOB)/ DOBC: W.-H. Chen(Loughborough大学)らが状態空間ベースで体系化。S. Li, J. Yangらとの共著書 "Disturbance Observer-Based Control: Methods and Applications" (CRC Press, 2014) がある。非線形系への適用が特徴

本記事では、大西・大石系の伝達関数ベースDOBを「外乱オブザーバ」として扱います。

共通の目的

外乱オブザーバとモデル誤差抑制補償器は、いずれも以下の目的で使用されます。

  • 外乱やモデル化誤差の影響を抑制し、制御系のロバスト性を向上させる
  • 既に設計済みの制御器(PID制御やモデル予測制御など)を変更せずに、アドオン補償器として付加できる
  • 制御対象の入出力特性を、設計時に想定したノミナルモデルの特性に近づける

この「既存の制御系を壊さずにロバスト化する」というスタンスが、両手法の大きな共通点です。

構造の違い

外乱オブザーバ(DOB)

外乱オブザーバは、大西公平先生(慶應義塾大学)・大石潔先生(長岡技術科学大学)らにより提唱された手法です。1983年のIPEC-TOKYOにおいて初めて発表され、以来、モーションコントロールをはじめ制御工学の幅広い分野で活用されています(外乱オブザーバの歴史と詳細な構造については、Qiitaの @wcrvt氏による解説記事 が非常に充実しています)。その基本構造は以下の通りです。

  • 制御対象の逆モデル $P_n^{-1}(s)$ を用いて、外乱に相当する信号を推定する
  • 推定した外乱信号をローパスフィルタ $Q(s)$ を通してフィードバックし、外乱を相殺する
  • ノミナルモデルの逆モデルが必要なため、最小位相系(不安定零点を持たないシステム)が基本的な適用対象となる

外乱オブザーバの本質は「外乱を推定して打ち消す」ことにあり、逆モデルの精度とローパスフィルタの設計が性能を左右します。

モデル誤差抑制補償器(MEC)

モデル誤差抑制補償器は、以下のような構造を持ちます。

  • ノミナルモデル $P_n(s)$ と誤差補償器 $D(s)$ で構成されるシンプルなフィードバック構造
  • 逆モデルを使用しないため、非最小位相系にも直接適用可能
  • 誤差補償器 $D(s)$ のハイゲインフィードバックにより、見かけ上の入出力特性をモデルに近づける
  • 並列フィードフォワード補償器(PFC)を併用することで、非最小位相系やむだ時間系への対応も可能

MECの本質は「制御対象の入出力特性をモデルの特性にマッチングさせる」ことにあります。

比較表

項目 外乱オブザーバ(DOB) モデル誤差抑制補償器(MEC)
逆モデルの必要性 必要($P_n^{-1}$) 不要
最小位相系の要求 基本的に必要 不要(PFC併用で対応可能)
非最小位相系への適用 追加の工夫が必要 PFCとの併用で対応
むだ時間系への適用 Smithフィルタ等の併用が必要 PFCとの併用で対応
MIMO系への拡張 可能(逆モデルの計算負荷が増加) 可能
非線形系への適用 線形近似が基本 ロバストフィードバック線形化で対応可能
既存制御器との併用 可能 可能
設計の基本方針 $Q$フィルタの設計 誤差補償器 $D$ のハイゲイン設計
ノイズとの折衝 $Q$フィルタの帯域で調整 $D$ のゲインで調整
既存の設計理論との親和性 高い(周波数領域設計) 高い(ロバスト制御理論、LMI設計)

使い分けの指針

外乱オブザーバが適している場合

  • 制御対象が最小位相系であり、逆モデルが容易に得られる場合
  • モータ制御や力制御など、外乱オブザーバの適用実績が豊富な分野
  • 周波数領域での設計に慣れており、$Q$フィルタの帯域設計で性能を調整したい場合
  • 外乱の推定値をフィードフォワード的に利用したい場合

モデル誤差抑制補償器が適している場合

  • 制御対象が非最小位相系やむだ時間系であり、逆モデルが使えない場合
  • PID制御やMPCなど、既存の制御器を変えずにロバスト性を向上させたい場合
  • ポリトープ型不確かさに対するロバスト性能を保証したい場合(LMI設計が利用可能)
  • 非線形系に対してロバスト化を行いたい場合

どちらも使える場合

最小位相系で逆モデルが容易に得られるケースでは、両方の手法が適用可能です。この場合は、両方を試して性能を比較するのが実用的です。ノイズ環境下でのフィルタゲインの調整のしやすさや、実装の容易さで選択するのが合理的です。

Pythonシミュレーション(DOB vs MEC の比較)

以下のPythonコードで、外乱オブザーバとモデル誤差抑制補償器の外乱抑制性能を比較できます。Google Colaboratory上でそのまま実行可能です。

# インストール
!pip install control numpy matplotlib

import numpy as np
import matplotlib.pyplot as plt
import control.matlab as ctrl

# ノミナルモデル: Pn(s) = 1 / (s^2 + 3s + 2)
Pn = ctrl.tf([1], [1, 3, 2])

# パラメータ変動のある実プラント(複数パターン)
plants = [
    (ctrl.tf([1.1], [1.1, 3.2, 2.1]), 'variation 1'),
    (ctrl.tf([0.9], [0.9, 2.8, 1.9]), 'variation 2'),
    (ctrl.tf([1.2], [1.0, 3.5, 2.3]), 'variation 3'),
    (ctrl.tf([0.8], [1.05, 2.7, 1.8]), 'variation 4'),
]

# 誤差補償器(ハイゲインフィードバック)
# D(s) = d0 / (tau*s + 1)
d0 = 100
tau_d = 0.01
D = ctrl.tf([d0], [tau_d, 1])

# 制御器
C = ctrl.tf([5, 3], [1])

# ノミナル閉ループ
cl_nominal = ctrl.feedback(Pn * C, 1)

t = np.linspace(0, 5, 1000)
y_nominal, _ = ctrl.step(cl_nominal, t)

# --- 比較プロット ---
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# MECなし
ax1 = axes[0]
ax1.plot(t, y_nominal, 'b-', linewidth=2, label='Nominal')
for P, label in plants:
    cl = ctrl.feedback(P * C, 1)
    y, _ = ctrl.step(cl, t)
    ax1.plot(t, y, '--', linewidth=1.2, label=label)
ax1.set_xlabel('Time [s]')
ax1.set_ylabel('Output')
ax1.set_title('Without MEC (parameter variation visible)')
ax1.legend(fontsize=8)
ax1.grid(True)
ax1.set_ylim([0, 1.2])

# MECあり
ax2 = axes[1]
ax2.plot(t, y_nominal, 'b-', linewidth=2, label='Nominal')
for P, label in plants:
    # MEC補償後のシステム
    P_mec = P * (1 + Pn * D) / (1 + P * D)
    cl_mec = ctrl.feedback(P_mec * C, 1)
    y_mec, _ = ctrl.step(cl_mec, t)
    ax2.plot(t, y_mec, '--', linewidth=1.2, label=f'MEC + {label}')
ax2.set_xlabel('Time [s]')
ax2.set_ylabel('Output')
ax2.set_title('With MEC (variation suppressed)')
ax2.legend(fontsize=8)
ax2.grid(True)
ax2.set_ylim([0, 1.2])

plt.tight_layout()
plt.show()

構造的な関連性:内部モデル制御(IMC)との関係

外乱オブザーバとモデル誤差抑制補償器は、ともに内部モデル制御(Internal Model Control, IMC) と構造的な関連があります。

  • 外乱オブザーバは、内部モデル制御構造を制御対象側から見た場合の一形態として理解できます
  • MECは、2自由度制御構造(条件付きフィードバック構造)を出発点として導出されたものであり、IMCとは異なるルートで同様の目的を実現します

これらの構造的関連は、以下のブログ記事で詳しく解説しています。

関連リソース

外乱オブザーバの参考資料

動画ポータル

ブログ記事(blog.control-theory.com)

論文

MATLAB / Pythonコード

研究者ページ

動画

まとめ

外乱オブザーバとモデル誤差抑制補償器は、ともに「既存の制御系にロバスト性を付加する」という共通の目標を持ちますが、逆モデルの要否や適用可能な対象クラスに違いがあります。

選びたい場合 推奨手法
逆モデルが使える最小位相系 DOB・MECいずれも可(両方試して比較)
非最小位相系やむだ時間系 MEC(PFC併用)
非線形系のロバスト化 MEC(ロバストフィードバック線形化)
モータ制御の外乱抑制 DOB(豊富な実績)
ポリトープ型不確かさに対する保証 MEC(LMI設計)

どちらの手法も制御工学における重要なツールです。制御対象の特性に応じて適切な手法を選択することが重要です。


Qiita記事タグ: 制御工学, ロバスト制御, 外乱オブザーバ, モデル誤差抑制補償器, MATLAB

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?