Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robotic Tooling
  3. autogenu-jupyter

autogenu-jupyter

MITC++v1.0.0

An automatic code generator and C/GMRES-based solvers for nonlinear model predictive control (NMPC) in Jupyter.

Visit WebsiteGitHubGitHub
178 stars38 forks0 contributors

What is autogenu-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.

Target Audience

Control engineers, researchers, and robotics developers who need to implement and simulate NMPC algorithms without manually writing low-level solver code.

Value Proposition

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.

Overview

An automatic code generator for nonlinear model predictive control (NMPC) and the continuation/GMRES method (C/GMRES) based numerical solvers for NMPC

Use Cases

Best For

  • Rapid prototyping of NMPC controllers for academic research
  • Implementing real-time NMPC for robotics applications like drones or mobile robots
  • Teaching nonlinear control and NMPC concepts with interactive Jupyter examples
  • Generating optimized C++ code from symbolic control problem formulations
  • Simulating and visualizing dynamic systems under NMPC control
  • Developing custom NMPC solvers with multiple shooting or single shooting methods

Not Ideal For

  • Projects requiring real-time NMPC on embedded systems without standard C++ toolchains (e.g., microcontrollers with limited compilers)
  • Teams that need a variety of optimization solvers beyond C/GMRES for comparative studies or different problem types
  • Applications where quick, Python-only prototyping without C++ compilation and complex dependencies is preferred

Pros & Cons

Pros

Automated Code Generation

Generates C++ source files (ocp.hpp, main.cpp) and Python bindings from symbolic definitions in Jupyter notebooks, significantly reducing manual implementation time for NMPC.

Efficient C/GMRES Solvers

Provides MultipleShootingCGMRESSolver and SingleShootingCGMRESSolver based on the continuation/GMRES method, optimized for fast computation of nonlinear receding horizon control.

Flexible Deployment Options

Offers both Python interfaces via pybind11 for rapid testing and a header-only C++ library (cgmres) for high-performance integration into larger systems.

Interactive Examples and Visuals

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.

Cons

Steep Initial Setup

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.

Niche Solver Focus

Limited to C/GMRES-based methods, lacking built-in support for other common NMPC algorithms like sequential quadratic programming (SQP) or interior-point methods.

C++-Heavy Documentation

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.

Frequently Asked Questions

Quick Stats

Stars178
Forks38
Contributors0
Open Issues1
Last commit11 months ago
CreatedSince 2018

Tags

#robotics#simulation#code-generator#numerical-solvers#c-plus-plus#jupyter#python-bindings#model-predictive-control#control-systems#code-generation#optimal-control

Built With

D
Doxygen
J
Jupyter
C
CMake
P
Python
N
NumPy
m
matplotlib
P
Pybind11
C
C++
S
SymPy

Links & Resources

Website

Included in

Robotic Tooling3.8k
Auto-fetched 1 day ago

Related Projects

pinocchiopinocchio

A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives

Stars3,428
Forks538
Last commit3 days ago
EGO-PlannerEGO-Planner

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.

Stars2,496
Forks390
Last commit1 year ago
casADicasADi

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.

Stars2,218
Forks446
Last commit5 days ago
omplompl

The Open Motion Planning Library (OMPL)

Stars2,064
Forks693
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub