モデル誤差抑制補償器(MEC)は、制御系のロバスト性(外乱やモデル誤差に対する頑健性)を高める汎用的な手法です。既存の制御系にアドオンしてロバスト性を付加でき、PID制御やMPC等の様々な制御方式と併用できます。
執筆者:制御工学の研究を20年行っている国立大学教員(熊本大学 岡島寛)
MECはモデル $P_n$ と誤差補償器 $D$ から成るシンプルな構造で、逆モデルが不要なため非最小位相系や非線形系にも適用可能です。
理論の詳細、適用クラスの説明、外乱オブザーバとの比較は以下のブログ記事にまとめています。
詳細記事(blog.control-theory.com):
- モデル誤差抑制補償器(MEC)の実装ガイド(日本語)
- Model Error Compensator: Enhance the Robustness of Existing Control Systems(英語)
総合論文:
- モデル誤差抑制補償器を用いた既存制御系のロバスト化(無料公開, J-Stage)
- H. Okajima, Model Error Compensator for adding Robustness toward Existing Control Systems, IFAC 2023(Open Access)
Pythonシミュレーション(Google Colab対応)
以下のコードでMECの効果を確認できます。Google Colaboratory上での実行方法はこちら。
# インストール
!pip install control numpy matplotlib
# Python コード
import numpy as np
import matplotlib.pyplot as plt
import control.matlab as control_matlab
# 基本伝達関数の定義
pm_num = [1]
pm_den = [1, 3, 2]
pm = control_matlab.tf(pm_num, pm_den)
# ハイゲイン誤差補償器
d_num = [300, 100]
d_den = [1, 0]
d = control_matlab.tf(d_num, d_den)
# 制御器
c_num = [3, 5]
c_den = [1]
c = control_matlab.tf(c_num, c_den)
# パラメータ変動設定
ks = [0.9, 1.1, 1, 1, 0.9, 1.1, 0.95, 1.05]
ts = [1, 1, 0.9, 1.1, 0.9, 1.1, 1.05, 0.95]
time_vector = np.linspace(0, 10, 500)
# MEC適用時とMEC無し時の応答を比較
plt.figure()
plt.title('Open-Loop System Step Response (MEC On)')
plt.xlabel('Time')
plt.ylabel('Output')
plt.grid(True)
plt.figure()
plt.title('Open-Loop System Step Response (MEC Off)')
plt.xlabel('Time')
plt.ylabel('Output')
plt.grid(True)
for i in range(len(ks)):
k = ks[i]
t = ts[i]
p = control_matlab.tf([k], [t, 1]) * control_matlab.tf([1], [1, 2])
pc = p * (1 + pm * d) / (1 + p * d)
yout_pc, T_pc = control_matlab.step(pc, time_vector)
plt.figure(1)
plt.plot(T_pc, yout_pc, label=f'pc (k={k}, t={t})')
yout_p, T_p = control_matlab.step(p, time_vector)
plt.figure(2)
plt.plot(T_p, yout_p, linestyle='-', label=f'p (k={k}, t={t})')
plt.figure(1)
plt.legend()
plt.figure(2)
plt.legend()
plt.show()
plt.close('all')
MATLABシミュレーション
2次系に対するMECの効果(MATLABコード)
制御対象 $P(s) = (c+\delta c)\frac{s+b+\delta b}{(s -(a+\delta a))(s+5)}$ に対して、パラメータ変動下でのMECの効果を確認するコードです。
clear;
close all;
a = 1;
b = 2;
c = 1.5;
for i = 1:10
delb = -0.1+0.2*rand();
dela = -0.1+0.2*rand();
delc = -0.1+0.2*rand();
P=(c+delc)*tf([1 b+delb],[1 -(a+dela)])*tf([1],[1 5]);
Pn = c*tf([1 b],[1 -a])*tf([1],[1 5]);
Con=5;
D=tf([50 50],[1 0]);
% MECなし
feedback(P*Con,1);
figure(1)
step(ans)
xlabel('Time')
ylabel('Out')
title('Usual')
xlim([0 5])
ylim([0 2])
hold on
% MECあり
feedback(Pn*Con,1)*feedback(P*D,1)-feedback(Con,Pn)*feedback(P,D);
figure(2)
step(ans)
xlabel('Time')
ylabel('Out')
title('With MEC')
xlim([0 5])
ylim([0 2])
hold on
end
GitHubのMATLABコード一覧
| リポジトリ | 内容 |
|---|---|
| Robust-control-MATLAB_MEC01 | ポリトープ型不確かさに対する設計(PSO+LMI) |
| MATLAB_MEC02_sensor_noise | センサノイズ環境下での設計 |
| MATLAB_MEC03_withPFC | 並列フィードフォワード補償器との併用(非最小位相系対応) |
| non_linear_control_MATLAB_MEC04 | 非線形システムへの適用 |
| MATLAB_MEC05_signal_limitation_filter | 信号制限フィルタ |
| Vehicle_control_MEC05 | ビークル制御系への適用 |
| MEC05-rengo2022 | PID制御との併用 |
MATLAB File Exchange
- MATLAB File Exchange — Hiroshi Okajima — File Exchange上のMEC関連コード
関連記事・比較記事
外乱オブザーバとの比較
- 外乱オブザーバとモデル誤差抑制補償器の違い|構造比較と使い分けガイド(Qiita) — 本Qiitaアカウントの記事
- MEC vs Disturbance Observer: A Structural Comparison(英語ブログ)
- 外乱相殺仕事人!! MEC と外乱オブザーバ(川田先生, Qiita)
- 川田昌克, 零点と不安定極をもたない2次系に対する外乱オブザーバとモデル誤差抑制補償器の関係について, SICE論文集 (2024)
構造的関連(IMC, 2自由度制御)
- Internal Model Control and MEC(英語ブログ)
- Two-Degree-of-Freedom Control and MEC(英語ブログ)
- MEC + PID Control(英語ブログ)
関連する制御手法
- State Observer and State Estimation(英語ブログ) — 同定モデルを用いた状態推定
- System Identification: From Data to Dynamical Models(英語ブログ) — MECに必要なモデルの取得
- PID制御の基本理論と設計法(Qiita)
動画
研究者ページ
他グループによるMECの研究
他の研究グループにおけるモデル誤差抑制補償器の研究を抜粋します(タイトルにMECを含むものを中心に)。
学術論文
- A. Haddi, M. E Azzouzi and M. Laabissi, A design approach of fractional model error compensator for fractional dynamical systems with polytopic uncertainty and disturbance, Circuits, Systems, and Signal Processing (2024)
- 川田昌克, モデル誤差抑制されたPID制御系のFRITを利用したパラメータ調整とLEGO教材による実験的検証, システム制御情報学会論文誌 (2024)
- 松井, 川田, モデル誤差抑制補償器を併合する位置決め制御系の設計, システム制御情報学会誌 (2024)
- 鈴木元哉, 制御入力速度飽和した初期実験データによるビークルのデータ駆動予測型制御器調整, 電気学会論文誌C編 (2022)
- 脇谷伸, スマートMBDアプローチに基づく制御システム設計, システム/制御/情報 (2023)
- 菅原,脇谷,山本,落合,富山,樹脂加工機械における階層型制御のためのGMV補償器の一設計,日本機械学会論文集
- R. Nishio, Y. Hanazawa, S. Sagara and R. Ambar, Experiments on resolved acceleration control of a 3-link dual-arm underwater robot with model error compensator, Artificial Life and Robotics 2025
- Y. Hatori, H. Nagakura, Y. Uchimura, Teleoperation with variable and large time delay based on MPC and model error compensator, IEEE ISIE (2021)
- Y. Kawai, S. Nagao, Y. Yokokura, K. Ohishi, T. Miyazaki, Quick Torsion Torque Control Based on Model Error Compensator and Disturbance Observer, IEEE/SICE SII (2021)
- H. Endo, R. Aramaki, K. Sekiguchi and K. Nonaka, Application of model error compensator based on FRIT to quadcopter, IEEE CCTA (2017)
- 遠藤, 関口, 野中, モデル誤差補償器のオンライン調整法, SICE論文集 (2019)
国内会議(2024以降)
- 板宮敬悦, モデル誤差抑制補償要素を併用した適応制御系に関する研究, MSCS2024
- 板宮敬悦, ロバストモデル規範形適応制御系における固定補償要素のモデル誤差抑制制御器としての役割, SCI 2024
- 菅原貴弘, 脇谷伸, 山本透, 落岩崇, 富山秀樹, 機械システムに対するGMV-MECの適用検討, MSCS2024
- 佐竹泰智, 楊熙, 萩原朋道, モデル誤差抑制補償器に基づくブーストコンバータの非線形出力電圧制御, SCI 2025
- 下東知隼, 澤田賢治, モデル誤差抑制補償器を用いた状態予測制御のロバスト化, SCI 2025
- 脇谷伸, 津田竜宏, MPCとMECによるパフォーマンス駆動型階層制御系の一設計, SCI 2025
自身のMECに関する学術論文
代表的な論文:
- [18] 岡島寛, モデル誤差抑制補償器を用いた既存制御系のロバスト化, 計測と制御 (2023) — 総合論文
- [17] Yoshida, Okajima and Sato, MEC design for non-minimum phase systems with polytopic-type uncertainties, JCMSI (2022, Open Access)
- [16] Yoshida, Tanigawa, Okajima and Matsunaga, A design method of MEC for systems with polytopic-type uncertainty, JCMSI (2021, Open Access)
- [14] H. Okajima, Model Error Compensator for adding Robustness toward Existing Control Systems, IFAC World Congress (2023, Open Access)
- [1] Okajima, Umei, Matsunaga and Asai, A Design Method of Compensator to Minimize Model Error, JCMSI (2013, Open Access) — 初出論文
Qiita記事タグ: 制御工学, ロバスト制御, 外乱オブザーバ, モデル誤差抑制補償器, 内部モデル制御

