OpEn (Optimization Engine)
ロボットのリアルタイムMPCのための、Rust製の組み込み非凸最適化ソルバー
ライセンス
MIT, Apache 2.0
概要
OpEn(Optimization Engine)は、組み込みシステム上で高速かつメモリ安全な非凸最適化を行うためのフレームワークで、近接平均化ニュートン型アルゴリズムPANOCを核に、制約には拡張ラグランジュ法とペナルティ法を用いる。問題はCasADiシンボリクスを使ってPythonまたはMATLABで記述し、OpEnがターゲット — ロボットのオンボードコンピュータ、MCUクラスのボード、ROSノード — 向けに依存関係フリーなRustソルバーを生成する。これにより、リアルタイムのモデル予測制御や衝突のない軌道最適化が可能になる。
ワークフローはコード生成だ:OpEnのPython/MATLABフロントエンドであるopengenで決定変数、(非凸でもよい)コスト、制約を定義すると、PANOC — ヘッセ行列なしで高速に収束する、近接勾配とL-BFGS方向を組み合わせたラインサーチ法 — を実装したスタンドアロンのRustクレートが出力され、一般制約向けのALM/ペナルティ外側ループでラップされる。生成されるソルバーには予期しないヒープ割り当てがなく、外部ライブラリもなく、メモリ使用量は証明可能に有界:認証を意識した組み込み制御がまさに必要とするものだ。インターフェースは、Rustでの直接利用、C/C++バインディング、TCPサーバーモード、Pythonバインディング、ROSパッケージジェネレーターを含む。ロボティクスでの典型的な用途は、障害物回避のための数百ヘルツの非線形MPC(そのナビゲーション例はAGV/UAVの衝突回避MPCのリファレンスとなった)、リソース制約のあるプラットフォームでの軌道最適化と移動ホライズン推定だ。OpEnはアカデミックに開発されており(Sopasakisら、IFAC 2020論文)、MIT/Apache-2.0のデュアルライセンスで提供される。
重要な理由
OpEnは小型ロボット上のリアルタイム非凸MPCを実用のものにした:Rustのメモリ保証を持ち、依存関係がなく、メモリが有界なソルバーが組み込みボード上で動く — ロボットが障害物回避問題を数ミリ秒ごとにオンボードで解き直さなければならないときに必要になる、まさにそのピースだ。
解決する課題
汎用のNLPソルバー(IPOPTクラス)は高レートのオンボードMPCには遅く重すぎ、手書きのソルバーはミスを生みやすい。OpEnは数行のCasADiから、あなたの特定の問題に合わせた高速・依存関係フリー・メモリ安全なソルバーを生成する。
主なポイント
- PANOCアルゴリズム:近接勾配+L-BFGSによる、ヘッセ行列なしの高速な非凸求解
- スタンドアロンで依存関係フリー、メモリ有界のRustソルバーを生成
- CasADiシンボリクスによるPython(opengen)とMATLABのフロントエンド
- Rust/C/C++での直接利用、TCPサーバーモード、ROSパッケージ生成
- AGV/UAVの組み込み衝突回避MPCにおけるリファレンス的選択肢。MIT/Apache-2.0デュアルライセンス
対象
- オンボードMPCを展開する制御エンジニア
- 軌道最適化に取り組むロボティクス研究者
- 認証に適したソルバーを必要とする組み込み開発者
- AGV/UAVの自律化チーム
制限事項
- 一次法ベースのPANOCは、条件の悪い問題では内点法に劣ることがある
- 非凸性ゆえに解は局所解(大域解ではない)— 初期化が重要
- ALM/ペナルティによる制約処理は、厳しい等式制約に対して許容誤差のチューニングが必要