This repository contains code for Learning Mixed-Integer Convex Optimization Strategies for Robot Planning and Control by Abhishek Cauligi*, Preston Culbertson*, Bartolomeo Stellato, Dimitris Bertsimas, Mac Schwager, and Marco Pavone (* denotes equal contribution).
This repository uses cvxpy for the construction of the optimization problems and PyTorch for training the neural network models. The necessary Python packages can be installed by running the following script.
pip3 install -r requirements_cython.txt
pip3 install -r requirements.txt
We also use the Gurobi and Mosek commercial solvers for solving our problems.
Further, define an environment variable CoCo
that points to the working directory where this packagee is installed.
This repo contains examples for three systems in robot planning and control:
- Cart-pole with contact
- Free-flyer motion planning
- Dexterous grasping
The MICP for each problem is defined in {system}/problem.jl
using either the CVXPY modeling framework. The {system}/data_generation.ipynb
notebook must be run first to generate the MICP datasets later used in training.
Each system has a {system}_dev.ipynb
notebook that steps through the strategy construction, classifier training, and evaluation of the trained strategy predictions.
An example notebook can be run through:
jupyter notebook cartpole_dev.ipynb