はじめに #
Windows環境にJuliaと経路最適化ソルバALTROを導入する方法を備忘録として残します。
ALTRO (Augmented Lagrangian TRajectory Optimizer) は、2019年にスタンフォード大学のTaylor A. Howell氏らが発表した経路最適化ソルバです。このソルバには、iLQR (iterative Linear Quadratic Regulator) とActive-Set Projection Methodを組み合わせた手法が実装されています。
この記事ではALTROのアルゴリズムには触れず、JuliaとALTROをインストールし、サンプルのプログラムを動かすところまでまとめています。
環境 #
OSはWindows 10 Homeとし、使用したライブラリ等のバージョンは以下の通りです。
- Julia v1.7.2 64bit
- TrajectoryOptimization v0.7.0
- ALTRO v0.7.0
- RobotDynamics v0.4.6
- RobotZoo v0.3.1
- StaticArrays v1.4.3
TrajectoryOptimizationは最適化問題を定義する(最適化モデリングツール)ライブラリであり、ALTROはソルバーです。また、RobotDynamicsとRobotZooは動的システムを記述するためのライブラリです。いずれもALTROの開発元であるRoboticExplorationLabが提供しています。なお、これらのライブラリはTrajectoryOptimizationのv0.2以前はTrajectoryOptimizationに集約されていましたが、現在は分割されています。
余談ですが、altroはイタリア語で「他の」(other)という意味を持ちます。
JuliaとALTROのインストール #
まず、Juliaを以下の公式サイトからダウンロードしてインストールします。 The Julia Programming Language このとき、Juliaのパスを通しておくと後々便利です。
次に、ALTROと関連するパッケージをインストールします。Juliaのターミナル画面を起動します。]
を押すと、パッケージマネージャモードというパッケージをインストールできるモードに切り替わります。パッケージマネージャモードでは、プロンプトがjulia>
から(@v1.7) pkg>
のように変わります。
この状態でadd [package name]
を実行すると、パッケージがインストールされます。必要なパッケージをすべてインストールします。
(@v1.7) pkg> add TrajectoryOptimization
(@v1.7) pkg> add ALTRO
(@v1.7) pkg> add RobotDynamics
(@v1.7) pkg> add RobotZoo
(@v1.7) pkg> add StaticArrays
なお、TrajectoryOptimization.jl
のGitHubには、以下でインストールするとあります。
Pkg.add("TrajectoryOptimization")
しかし、これを試したところエラーとなりました。
julia> Pkg.add("TrajectoryOptimization")
ERROR: UndefVarError: Pkg not defined
Stacktrace:
[1] top-level scope
@ REPL[1]:1
Julia 1.0以降では、上記のコマンドでインストールするのは不可となり、パッケージマネージャを使うように仕様が変更されたようです。
サンプルスクリプトの実行 #
続いて、サンプルスクリプトを実行します。RoboticExplorationLabのリポジトリから、以下のquickstart.jl
(ハッシュ:31bc8c65a477)をローカルに保存します。
quickstart.jl (RoboticExplorationLab_Altro.jl)
次にPowerShellを起動し、julia quickstart.jl
で保存したスクリプトを実行します。実行に成功した場合、以下のように表示されます。
PS > julia quickstart.jl
SOLVE COMPLETED
solved using the ALTRO Solver,
part of the Altro.jl package developed by the REx Lab at Stanford and Carnegie Mellon Universities
Solve Statistics
Total Iterations: 44
Solve Time: 2911.9224999999997 (ms)
Covergence
Terminal Cost: 1.5391141512743358
Terminal dJ: -0.00034024145968047925
Terminal gradient: 0.014634616904838724
Terminal constraint violation: 5.896280974582169e-7
Solve Status: SOLVE_SUCCEEDED
参考 #
- Robotic Exploration Lab (GitHub)
- Altro.jl Documention
- Taylor A. Howell, Brian E. Jackson & Zachary Manchester, ALTRO: A Fast Solver for Constrained Trajectory Optimization, (2019).