python_simple_mppi
MPPI 制御を numpy で導出・実装し、四つの実例を添えたリポジトリ
ライセンス
MIT
概要
モデル予測経路積分(MPPI)制御は、入力系列を数千本ランダムに標本化し、それぞれを力学モデルで前向きに展開して評価し、情報理論にもとづく重み付けで一本の指令へと混ぜ合わせます。現代の標本ベース制御のかなりの部分がこの手法の上に立っていますが、ふつう出会うのは数式で埋まった一ページか、アルゴリズムが奥に埋め込まれた実運用フレームワークのどちらかです。このリポジトリはその中間を埋めます。四つの実例——運動学的自転車モデルによる経路追従、同じ課題に障害物回避を加えたもの、振り子の振り上げ、そして倒立振子台車——がそれぞれ実行可能なスクリプトとして、さらに LaTeX で段階を追ってアルゴリズムを導出する Jupyter ノートブックとして用意され、引用元である Williams らの論文のアルゴリズム 1 と 2 をなぞります。依存関係は numpy、matplotlib、notebook だけです。
価値は「対になっていること」にあります。各実例は二度存在します。走らせてシミュレーションを眺めるスクリプトとして一度、そしてノートブックとしてもう一度——そこでは同じ制御器が、それを裏づける数学と並べて組み上げられます。入力系列の標本化、力学の前向き展開、ステージコストと終端コストの累積、情報理論からの重みの導出、そして重み付き標本を一本の指令へ畳み戻すまで。片方を読みながらもう片方を走らせるのは、論文を読むのとは別の体験であり、このリポジトリが存在する理由そのものです。作者は説明文で率直にこう書いています——基本的な考え方を理解するためのものだ、と。
抑制は意図的で、それが効いている理由でもあります。GPU なし、JAX なし、C++ コアなし、設定システムなし。numpy と matplotlib だけで、ffmpeg はアニメーションを mp4 に書き出したいときにのみ要ります。セットアップは uv sync 一つ、あるいは自分の Python 環境に触れたくなければ docker compose run。読者が頭に入れておくべきものはアルゴリズムだけで、それこそが狙いであり、実装全体は一度に読み切れる大きさです。
またこれは単発の成果物ではなく、一連の仕事への入口でもあります。同じ作者は日本の産業技術総合研究所(AIST)で運動計画と制御を研究しており、IROS 2024 の独立操舵駆動ロボット向け MPPI 制御器 mppi_swerve_drive_ros、ROS でタスク優先度を扱う多目的 MPC フレームワーク nullspace_mpc、そして同じ流儀で実装した経路追従アルゴリズム集 path_tracking_catalog を公開しています。このリポジトリを読み終えた人には次に行く先があり、それは多くの教材コードには当てはまりません。
重要な理由
このカタログには人々が実際に配備する計画器——MuJoCo MPC、OMPL、MoveIt、NeuPAN——が並んでいますが、標本ベースの手法がどう動くのかを説明してくれるものはほとんどありません。とりわけ MPPI は、密度の高い 2018 年の論文か、使えはするが読み通せない最適化実装のどちらかとして届きがちです。これは読める版です。行を追って辿れる大きさで、導出がコードの隣にあり、書いた本人はその後、実機での MPPI 研究を査読付きで発表しています。教材リポジトリに七百のスターが付くこと自体が、この空白を埋める価値の大きさを示しています。
解決する課題
MPPI にはふつう、情報理論の論文としてか、アルゴリズムがフレームワークの内側に隠れた高速実装としてしか出会えず、どちらも仕組みを教えてはくれません。ここでは読み通せる大きさのアルゴリズムが、導出を隣に置いた形で手に入り、その各部分が何をしているのかを見せる四つのシミュレーションが付いてきます。
主なポイント
- 四つの実例:運動学的自転車モデルによる経路追従、障害物回避つきの経路追従、振り子の振り上げ、倒立振子台車
- 各実例は二通りで提供される——実行可能なスクリプトと、同じコードの隣で LaTeX によりアルゴリズムを導出するノートブック
- 導出は Williams らの『Information-Theoretic Model Predictive Control』のアルゴリズム 1 と 2 に沿うため、ノートブックと論文を並べて読める
- 依存関係は numpy、matplotlib、notebook のみ——どれを動かすにもそれ以外は要らない
- ネイティブ環境なら uv sync、コンテナなら docker compose run。ffmpeg は mp4 出力を望む場合だけ
- MIT ライセンス。作者は AIST の研究者で、その後 IROS 2024 で MPPI の研究を発表している
- 障害物回避の実例はアルゴリズムを可視化する——標本軌道が広がる扇と、その中を貫く重み付き指令
対象
- MPPI に初めて触れ、呼び出すだけでなく理解したい人
- 数学が添えられた最適制御の実例を探している学生と教員
- 標本ベース制御器を試作しようとしており、最適化の前に正しく読みやすい出発点がほしい研究者
- MPPI が自分の課題に合うかを見極めており、決める前に車両モデル上での挙動を見ておきたい技術者
制限事項
- 設計からして教材コードである——作者自身の言葉は「基本的な考え方を理解するため」であり、配備やリアルタイム保証のために作られてはいない
- CPU 上の純粋な numpy なので、標本数もホライズンも実際に配備される MPPI 制御器より遥かに小さい
- 実例はいずれも 2 次元の玩具的力学であり、接触も 3 次元もセンサーモデルもハードウェア接続もない
- 最後の push は 2026 年 5 月で、開いた issue もいくつか残る。活発に開発中というより完成しており、参考実装としては妥当だが修正は期待しないこと
- 貢献者は 2 名、実質 1 名——このリポジトリは作者の時間次第である
- インポートできるライブラリではなくスクリプトとノートブックなので、再利用はコードを抜き出す作業になる
- GitHub がライセンスを識別できないと表示するのはファイル名が LICENSE.txt だからで、中身は標準的な MIT 本文、著作権表示は 2023 年 MizuhoAOKI