Simple-Robotics/aligator

A versatile and efficient C++ library for real-time constrained trajectory optimization

Aligator – ロボティクスのための軌道最適化ライブラリ


これは何か

Aligator は、ロボットやその他の動的システムのための最適制御・軌道最適化問題を定式化し解決するツールを提供する、オープンソースの C++ ライブラリ(Python API 付き)です。ProxDDP や FeasibleDDP などの高速で制約付きのソルバーを実装しており、動作計画、モデル予測制御、最適状態推定に使用できます。

主な機能

機能 詳細
モデリングインターフェース C++(または Python 経由)でノードごとに最適制御問題を構築。
ソルバー 近位 DDP(ProxDDP)と FeasibleDDP。どちらも制約を効率的に処理。
線形代数バックエンド ソルバー内で発生する線形システムのための複数の因数分解ルーチン。
剛体ダイナミクスサポート Pinocchio ライブラリとの直接統合(解析的導関数を含む)。
Crocoddyl 互換性 Crocoddyl 軌道最適化ライブラリのフロントエンドとして機能可能。
Python API Python から定式化のプロトタイプ作成やソルバーの実行が可能。迅速な実験と展開に有用。
並列/CPU 最適化 OpenMP ベースの並列化やその他の CPU レベルの調整(上級者向けガイドを参照)。

典型的な使用例

  • 脚式ロボット、ヒューマノイド、マニピュレーションロボットの動作生成・計画。
  • 軌道を高頻度で再計算する必要があるモデル予測制御(MPC)。
  • 同じ DDP メカニズムを再利用できる最適状態推定(例:平滑化)。
  • クリーンな C++ API と Python バインディングにより、新しい最適制御アルゴリズムの研究。

はじめに

  1. Conda でインストール(推奨):
    conda install -c conda-forge aligator
    
  2. または、軽量パッケージマネージャー Pixi を使用してソースからビルド:
    pixi run test   # 依存関係のインストール、設定、ビルド、テストを実行
    
    あるいは、リポジトリをクローンして CMake/Ninja でコンパイルします。
  3. 例を実行 – リポジトリには、問題の定義、ソルバーの作成、最適軌道の取得方法を示す C++ および Python のサンプルプログラムが含まれています。
  4. 高度な使用法 – CMake 統合、Python 拡張モジュールの作成、並列実行の有効化については、上級者向けガイドを参照してください。

パフォーマンスとベンチマーク

別のリポジトリ aligator‑bench に、他のソルバーとの比較ベンチマークが含まれています。このライブラリは、OpenMP と効率的な線形代数バックエンド(Eigen、mimalloc など)を活用し、リアルタイム使用向けに設計されています。

メンテナー

コアチームは Inria と LAAS‑CNRS に拠点を置き、Willow および Gepetto ラボの貢献者が参加しています。このプロジェクトは寛容な BSD‑2‑Clause ライセンスの下でリリースされています。

引用方法

研究で Aligator を使用する場合は、リポジトリ自体を引用し、ProxDDP アルゴリズムについては README に記載されている IEEE T‑Robotics の論文(2025)を引用してください。


結論: Aligator は、C++ のパフォーマンスと Python の利便性の両方を備えた、高速で制約付きの最適制御ソルバーを必要とするロボティクス研究者やエンジニア向けの、本格的な本番グレードの軌道最適化ライブラリです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト