OpEn

OpEn

  • Docs
  • Blog
  • Rust API
  • Opengen API
  • Chat
  • Github
OpEn logo

OpEn

Optimization Engine

Fast & Accurate Embedded Optimization
for next-generation Robotics and Autonomous Systems

Get Started
organisation map of Optimization Engine (OpEn) and how it works: design interfaces, solver in Rust, core solver engine, TCP/IP socket interface and C/C++ bindings

Embedded Optimization Made Easy

Design & Deploy your high-performance embedded optimizer in no time...

  • Formulate your problem in Python or MATLAB
  • Build an optimizer (Rust)
  • Consume it over a TCP interface or
  • Call it in C/C++ (and ROS), or Rust

Focus on your design, not numerical optimization!

Easy Code Generation

You can install OpEn in Python using pip (read the installation instructions) and generate your first optimizer in a few minutes!

showcase of OpEn functionality in Python via a code generation example

microchip icon black and white

Embeddable

All numerical routines are written in Rust: a fast and safe programming language, which is ideal for embedded applications.

bullseye icon black and white

Accurate

Optimization Engine can produce solutions of high accuracy thanks to the fast convergence properties of its numerical algorithm (PANOC).

small rocket icon black and white

Fast

Sub-millisecond fast numerical nonconvex optimization tested on several platforms: check out our benchmarks.

smiley face icon black and white

User Friendly

OpEn is seriously easy to use! You can call if from Rust, MATLAB, Python and other programming languages - even over the Internet! A Docker Image is available!

group of people icon black and white

Community

OpEn is open: it is a free, open source, MIT/Apachev2-licensed software with a growing community that actively supports its development. Reach us here.

saturn icon black and white

Documented

Well documented with lots of examples. Among 10% best documented open-source Rust projects according to openhub.

Presentation at IFAC 2020

Watch a short presentation of OpEn at IFAC2020: what it does, how it works, and how you can use it in practice. You may read the paper on arXiv.

Blazingly Fast

Blazingly Fast Numerical Optimization: OpEn combines extremely fast numerical optimization methods (see details) with Rust - a fast and safe programming language, which is ideal for embedded applications. OpEn implements numerical fast state-of-the-art optimization methods with low memory requirements. Our benchmarks have shown that OpEn can outperform other methods, such as interior point and sequential quadratic/convex programming by 1-2 orders of magnitude. This way, OpEn paves the way for the use of optimization-based methods, such as model predictive control and moving horizon estimation, to highly dynamical nonlinear systems.

benchmark results of OpEn; comparison with IPOPT

Model Predictive Control

Model Predictive Control (MPC) is a powerful optimization-based control methodology. MPC has become the golden standard in control engineering as it can deal with nonlinear dynamics and state/input constraints. At its core, there is an optimization problem that needs to be solved in real time and within the ever so often stringent runtime requirements of modern applications (robotics, aerospace, automotive and more).

model predictive control for UAV obstacle avoidance

When the system dynamics is nonlinear, or there exist nonconvex constraints (e.g., set avoidance constraints), the MPC optimization problem poses significant challenges towards the implementation and deployment of fast and reliable predictive controllers. This is where OpEn comes in: it offers a toolkit of extremely fast and robust numerical optimization methods, especially tailored for embedded applications where both speed and memory usage are of the essense.

Moving Horizon Estimation

Moving Horizon Estimation (MHE) is the bee's knees of nonlinear estimation: it is an optimization-based estimator for constrained nonlinear systems. MHE is backed by a strong theoretical bedrock that combines Bayesian estimation and dynamic programming; however, its applicability has been hampered by the associated computational burden and has limited its use to slow or linear dynamical systems. OpEn can unlock the huge potential of MHE and facilitate its use in robotics, automotive, aerospace and other applications with high sampling frequencies.

estimation of the state of Lorenz system with nonlinear moving horizon estimation
OpEn
Docs
Getting StartedPython interfaceMATLAB interfaceDocker
Community
User ShowcaseDiscord communityChat on GitterTwitter
More
BlogGitHubOpenhubStar

Tweet
Copyright © 2022 Pantelis Sopasakis and Emil Fresk
Box Icon made by Freepik from www.flaticon.com