MPPI

制御 / 現代制御論 / GPU

概要

MPPI(Model Predictive Path Integral 制御)は、入力列の計画のまわりに乱数で多数の入力列を作り、それぞれの未来をモデルで計算して、コストの小さいものほど重く平均して計画を直すことを、毎時刻くり返すモデル予測制御である。

このページの数値例で使う形(基準の分布を今の計画のまわりの分布にとる形)では、各入力列の重みは、その入力列のコストを、温度と呼ぶ正の定数で割った値の符号を変えて指数をとったものに比例する。基準の分布を別に置く一般の形では、2つの分布の密度の比も重みに掛かる(基準の分布の選び方)。重みの形は経験則ではなく、「入力列の分布についてのコストの期待値」と「その分布が基準の分布からどれだけ離れているか(KL ダイバージェンス)の温度倍」の和を最小にする分布から導かれる。モデルとコストの微分を使わず、コストの値だけを使うので、不連続なコストや微分できないモデルにも使える。入力列ごとの計算は互いに独立なので、並列に計算できる。

名前の Path Integral(経路積分)は、MPPI のもとになった経路積分制御から来ている。経路積分制御は、入力について系がアフィン(入力の1次式)で、さらに雑音の共分散行列が「入力の係数行列・入力の2次コストの重み行列の逆行列・入力の係数行列の転置」の積に比例する(Kappen 2005 の式(12)。入力と状態の次元が同じで入力の係数行列が単位行列なら、入力の2次コストの重み行列が雑音の共分散行列の逆行列に比例する)ときに、最適制御の価値関数の指数をとって Hamilton–Jacobi–Bellman 方程式を線形にし、その解をすべての経路についての期待値(経路積分)で表す(Kappen 2005、Williams ほか ICRA 2017 の第 II 節)。このページの導出はその条件を使わず、Williams ほか(ICRA 2017)の、KL ダイバージェンスと自由エネルギーによる導き方に従う。

読者は、状態方程式・評価関数・モデル予測制御の考え方を知っているが、確率分布の KL ダイバージェンス・重点サンプリング・自由エネルギーは知らない人を想定する。これらはこのページの中で定義してから使う。

読む順路は次のとおり。

  1. MPPI で何ができるか:使える条件、使われている例、よくある誤解。
  2. 記号:系・コスト・入力列・乱数・確率分布の記号と、KL ダイバージェンス。
  3. 問題の設定:有限ホライズンの最適制御と、それを毎時刻解き直すモデル予測制御。勾配を使う方法と比べた位置づけ。
  4. MPPI の導出:自由エネルギーの不等式、最適な分布、正規分布での近似、重点サンプリングによる重みと更新の式。
  5. アルゴリズム:手順と、温度・乱数の共分散・サンプル数・ホライズンの効き方。
  6. 数値例:障害物を避けて目標へ向かう平面上の点ロボットで、実際に計算した結果。
  7. ほかの方法との比較:ランダムシューティング・交差エントロピー法・iLQR/DDP。
  8. 限界と改良。
  9. 確かめ問題、確認できていない点、参考。

MPPI で何ができるか

この章では、MPPI に何が要り、何が得られるかを、式を使わずに示す。式による定義は記号の章から始める。

使える条件

MPPI に要るものは次の3つである。

  • 状態と入力から次の時刻の状態を計算するモデル。関数の形に制限は無く、微分も要らない。物理シミュレータやニューラルネットワークでもよい。
  • 未来の軌道に付けるコスト。軌道の関数であれば何でもよく、障害物に入ったら一定の値を足すような不連続な項を含んでよい。
  • 1制御周期の間に、モデルを「サンプル数 × ホライズンのステップ数」回計算できる計算資源。入力列ごとの計算は互いに独立なので、GPU やベクトル演算で並列に計算できる。

得られるのは、毎時刻の入力である。MPPI は、毎時刻、今の状態から先の入力列の計画を1回(または数回)直し、その先頭を系に加える。

使われている例

この節では、MPPI を提案した論文と、使われているソフトウェアを挙げる。いずれも題名・著者・概要を確かめたもの(2026-10-22)で、本文を読んだ範囲は確認できていない点に書いた。

