Useful Tools - guidosassaroli/controlbasics GitHub Wiki

In this section some useful control-related Python libraries and tools are presented.

Python Control Systems Library \cite{python-control2021}

is a Python package that implements basic operations for analysis and design of feedback control systems. It provides a range of tools for working with linear time-invariant (LTI) systems, including transfer functions, state-space models, and frequency response analysis. The library is widely used in academia for control engineering and is built on top of popular scientific libraries like NumPy and SciPy. It is a powerful and accessible tool for modeling, analyzing, and designing control systems. One of its main advantages is that it's open-source and free to use, making it ideal for students, educators, and researchers. However, it does come with some limitations. Compared to more mature tools like MATLAB’s Control System Toolbox, it lacks some advanced features, such as robust control methods and support for nonlinear systems. Performance can also be a concern when dealing with large-scale or real-time systems, as Python generally doesn't match the execution speed of compiled environments.

Drake \cite{drake}

is a toolbox started by the Robot Locomotion Group at the MIT Computer Science and Artificial Intelligence Lab (CSAIL). It is a collection of tools for analyzing the dynamics of robots and building control systems for them, with a heavy emphasis on optimization-based design/analysis.

cvxpy \cite{diamond2016cvxpy}

is an open source Python-embedded modeling language for convex optimization problems. It lets you express your problem in a natural way that follows the math, rather than in the restrictive standard form required by solvers.

CasADi \cite{Casadi}

is an open-source software tool for numerical optimization in general and optimal control (i.e. optimization involving differential equations) in particular. CasADi is not an “optimal control problem solver”, that allows the user to enter an OCP and then gives the solution back. Instead, it tries to provide the user with a set of “building blocks” that can be used to implement general-purpose or specific-purpose OCP solvers efficiently with a modest programming effort.

Acados \cite{acados}

is a software package for the efficient solution of optimal control and estimation problems. Acados is a complete rewrite of Acado, but unlike Acado it uses the symbolics of CasADi and the C code generation functionality. CasADi's focus is rapid prototyping of a range of different NMPC algorithms. The idea is to have an easy-to-use environment that can be used in both research and teaching. In contrast Acados implements SQP type solvers tailored to OCP structured NLPs, which aim to solve those problems very fast. The solution time of Acados for typical MPC problems is expected to be orders of magnitude faster compared to using IPOPT in CasADi.

do-mpc \cite{do-MPC}

is a open-source toolbox for MPC and moving horizon estimation (MHE). do-mpc enables the efficient formulation and solution of control and estimation problems for nonlinear systems, including tools to deal with uncertainty and time discretization. The modular structure of do-mpc contains simulation, estimation and control components that can be easily extended and combined to fit many different applications.