ロボットのためのモデル予測制御(MPC)
関節や速度の上限を守りながら最適に動かしたい人へ。未来を予測して毎周期解き直すMPCの原理を押さえれば、PIDでは扱えない拘束付き制御を設計できます。
- MPCは有限区間先を予測し、コスト最小の入力列を毎周期求めて先頭だけ適用する。トルク上限・関節角・障害物を最適化の制約として直接扱える点がPIDとの違いだ。
- 線形モデル+二次コスト+線形拘束なら各周期の最適化は二次計画(QP)に帰着し、warm start や凝縮化で数百Hz〜kHzのリアルタイム求解が可能。非線形系はNMPCとなり計算コストが跳ね上がる。
- PIDは過去の偏差に反応する固定則、MPCは未来を見込んで拘束下で最適化する予測制御。モデル精度・演算資源・拘束の有無で使い分ける。
PIDが「今」に反応するのに対し、MPCは「未来」を最適化する
PID制御は、今この瞬間の偏差(と、その積分・微分)に対して固定のゲインで反応する制御則です(ロボットアームのPID制御と非線形性 参照)。原理的に未来を見ておらず、また「トルクは定格の80%まで」「関節角はこの範囲」「この壁に当たるな」といった拘束を制御則そのものの中で扱う枠組みを持ちません。拘束は事後的な飽和(クランプ)で押し込むしかなく、飽和が起きた瞬間に設計時の線形性の前提が崩れます。
モデル予測制御(Model Predictive Control、MPC)は発想が逆です。システムの動力学モデルを使って有限の未来(予測ホライズン)にわたる挙動をシミュレーションし、その未来が最も望ましくなるような入力の系列を、拘束を満たす範囲で最適化します。そして最適化で得た入力系列のうち先頭の1ステップだけを実際に適用し、次の周期では最新の状態から同じ最適化をやり直す。この「先を見て最適化するが、実行するのは1歩だけで、毎回やり直す」構造がMPCの核心です。
MPCは (1) 未来を予測するモデル(離散時間の状態空間モデル x[k+1] = f(x[k], u[k]))、(2) 何を良しとするかを定めるコスト関数(目標追従の誤差と入力の大きさなどをペナルティ化)、(3) 満たすべき拘束(入力・状態・出力の上下限や不等式条件)の3つで定義されます。各制御周期はこの3要素からなる最適化問題を1つ解くことに相当します。PIDの3ゲイン Kp, Ki, Kd が「反応の形」を決めるのに対し、MPCではモデルとコストと拘束が「何を最適とみなすか」を決めます。
有限ホライズン最適化:コスト関数と拘束の定式化
MPCが毎周期解く問題は、次の形の有限ホライズン最適制御問題です。現在時刻を k、予測ステップ数(ホライズン長)を N とします。
各制御周期で解く最適化問題:
minimize Σ_{i=0}^{N-1} [ (x[k+i]-x_ref)ᵀ Q (x[k+i]-x_ref)
u[k..k+N-1] + u[k+i]ᵀ R u[k+i] ]
+ (x[k+N]-x_ref)ᵀ P (x[k+N]-x_ref) ← 終端コスト
subject to x[k+i+1] = A x[k+i] + B u[k+i] (モデル=等式拘束)
u_min ≤ u[k+i] ≤ u_max (入力拘束)
x_min ≤ x[k+i] ≤ x_max (状態拘束)
x[k] = 現在の観測状態 (初期条件)
Q : 状態偏差の重み R : 入力の重み P : 終端重み
コスト関数の第1項 (x-x_ref)ᵀ Q (x-x_ref) は目標状態からのずれを、第2項 uᵀ R u は入力の大きさ(エネルギー・アクチュエータ負荷)をペナルティ化します。重み行列 Q, R の比が、応答の俊敏さと入力の穏やかさのトレードオフを決めます。ここまではLQR(線形二次レギュレータ)と同じですが、MPCの本質的な違いは不等式拘束を最適化問題に直接書けることにあります。トルク上限、関節可動域、速度制限、さらには障害物までの距離条件を u_min ≤ u ≤ u_max や状態拘束として与えれば、最適化はそれらを必ず守る入力しか出力しません。飽和で後付けするのではなく、拘束を織り込んだ上で最適な軌道を計算する——これがMPCが拘束付き制御に強い理由です。
集合 {A, B} のように状態空間モデルを与えると、等式拘束(モデル)を代入して状態変数を消去でき、決定変数を入力系列だけにした最適化問題に凝縮(condensing)できます。
後退ホライズン原理:なぜ1歩だけ適用してやり直すのか
最適化で得られるのは u[k], u[k+1], …, u[k+N-1] という N ステップ分の入力系列です。しかしMPCは先頭の u[k] だけを実機に加え、残りは捨てます。次の周期 k+1 では、新たに観測した状態 x[k+1] を初期条件として、ホライズンを1つ先へずらして(k+1 から k+N まで)最適化を丸ごと解き直します。この後退ホライズン(receding horizon)原理がMPCをフィードバック制御たらしめています。
予測はモデルに基づく開ループのシミュレーションであり、外乱・モデル誤差・観測ノイズがあれば未来ほど実際とずれます。系列全体をそのまま実行すればオープンループ制御になり、ずれを一切補正できません。毎周期、最新の実測状態を初期値にして解き直すことで、予測のずれが次の最適化にフィードバックされ、閉ループとして外乱を吸収できます。「先を見込んで計画するが、コミットするのは1歩だけ」という慎重さが、予測制御に不可欠なロバスト性を与えます。
ホライズン長 N は設計上の要です。短すぎると先読みが効かず(拘束や目標の変化への対応が近視眼的になり)、長すぎると計算量が増え、かつ遠方の予測はモデル誤差で当てにならなくなります。制動距離や配管を曲がる距離など、システムの応答時間をカバーする程度に取るのが目安です。終端コスト P と終端拘束は、有限ホライズンでも閉ループが安定するよう理論的に補償する役割を持ちます。
リアルタイム二次計画(QP):制御周期内に解ききる工夫
モデルが線形、コストが二次、拘束が線形という組み合わせ(上の定式化がまさにそれ)では、各周期の最適化問題は凸な二次計画(Quadratic Program、QP)になります。凸QPは大域最適解が保証され、内点法やアクティブセット法で高速かつ確実に解けます。ロボットのように数百Hz〜kHzで回す制御では、この「1周期=1QP」を制御周期内に解ききることが実装上の勝負どころです。
QPへの帰着と高速化の要点:
・線形モデル + 二次コスト + 線形拘束 → 凸QP(大域最適・確実に収束)
・warm start : 前周期の解を初期値に。後退ホライズンで問題が
少しずつしか変わらないため、数反復で収束する
・condensing : 状態変数を消去し決定変数を入力系列だけに縮約
・明示的MPC : 状態空間を領域分割し「状態→最適入力」を事前計算。
オンラインはテーブル参照のみ(低次元・高速周期向け)
ロボットの動力学は本来 M(q)q̈ + C(q,q̇)q̇ + G(q) = τ の非線形系です。これをそのまま予測に使うと非線形MPC(NMPC)となり、各周期で非凸な非線形最適化を解くことになります。局所解に陥る恐れがあり、計算量も桁違いです。実務では、動作点まわりで逐次線形化してQPを繰り返すSQP的手法や、実時間反復(real-time iteration)で1周期あたり1回だけニュートン更新する近似が使われます。「MPC=QP」が成り立つのは線形(または線形化)モデルの範囲であり、強い非線形性を残したままの高周波MPCは容易ではない、という認識が重要です。
ロボットへの適用と、PIDとの使い分け
MPCが特に威力を発揮するのは、拘束が本質的で、かつ先読みが効くタスクです。自動運転・移動ロボットの経路追従(操舵角・加速度の上限、車線や障害物との距離を拘束化)、脚型ロボットの重心・接地力の制御(脚型ロボットの歩行とバランス制御 で触れたセントロイダル動力学のMPC)、ドローンの姿勢・推力制御などが代表例です。オフラインで滑らかな経路を先に作る軌道計画(スプライン・多項式補間)とは異なり、MPCは実測状態からオンラインで軌道と入力を同時に最適化し続ける点が対照的です。障害物回避も、動作計画(RRT・PRM)が探索で大域的な経路を見つけるのに対し、MPCは局所的な拘束としてホライズン内で回避を織り込みます。
横にスクロール
| 観点 | PID | MPC |
|---|---|---|
| 時間の扱い | 過去〜現在の偏差に反応 | 未来を予測して最適化(先読み) |
| モデル | 不要(モデルフリー) | 必須(予測に動力学モデルを使う) |
| 拘束の扱い | 扱えない(事後の飽和で近似) | 最適化の制約として直接厳守 |
| 多入出力・結合 | 本質的に単入出力向き | MIMO・干渉する系を自然に扱える |
| 計算コスト | 極小(数式評価のみ) | 大(毎周期QP/NLPを求解) |
| 最適性 | 最適化はしない | コスト関数の意味で最適 |
| 向く場面 | 単純・高速・拘束が緩い制御 | 拘束が厳しく先読みが効く多変数制御 |
- 後退ホライズン原理:
Nステップ先まで最適入力系列を解くが、適用するのは先頭1ステップのみ。毎周期、最新状態を初期値に解き直すことで開ループ予測を閉ループ制御に変える。 - PIDとの決定的差: 拘束(入力上限・状態範囲・障害物)を最適化の制約として直接扱えること、そして未来を予測して最適化すること。PIDは過去偏差への固定反応でありどちらも持たない。
- QP化の条件: 線形モデル+二次コスト+線形拘束のとき凸QPになり、warm start・condensing・明示的MPCで実時間求解が可能。
- NMPCの壁: 非線形動力学をそのまま使うと非凸最適化となり、局所解・計算量が問題。逐次線形化や実時間反復で近似するのが実務。
- 選定基準: モデルが得られ、拘束が厳しく、演算資源があるならMPC。単純・高速・軽拘束ならPIDで十分。両者を階層化(上位でMPCが軌道生成、下位でPIDが高速追従)する構成も一般的。
まとめ
MPCは、動力学モデルで有限ホライズン先の挙動を予測し、目標追従誤差と入力コストからなる目的関数を、入力・状態・障害物などの拘束を満たす範囲で最小化する最適化を毎制御周期解く手法です。得られた入力系列の先頭だけを適用し、次周期は最新状態から解き直す後退ホライズン原理により、開ループの予測を閉ループのフィードバック制御へと変えます。線形モデル・二次コスト・線形拘束の下では各周期が凸QPに帰着し、warm start や凝縮化、明示的MPCといった工夫で数百Hz〜kHzの求解が現実になります。非線形動力学を残したNMPCは非凸最適化となり計算負荷が跳ね上がるため、逐次線形化や実時間反復で近似します。PIDが過去偏差への固定反応で拘束を扱えないのに対し、MPCは未来を見込んで拘束下で最適化する——この違いゆえに、トルク・可動域・障害物といった拘束が本質的で先読みが効く多変数制御では、MPCが第一の選択肢になります。モデルの入手性、拘束の厳しさ、演算資源のトレードオフで、PIDとMPC(あるいは両者の階層構成)を使い分けるのが実務の判断軸です。
ロボティクスの記事ガイド
ロボットのためのモデル予測制御(MPC)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ロボティクス
比較で見る軸
難易度: advanced / カテゴリ: ロボティクス / タグ数: 6
導入後に効く点
線形モデル+二次コスト+線形拘束なら各周期の最適化は二次計画(QP)に帰着し、warm start や凝縮化で数百Hz〜kHzのリアルタイム求解が可能。非線形系はNMPCとなり計算コストが跳ね上がる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ロボティクス
- タグ数
- 6
判断チェックリスト
- 自社の用途が「ロボティクス / モデル予測制御」に近いか確認する。
- 強みである「MPCは有限区間先を予測し、コスト最小の入力列を毎周期求めて先頭だけ適用する。トルク上限・関節角・障害物を最適化の制約として直接扱える点がPIDとの違いだ。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。