8000 Update README to highlight the most important acados features by FreyJo · Pull Request #1504 · acados/acados · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
8000

Update README to highlight the most important acados features #1504

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 42 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,28 @@
![Github actions full build workflow](https://github.com/acados/acados/actions/workflows/full_build.yml/badge.svg)
<!-- [![codecov](https://codecov.io/gh/acados/acados/branch/master/graph/badge.svg)](https://codecov.io/gh/acados/acados) -->

`acados` provides fast and embedded solvers for nonlinear optimal control.
`acados` provides fast and embedded solvers for nonlinear optimal control, specifically designed for real-time applications and embedded systems.
It is written in `C` and offers interfaces to the programming languages `Python`, `MATLAB` and `Octave`.

## General
- `acados` implements
1. fast SQP-type solvers for Nonlinear Programming (NLP) formulations with an Optimal Control Problem (OCP) structure
2. efficient integration methods, also called *integrators*, to solve initial value problems with dynamic systems given as an ODE or index-1 DAE.
These integrators can efficiently compute first and second-order sensitivities of the results.
`acados` is a modular and efficient software package for solving nonlinear programs (NLP) with an optimal control problem (OCP) structure.
Such problems have to be solved repeatedly in **model predictive control (MPC)** and **moving horizon estimation (MHE)**.
The computational efficiency and modularity make `acados` an ideal choice for real-time applications.
It is designed for high-performance applications, embedded computations, and has been successfully used in [a wide range of applications](#fields-of-applications).

### Key Features:
Some key features of `acados` are summarized in the following.
The [software design](#design-paradigms) allows to implement many algorithms beyond this list.
- **Nonlinear and economic model predictive control (NMPC)**: Solve challenging control problems with nonlinear dynamics and cost functions.
- **Moving horizon estimation (MHE)**: Estimate states and parameters of dynamic systems in real-time.
- **Support for differential algebraic equations (DAE)**: Efficiently handle systems with algebraic constraints.
- **Multiple shooting method**: Leverage the multiple shooting approach for time discretization, enabling fast and robust solutions.
- **Efficient integration methods**: Include advanced integrators for solving ODEs and DAEs, with support for first- and second-order sensitivities.
- **Real-time performance**: Optimized for high-frequency control loops, enabling reliable solutions for time-critical applications.
- **High-performance solvers**: Implement fast SQP-type solvers tailored for optimal control problems.
- **Mo 8000 dular design**: Easily extend and combine components for simulation, estimation, and control to fit diverse applications.
- **Solution sensitivity computation and combination with reinforcement learning (RL)**: The combination of MPC and RL is a hot research topic in control. Many learning algorithms can profit from the availability of solution sensitivities or in particular policy gradients.
`acados` offers the possibility to embed an NLP solver as a differentiable layer in an ML architecture as is demonstrated in the [`leap-c` project](https://github.com/leap-c/leap-c).

## Documentation
- Documentation can be found on [docs.acados.org](https://docs.acados.org/)
Expand All @@ -28,3 +42,26 @@ It is written in `C` and offers interfaces to the programming languages `Python`
## Installation
- Instructions can be found at
[docs.acados.org/installation](https://docs.acados.org/installation)

### Design paradigms
The main design paradigms of `acados` are
- **efficiency**: realized by rigorously exploiting the OCP structure via tailored quadratic programming (QP) solvers, such as `HPIPM`, and (partial) condensing methods to transform QPs, enabling their efficient treatment.
Moreover, the common structure of slack variables, which for example occur when formulating soft constraints, can be exploited.
Additionally, a structure exploiting Runge-Kutta method is implemented, allowing to utilize linear dependencies within dynamical system models.
- **modularity**:
`acados` offers an extremely flexible problem formulation, allowing to not only formulate problems which occur in MPC and MHE.
More precisely, all problem functions and dimensions can vary between all stages.
Such problems are often called *multi-stage* or *multi-phase* problems.
Different NLP solvers, QP solvers, integration methods, regularization methods and globalization methods can be combined freely.
Moreover, cost and constraint functions can be declared by explicitly providing general *convex-over-nonlinear* structures, which can be exploited in the solvers.
- **usability**: The interfaces to Python, MATLAB, Simulink and Octave allow users to conveniently specify their problem in different domains and to specify their nonlinear expressions via the popular [`CasADi`](https://web.casadi.org/) symbolic software framework.
The interfaces allow to conveniently specify commonly used problem formulations via the `AcadosOcp` class and additionally expose the full flexibility of the internal `acados` problem formulation, via multi-phase formulations and `AcadosMultiphaseOcp`.

## Fields of applications
A non-exhaustive list of projects featuring `acados` is available at [docs.acados.org/list_of_projects](https://docs.acados.org/list_of_projects/index.html).
Contributions to this list are very welcome and allow to increase visibility of your work among other `acados` users.
- Robotics: Real-time NMPC for quadrotors, legged locomotion, and agile robotic platforms.
- Autonomous Vehicles: Used in projects like openpilot in driving assistance systems.
- Energy Systems: Optimization-based control for microgrids and wind turbines.
- Biomechanics: Optimal control in biomechanics through libraries like bioptim.
- Aerospace: Applications in trajectory optimization and control for drones and morphing-wing aircraft.
53 changes: 43 additions & 10 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,54 @@ Contributions via pull requests are welcome!

## About `acados`

`acados` is a software package providing fast and embedded solvers for nonlinear optimal control.
Problems can be conveniently formulated using the [`CasADi`](https://web.casadi.org/) symbolic framework and the high-level `acados` interfaces.

`acados` provides a collection of computationally efficient building blocks tailored to optimal control structured problems, most prominently optimal control problems (OCP) and moving horizon estimation (MHE) problems.
Among others, `acados` implements:
- modules for the integration of ordinary differential equations (ODE) and differential-algebraic equations (DAE),
- interfaces to state-of-the-art QP solvers like [`HPIPM`](https://github.com/giaf/hpipm), `qpOASES`, [`DAQP`](https://github.com/darnstrom/daqp) and [`OSQP`](https://github.com/osqp/osqp)
- (partial) condensing routines, provided by `HPIPM`
- nonlinear programming solvers for optimal control structured problems
- real-time algorithms, such as the real-time iteration (RTI) and advanced-step real-time iteration (AS-RTI) algorithms
`acados` is a modular and efficient software package for solving nonlinear programs (NLP) with an optimal control problem (OCP) structure.
Such problems have to be solved repeatedly in **model predictive control (MPC)** and **moving horizon estimation (MHE)**.
The computational efficiency and modularity make `acados` an ideal choice for real-time applications.
It is designed for high-performance applications, embedded computations, and has been successfully used in [a wide range of applications](#fields-of-applications).

`acados` is written in `C`, but control problems can be conveniently formulated using the [`CasADi`](https://web.casadi.org/) symbolic framework via the high-level `acados` interfaces to the programming languages `Python`, `MATLAB` and `Octave`.

Some key features of `acados` are summarized in the following.
The [software design](#design-paradigms) allows to implement many algorithms beyond this list.
- **Nonlinear and economic model predictive control (NMPC)**: Solve challenging control problems with nonlinear dynamics and cost functions.
- **Moving horizon estimation (MHE)**: Estimate states and parameters of dynamic systems in real-time.
- **Support for differential algebraic equations (DAE)**: Efficiently handle systems with algebraic constraints.
- **Multiple shooting method**: Leverage the multiple shooting approach for time discretization, enabling fast and robust solutions.
- **Efficient integration methods**: Include advanced integrators for solving ODEs and DAEs, with support for first- and second-order sensitivities.
- **Real-time performance**: Optimized for high-frequency control loops, enabling reliable solutions for time-critical applications.
- **High-performance solvers**: Implement fast SQP-type solvers tailored for optimal control problems.
- **Modular design**: Easily extend and combine components for simulation, estimation, and control to fit diverse applications.
- **Solution sensitivity computation and combination with reinforcement learning (RL)**: The combination of MPC and RL is a hot research topic in control. Many learning algorithms can profit from the availability of solution sensitivities or in particular policy gradients.
`acados` offers the possibility to embed an NLP solver as a differentiable layer in an ML architecture as is demonstrated in the [`leap-c` project](https://github.com/leap-c/leap-c).

The back-end of acados uses the high-performance linear algebra package [`BLASFEO`](https://github.com/giaf/blasfeo), in order to boost computational efficiency for small to medium scale matrices typical of embedded optimization applications.
`MATLAB`, `Octave` and `Python` interfaces can be used to conveniently describe optimal control problems and generate self-contained C code that can be readily deployed on embedded platforms.


### Design paradigms
The main design paradigms of `acados` are
- **efficiency**: realized by rigorously exploiting the OCP structure via tailored quadratic programming (QP) solvers, such as `HPIPM`, and (partial) condensing methods to transform QPs, enabling their efficient treatment.
Moreover, the common structure of slack variables, which for example occur when formulating soft constraints, can be exploited.
Additionally, a structure exploiting Runge-Kutta method is implemented, allowing to utilize linear dependencies within dynamical system models.
- **modularity**:
`acados` offers an extremely flexible problem formulation, allowing to not only formulate problems which occur in MPC and MHE.
More precisely, all problem functions and dimensions can vary between all stages.
Such problems are often called *multi-stage* or *multi-phase* problems.
Different NLP solvers, QP solvers, integration methods, regularization methods and globalization methods can be combined freely.
Moreover, cost and constraint functions can be declared by explicitly providing general *convex-over-nonlinear* structures, which can be exploited in the solvers.
- **usability**: The interfaces to Python, MATLAB, Simulink and Octave allow users to conveniently specify their problem in different domains and to specify their nonlinear expressions via the popular [`CasADi`](https://web.casadi.org/) symbolic software framework.
The interfaces allow to conveniently specify commonly used problem formulations via the `AcadosOcp` class and additionally expose the full flexibility of the internal `acados` problem formulation, via multi-phase formulations and `AcadosMultiphaseOcp`.

## Fields of applications
A non-exhaustive list of projects featuring `acados` is available [here](https://docs.acados.org/list_of_projects/index.html).
Contributions to this list are very welcome and allow to increase visibility of your work among other `acados` users.
- Robotics: Real-time NMPC for quadrotors, legged locomotion, and agile robotic platforms.
- Autonomous Vehicles: Used in projects like openpilot in driving assistance systems.
- Energy Systems: Optimization-based control for microgrids and wind turbines.
- Biomechanics: Optimal control in biomechanics through libraries like bioptim.
- Aerospace: Applications in trajectory optimization and control for drones and morphing-wing aircraft.


# Documentation page overview

```eval_rst
Expand Down
Loading
0