Embedded Optimization Made Easy
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
Easy Code Generation
You can install OpEn in Python using pip
(read the installation instructions) and generate your first optimizer in a few minutes!
Embeddable
Embeddable
All numerical routines are written in Rust: a fast and safe programming language, which is ideal for embedded applications.
Accurate
Accurate
Optimization Engine can produce solutions of high accuracy thanks to the fast convergence properties of its numerical algorithm (PANOC).
Fast
Fast
Sub-millisecond fast numerical nonconvex optimization tested on several platforms: check out our benchmarks.
User Friendly
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!
Community
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.
Documented
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
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.
Model Predictive Control
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).
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
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.