  We introduce the Control Toolbox (CT), an open-source C++ library for
efficient modeling, control, estimation, trajectory optimization and Model
Predictive Control. The CT is applicable to a broad class of dynamic systems
but features interfaces to modeling tools specifically designed for robotic
applications. This paper outlines the general concept of the toolbox, its main
building blocks, and highlights selected application examples. The library
contains several tools to design and evaluate controllers, model dynamical
systems and solve optimal control problems. The CT was designed for intuitive
modeling of systems governed by ordinary differential or difference equations.
It supports rapid prototyping of cost functions and constraints and provides
standard interfaces for different optimal control solvers. To date, we support
Single Shooting, the iterative Linear-Quadratic Regulator, Gauss-Newton
Multiple Shooting and classical Direct Multiple Shooting. We provide interfaces
to general purpose NLP solvers and Riccati-based linear-quadratic optimal
control solvers. The CT was designed to solve large-scale optimal control and
estimation problems efficiently and allows for online control of dynamic
systems. Some of the key features to enable fast run-time performance are full
compatibility with Automatic Differentiation, derivative code generation, and
multi-threading. Still, the CT is designed as a modular framework whose
building blocks can also be used for other control and estimation applications
such as inverse dynamics control, extended Kalman filters or kinematic
planning.
