Rapid optimal control prototyping with CasADi and acados

Robin Verschueren

University of Freiburg

Thursday, August 03, 2017, 9:00 - 17:00

Room 00-010/014, Georges-Koehler-Allee 101, Freiburg 79110, Germany

This interactive workshop given by PhD student Robin Verschueren is part of the Summer Campus at the faculty of engineering and all relevant info can be found on the course page. In short, we teach participants how to use optimal control methods to make dynamical systems behave in a better way. Examples of applications where such methods can be applied:

  • trajectory planning for robots/robotic manipulators
  • yield maximization in chemical plants
  • reference tracking for electrical drives
  • autonomous driving/flying

We offer a hands-on crash course on two software tools: Casadi and acados, both with interfaces to Python3 and MATLAB. This workshop is taught in English.


Optimal Control (Optimale Steuerung) is a field of engineering where we let algorithms decide on the best inputs to feed to a dynamical system. Based on a mathematical model of a system, described by differential equations, we solve a discretized optimization problem to obtain the optimal decision given the past and current data.

Based on different system models offered by the teachers of this course, the applicants will solve various optimal control problems that arise in different fields of engineering. The main software tools in this workshop will be CasADi and acados, with interfaces to Python3 and MATLAB.

CasADi is a software tool that uses so-called algorithmic differentiation (AD) to return the derivatives needed in such an optimization problem. The acados package is a collection of optimization routines that abstract away the low-level formulation of the optimization problem, such that the user can specify his/her optimal control problem from a high-level perspective and focus on the design aspects of the problem.

These tools fit in a rapid control prototyping framework, as the code that is run from a high-level language like Python3 and/or MATLAB can be readily deployed on an embedded system. The course will be based on hands-on exercises, where each participant solves optimal control problems on their own computer. The theoretical material will be kept to a minimum. We will allot time for participants to be creative, e.g. adapting models, formulations, solvers and ultimately solving self-invented optimal control problems.