Skip to main content

New Python OCP Module for Optimal Control and MPC

· One min read

State trajectories generated with the Python OCP module

OpEn now comes with a Python OCP module that facilitates the design of optimal control problems in a direct and intuitive way.

With the new module, you can describe the key ingredients of an optimal control problem from Python, including:

  • stage and terminal costs
  • system dynamics
  • state and input constraints
  • problem parameters and defaults

This makes it much easier to formulate nonlinear optimal control problems and model predictive control (MPC) schemes before generating an embedded optimizer with OpEn.

Autonomous Racing of Scale Vehicles at SMC22

· One min read

Autonomous Racing of Scale Vehicles

Our paper titled "A Nonlinear Model Predictive Control Strategy for Autonomous Racing of Scale Vehicles" (authors: V. Cataffo, G. Silano, L. Iannelli, V. Puig and G. Glielmo) has been accepted for publication in IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2022.

A preprint is available here.

Rust for robots

· One min read

Is the Rust programming language the future of robotics? Some claim that its memory and thread safety model and the fact that it can run on embedded and bare metal devices makes it the perfect candidate for robotics.

rusty bot

Despite its young age, Rust has all but failed to go unnoticed: a stackoverflow survey revealed that Rust is the top most loved programming language and nowhere around the 25 most dreaded ones.

Rust comes with all the perks of high-level languages (such as C++ and Java) related to code structure and organisation, the capabilities and efficiency of low-level languages (such as C), plus it is tRustworthy.

This is why we decided to write OpEn in Rust.

OpEn: a pure Rust optimizer

· One min read

The majority of optimization packages in Rust, such as IPOPT, OSQP, NLOPT, are essentially bindings (interfaces) to other software. There are a few pure-Rust packages, such as rustimization, argmin, they implement algorithms which are not suitable for embedded nonconvex optimization.

Rust language

OpEn is the first pure-Rust package

OpEn on Raspberry Pi

· 2 min read

Here we give an example of building a parametric optimizer in MATLAB, which will run on a Raspberry Pi. The parametric optimizer will listen for requests on a UDP socket. We will then establish a connection to the optimizer, remotely, and consume the service.

Raspberry Pi

OpEn UDP socket interface

· One min read

You may now auto-generate an Optimization Engine module, which solves parametric optimization problems (such as model predictive control problems) and can be consumed over UDP sockets! Read more here. This way, the parametric optimizer can be easily called from any programming language. More importantly, the code generation can be carried out in one line of code, while, if necessary, it can be fully configured.

UDP socket interface

Risk-averse optimal control

· One min read

Our paper titled "Risk-averse risk-constrained optimal control," (authors: P. Sopasakis, M. Schuurmans, P. Patrinos) has been accepted for publication in European Control Conference 2019.

This work is accompanied by the MATLAB toolbox marietta which is distributed under the MIT open source license.

SuperSCS: OpEn's sister project

· One min read

SuperSCS is a sister project of OpEn.

SuperSCS is a fast solver for large-scale conic problems. It is written in C and can be interfaced from a lot of different programming languages.

The paper titled "SuperSCS: fast and accurate large-scale conic optimization" (authors: P. Sopasakis, K. Menounou, P. Patrinos) has been accepted at European Control Conference 2019.