optimization-engine  by alphaville

Solver for fast, accurate embedded optimization in robotics/autonomous systems

Created 6 years ago
583 stars

Top 55.6% on SourcePulse

GitHubView on GitHub
Project Summary

OpEn (Optimization Engine) is a C++ library and code generator for fast, embedded, nonconvex optimization, targeting robotics and autonomous systems. It allows users to define parametric optimization problems and generate highly efficient, self-contained Rust code for their solvers, enabling real-time performance on embedded hardware.

How It Works

OpEn leverages a custom numerical algorithm implemented in Rust for solving nonconvex parametric optimization problems. It generates parametric optimizer modules in Rust, which can be compiled into standalone libraries or run as a TCP service. This approach prioritizes speed, memory safety, and deployability on resource-constrained embedded devices, abstracting away the complexities of numerical optimization for application developers.

Quick Start & Requirements

  • Installation: Primarily through code generation via Python or MATLAB interfaces.
  • Prerequisites: Python 3.x, MATLAB, Rust, and CasADi. ROS support is available.
  • Resources: Embedded applications can run on devices like Intel Atom with low CPU usage (e.g., 15% CPU at 20Hz).
  • Documentation: alphaville.github.io/optimization-engine

Highlighted Details

  • Generates Rust code for parametric optimizers, enabling fast, safe, and embedded execution.
  • Supports nonconvex parametric optimization problems of a general form.
  • Offers auto-generation of ROS packages for seamless integration into robotic systems.
  • Demonstrated real-time performance on embedded hardware for autonomous navigation.

Maintenance & Community

  • Core team includes Pantelis Sopasakis and Emil Fresk.
  • Community discussion channels available on Discord and Gitter.
  • Project encourages contributions via established guidelines.

Licensing & Compatibility

  • Dual-licensed under Apache License v2.0 or MIT License.
  • Permissive licenses suitable for commercial use and integration into closed-source projects.

Limitations & Caveats

The README focuses on code generation and embedded performance; details on the specific range of supported nonconvex problem structures or potential numerical stability issues for highly challenging problems are not extensively detailed.

Health Check
Last Commit

3 months ago

Responsiveness

1 week

Pull Requests (30d)
1
Issues (30d)
0
Star History
6 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.