Learning Mixed-Integer Convex Optimization Strategies for Robot Planning and Control

@inproceedings{cauligi_learning_2020,
  title = {Learning {Mixed}-{Integer} {Convex} {Optimization} {Strategies} for {Robot} {Planning} and {Control}},
  abstract = {Mixed-integer convex programming (MICP) has seen significant algorithmic and hardware improvements with several orders of magnitude solve time speedups compared to 25 years ago. Despite these advances, MICP has been rarely applied to real-world robotic control because the solution times are still too slow for online applications. In this work, we present the CoCo (Combinatorial Offline, Convex Online) framework to solve MICPs arising in robotics at very high speed. CoCo encodes the combinatorial part of the optimal solution into a strategy. Using data collected from offline problem solutions, we train a multiclass classifier to predict the optimal strategy given problem-specific parameters such as states or obstacles. Compared to [1], we use task-specific strategies and prune redundant ones to significantly reduce the number of classes the predictor has to select from, thereby greatly improving scalability. Given the predicted strategy, the control task becomes a small convex optimization problem that we can solve in milliseconds. Numerical experiments on a cart-pole system with walls, a free-flying space robot, and task-oriented grasps show that our method provides not only 1 to 2 orders of magnitude speedups compared to state-of-the-art solvers but also performance close to the globally optimal MICP solution.},
  booktitle = {2020 59th {IEEE} {Conference} on {Decision} and {Control} ({CDC})},
  author = {Cauligi, Abhishek and Culbertson, Preston and Stellato, Bartolomeo and Bertsimas, Dimitris and Schwager, Mac and Pavone, Marco},
  month = dec,
  year = {2020},
  note = {Code: https://github.com/StanfordASL/CoCo},
  keywords = {Acceleration, Convex functions, Dynamical systems, Planning, Programming, Robots, Task analysis},
  pages = {1698--1705},
  month_numeric = {12}
}