CoCo
                                
                                
                                
                                    CoCo copied to clipboard
                            
                            
                            
                        CoCo: Combinatorial Offline, Convex Online
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).
Installation
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.
Usage
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.
Quick Start
An example notebook can be run through:
jupyter notebook cartpole_dev.ipynb