// the find
alphaville/optimization-engine
Nonconvex embedded optimization: code generation for fast real-time optimization + ROS support
OpEn generates standalone Rust solvers for nonconvex parametric optimization problems from Python/CasADi problem definitions, targeting embedded systems and real-time control like NMPC for robotics. You pay the symbolic setup cost once at development time and get a self-contained Rust crate at runtime that can run on bare metal, expose a TCP server, call into C/C++, or deploy as a ROS node. Aimed at control engineers who need sub-millisecond solve times without shipping a full optimization library on-device.
The code generation model is the right architecture for embedded: define the problem symbolically in Python using CasADi, generate a no-runtime-dependency Rust binary. The 20Hz NMPC demo at 15% CPU on an Intel Atom is a concrete proof point. // PANOC avoids QP sub-problems at each iteration unlike SQP methods, which is what makes real-time rates achievable on modest hardware with bounded memory. // Multiple consumption paths (Python, Rust native, TCP server, C FFI, ROS/ROS2 package generation) mean you can prototype in Python and deploy to hardware without rewriting the problem definition. // The v0.12.0 OCP module adds a proper high-level interface — dynamics, stage costs, terminal costs expressed directly rather than manually vectorizing the prediction horizon.
CasADi is a required dependency for the code generation path and is non-trivial to install in constrained CI or cross-compilation environments; there is no alternative symbolic backend. // The MATLAB interface lives in `matlab/legacy/` — it is unmaintained by the directory structure and naming alone, so if your team lives in MATLAB, expect breakage. // 636 stars and a two-person core team means community support is thin; when PANOC's line search misbehaves on your specific nonconvex problem you will be reading algorithm papers, not finding Stack Overflow answers. // PANOC has superlinear local convergence but no global convergence guarantee for general nonconvex problems — you can silently land in a bad local minimum or stall without a clear error signal, which is a real operational risk in safety-critical control.