論文とソフトウェア
  • Williams, Drews, Goldfain, Rehg, Theodorou「Aggressive Driving with Model Predictive Path Integral Control」(ICRA 2016)。自由エネルギーと相対エントロピー(KL ダイバージェンス)による確率的最適制御の枠組みから、最適な入力を経路積分の形で表し、効率のよい重点サンプリングで近似する。GPU に実装し、5分の1の大きさの自動車(AutoRally)の攻撃的な走行(aggressive driving)の課題に使った。
  • Williams, Wagener, Goldfain, Drews, Rehg, Boots, Theodorou「Information Theoretic MPC for Model-Based Reinforcement Learning」(ICRA 2017)。それまでの MPPI が必要としていた「入力について系がアフィン」という条件を外し、このページの導出と同じ形で更新の式を導いた。モデルを学習したニューラルネットワークにして、台車倒立振子の振り上げ・クアッドロータの障害物回避(シミュレーション)と AutoRally の走行(実機)を行った。実機では、ホライズン 2.5 秒、制御周期 40 Hz、1時刻あたり 1200 本のサンプルを、GPU(GTX 750 Ti)で計算した。
  • Williams, Drews, Goldfain, Rehg, Theodorou「Information-Theoretic Model Predictive Control: Theory and Applications to Autonomous Driving」(IEEE Transactions on Robotics、2018)。同じ枠組みを詳しく述べ、交差エントロピー法をモデル予測制御にしたもの(このページの交差エントロピー法)と実機で比べた。基準の分布の平均を今の計画に寄せる変更(このページの基準の分布の選び方)もこの論文にある。
  • ROS 2 の移動ロボット用ナビゲーションのソフトウェア Nav2 の nav2_mppi_controller。README によれば、経路に沿って障害物を避けながら走る局所的な計画に MPPI を使い、差動二輪・全方向移動・アッカーマン(自動車型)の移動ロボットに対応し、第4世代 Core i5 の CPU で 50 Hz 以上で動く。サンプル数の既定値は 1000、ホライズンの既定値は 56 ステップ(0.05 秒刻み)である。

よくある誤解

この節では、MPPI について持たれやすい誤解を先に挙げる。中央の列の内容は、右の列の節で式や数値で確かめる。

誤解実際確かめる節
サンプルした入力列の中から、コストが最も小さい1本を選ぶ全サンプルの重み付き平均をとる。最も小さい1本を選ぶのは、温度を 0 に近づけた極限である温度の極限
入力に雑音が乗る系でなければ使えない原論文は、指令した入力に正規分布の雑音が乗って系に入る、として導いた。ただし導出は、コストが入力列の関数であることしか使わないので、乱数を探索のために計画に足すものと読み替えても成り立つ。このページはそう読み替え、モデルは決定的とする入力列と乱数
重みの は、良いものを重くするための経験則であるコストの期待値と KL ダイバージェンスの和を最小にする分布から導かれる自由エネルギーと最適な分布
温度は小さいほど良い数値例では、温度を小さくすると閉ループのコストはほとんど変わらないまま、入力の時間変化が大きくなった。温度の効き方は、コストの値の広がりに対する相対的な大きさで決まる温度の極限、サンプル数と温度を変えたとき
勾配を使わないので、局所的な最小に止まらないサンプルは今の計画のまわりに作るので、探すのは今の計画の近くである今の計画のまわりしか探さない
GPU が無いと使えないこのページの数値例では、CPU の numpy で、1024 本・30 ステップの1回の更新が約 6.7 ミリ秒で、制御周期 100 ミリ秒に収まった。Nav2 の README も、CPU で 50 Hz 以上で動くと書いている計算時間

記号

この章では、このページ全体で使う記号と、確率分布の離れ具合を表す KL ダイバージェンスを決める。章の途中で新しい記号を足すときは、その場で定義する。

系とコスト

  • 時刻は整数 で数える。状態を 、モデルに入れる入力を とし、系のモデルを関数 で表す。
  • 式(1) は決定的である。 と入力 が決まれば が1通りに決まる。(正の整数)をホライズンと呼ぶ。
  • 入力列を と書く。 は 個の実数を並べたものである。
  • ステージコストを 、終端コストを とし、 から入力列 で動かしたときの軌道のコストを次で定義する。以下、単に「コスト」と書いたら軌道のコスト を指す。