GPU-Accelerated Trajectory Optimization
Numerical experiments and the open-source solver from "GATO: GPU-Accelerated and Batched Trajectory Optimization for Scalable Edge Model Predictive Control"
git clone https://github.com/A2R-Lab/GATO.git
cd GATODocker is used for containerization and uv is used as a Python package/project manager.
Setup
./tools/install.shDocker
./tools/docker.sh
'''
Manual Installation
'''sh
git submodule update --init --recursive
uv sync
source .venv/bin/activate
docker build -t gato . # build image
docker run -d -it --gpus all --network host -e DISPLAY=:0 -v $(pwd):/workspace -v /tmp/.X11-unix:/tmp/.X11-unix --name gato-container gato # run container
docker exec -it gato-container bash # enter container
docker exec -it --workdir /workspace gato-container bash # enter container in the workspace directory
docker stop gato-container && docker rm gato-container # stop and removeGATO
./tools/build.shYou can control which Python extension modules are built by selecting plant models and horizon lengths at CMake configure time:
mkdir -p build && cd build
cmake -DPLANT="indy7;iiwa14" -DKNOTS="8;32;128" ..
cmake --build . --parallelPLANT: semicolon-separated list of plant targets (indy7,iiwa14).KNOTS: semicolon-separated list of horizon lengths.
Built Python modules are written to python/bsqp/ as bsqpN{N}_{plant}.so.
- Ubuntu 22.04
- CUDA 12.6
- C++17
- gcc 11.4.0
- Python 3.10.12
- Docker 28.1.0
See batch_sqp.cu for a minimal example of a batched trajectory optimization solve in C++/CUDA. Example Jupyter notebooks using GATO for MPC are in examples/
- The open-source MPCGPU solver
- GRiD, a GPU-accelerated library for computing rigid body dynamics with analytical gradients
@inproceedings{du2026gato,
title={GATO: GPU-Accelerated and Batched Trajectory Optimization for Scalable Edge Model Predictive Control},
author={Alexander Du and Emre Adabag and Gabriel Bravo and Brian Plancher},
booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
year={2026},
month={June}
}This material is based upon work supported by the National Science Foundation (under Awards 2411369 and 2246022). Any opinions, findings, conclusions, or recommendations expressed in this material are those of the authors and do not necessarily reflect those of the funding organizations.