Optimization Tools

If you would like to contribute to this list, you can use this form or send an email to tc.opt.rob@gmail.com.


Open source libraries and toolboxes


CasADi is an open-source tool for nonlinear optimization and algorithmic differentiation. It facilitates rapid — yet efficient — implementation of different methods for numerical optimal control, both in an offline context and for nonlinear model predictive control (NMPC).

License: GNU Lesser General Public License (LGPL), v3.0

Webpage: https://web.casadi.org/



qpOASES is an open-source C++ implementation of the recently proposed online active set strategy, which was inspired by important observations from the field of parametric quadratic programming (QP). It has several theoretical features that make it particularly suited for model predictive control (MPC) applications. Further numerical modifications have made qpOASES a reliable QP solver, even when tackling semi-definite, ill-posed or degenerated QP problems. Moreover, several interfaces to third-party software like ​Matlab or ​Simulink are provided that make qpOASES easy-to-use even for users without knowledge of C/C++.

License: GNU Lesser General Public License (LGPL), v2.1

Webpage: https://projects.coin-or.org/qpOASES



Ipopt is an open-source solver for large-scale nonlinear continuous optimization. It can be used from modeling environments, such as AIMMS, AMPL, GAMS, or Matlab, and it is also available as a callable library with interfaces to C++, C, Fortran, Java, and R. Ipopt uses an interior point method, together with a filter linear search procedure.

License: Eclipse Public License

Webpage: https://github.com/coin-or/Ipopt



NLopt is a free/open-source library for nonlinear optimization, providing a common interface for a number of different free optimization routines available online as well as original implementations of various other algorithms.

License: GNU Lesser General Public License

Webpage: https://nlopt.readthedocs.io


Open Optimal Control Library (OpenOCL)

A toolbox that uses C++ implementations of CasADiIpopt, and acados in the backend. Derivatives are calculated automatically using CasADi. For trajectory optimization they use the direct collocation method and solve the non-linear program using CasADi and Ipopt. OpenOCL has a basic interface to acados which provides some fast SQP methods.

License: BSD 3-clause

Webpage: https://openocl.org/


Control Toolbox 

The Control Toolbox ('CT'), is a C++ library for modeling, control, estimation, trajectory optimization and model predictive control. The CT is applicable to a broad class of dynamic systems, but features additional tools specially designed for robotics. The library contains several tools to design and evaluate controllers, model dynamical systems and numerically solve optimal control problems.

License: BSD 2-clause

Webpage: https://ethz-adrl.github.io/ct/



Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on an efficient Differential Dynamic Programming (DDP) algorithm. Crocoddyl computes optimal trajectories along to optimal feedback gains. It uses Pinocchio for fast computation of robot dynamics and its analytical derivatives.

Weboage: https://github.com/loco-3d/crocoddyl

License: BSD 3-clause



Roboptim is a modern open-source C++ library for numerical optimization applied to robotics by Thomas Moulard (LAAS-CNRS, Toulouse, France and AIST-JRL, Tsukuba, Japan).

License: LGPL

Webpage:  http://www.roboptim.net/



ACADO Toolkit is an open-source software environment and algorithm collection for automatic control and dynamic optimization. It also uses the direct multiple shooting method. ACADO is written in C++ but comes with a user-friendly Matlab interface. Authors are Moritz Diehl,  Boris Houska, Hand Joachim Ferreau, Milan Vukov, Rien Quiynen, KU Leuven. 

License: Gnu LGPL

Webpage: www.acadotoolkit.org


Other libraries and toolboxes


SNOPT is a general-purpose system for constrained optimization. It minimizes a linear or nonlinear function subject to bounds on the variables and sparse linear or nonlinear constraints. It is suitable for large-scale linear and quadratic programming and for linearly constrained optimization, as well as for general nonlinear programs.

Webpage: https://web.stanford.edu/group/SOL/snopt.htm



A page with general information about optimal control and the code OCPID.DAE1 by Matthias Gerdts (Universität der Bundeswehr, Munich, Germany):

Webpage: http://www.optimal-control.de



MUSCOD is a powerful optimal control code for systems ordinary differential and differential-algebraic equations and can be used for robotics problems. It uses a direct multiple shooting method.  MUSCOD has been written by Hans Georg Bock, Daniel Leineweber and co-workers (University of Heidelberg, Germany).

Webpage: http://www.iwr.uni-heidelberg.de/~agbock/RESEARCH/muscod.phphttps://neos-server.org/neos/solvers/miocp:MUSCOD-II/AMPL.html