This is a batched version of the trajectory optimization solver from the paper "MPCGPU: Real-Time Nonlinear Model Predictive Control through Preconditioned Conjugate Gradient on the GPU".
git clone https://github.com/A2R-Lab/GATO.git
cd GATO
Docker is used for containerization and uv is used as a Python package/project manager.
Setup
# setup dependencies, build container, and make
./tools/install.sh
Docker
# build + run + enter container
./tools/docker.sh
# manually
docker compose up -d # build and run
docker compose exec dev bash # enter container
docker compose exec -w /workspace dev bash #enter container in the workspace directory
docker down # stop and remove
GATO
# examples, benchmark, and bindings
make build
# bindings only
make build-bindings
# clean
make clean
GATO works with:
- Ubuntu 22.04
- CUDA v12.2
- C++17
- Python 3.10.12
- Docker 28.1.0
See batch_sqp.cu for an example of a batch solve in C++/CUDA, and batch_sqp.py for an example using Python bindings. Examples of MPC with GATO are in indy7-mpc/
TODO
- The open-source MPCGPU solver
- GRiD, a GPU-accelerated library for computing rigid body dynamics with analytical gradients