An automatic code generator and C/GMRES-based solvers for nonlinear model predictive control (NMPC) in Jupyter.
AutoGenU for Jupyter is an open-source tool that automatically generates code and provides solvers for nonlinear model predictive control (NMPC). It uses the continuation/GMRES (C/GMRES) method to efficiently solve NMPC problems, enabling rapid development and simulation of control systems for applications like robotics and dynamic systems.
Control engineers, researchers, and robotics developers who need to implement and simulate NMPC algorithms without manually writing low-level solver code.
It significantly reduces development time by automating code generation from symbolic problem definitions, offers high-performance C/GMRES solvers, and provides both Python and C++ interfaces for flexibility in deployment and integration.
An automatic code generator for nonlinear model predictive control (NMPC) and the continuation/GMRES method (C/GMRES) based numerical solvers for NMPC
Generates C++ source files (ocp.hpp, main.cpp) and Python bindings from symbolic definitions in Jupyter notebooks, significantly reducing manual implementation time for NMPC.
Provides MultipleShootingCGMRESSolver and SingleShootingCGMRESSolver based on the continuation/GMRES method, optimized for fast computation of nonlinear receding horizon control.
Offers both Python interfaces via pybind11 for rapid testing and a header-only C++ library (cgmres) for high-performance integration into larger systems.
Includes demo notebooks with animations (e.g., cartpole, hexacopter) that allow users to simulate, plot, and visualize control systems easily, aiding in debugging and presentation.
Requires cloning with submodules, installing multiple dependencies (C++17, CMake, Python packages, ffmpeg), and configuring environment variables like PYTHONPATH, which can be cumbersome and error-prone.
Limited to C/GMRES-based methods, lacking built-in support for other common NMPC algorithms like sequential quadratic programming (SQP) or interior-point methods.
Python bindings documentation primarily references C++ API with tips for conversion, which may not be intuitive for Python-centric developers and adds a learning barrier.
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
EGO-Planner is an ESDF-free gradient-based local planner designed for quadrotor navigation. It significantly reduces computation time compared to state-of-the-art methods by avoiding the computationally expensive Euclidean Signed Distance Field (ESDF) construction, enabling real-time performance with total planning times around 1ms. ## Key Features - **ESDF-Free Planning** — Eliminates the need to compute Euclidean Signed Distance Fields, drastically reducing computational overhead. - **Lightweight Gradient-Based Optimization** — Uses a gradient-based approach for efficient local trajectory generation. - **GPU/CPU Versatility** — Offers both GPU and CPU versions of its local sensing module for depth image generation or pointcloud processing. - **Fast Computation** — Achieves planning times of approximately 1ms, suitable for real-time drone control. - **Simulation-Ready** — Includes a lightweight quadrotor simulator and supports integration with sensors like Intel RealSense for hardware testing. ## Philosophy EGO-Planner prioritizes computational efficiency and real-time performance by removing the ESDF construction bottleneck, making advanced local planning accessible for resource-constrained aerial robotics applications.
CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
The Open Motion Planning Library (OMPL)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.