Table of Contents
Fetching ...

IMPACT: A Toolchain for Nonlinear Model Predictive Control Specification, Prototyping, and Deployment

Alvaro Florez, Alejandro Astudillo, Wilm Decré, Jan Swevers, Joris Gillis

TL;DR

IMPACT provides a Python-based toolchain to specify nonlinear model predictive control (NMPC) problems and automatically generate deployable solvers. By integrating CasADi for symbolic expressions and algorithmic differentiation with Rockit for transcription, the framework supports multiple discretization methods and outputs self-contained C code and Simulink blocks, enabling rapid prototyping and hardware deployment. A horizon $T$ is discretized into $N=T/\delta_t$ points, with objective terms defined by smooth functions $V(\cdot)$ and $V_f(\cdot)$, and the YAML-based model definition plus FMU handling streamline modeling. The end-to-end workflow is demonstrated on a DC-motor control application, showing zero-offset tracking in real-time alongside an extensible path toward more complex robotics and autonomous systems.

Abstract

We present IMPACT, a flexible toolchain for nonlinear model predictive control (NMPC) specification with automatic code generation capabilities. The toolchain reduces the engineering complexity of NMPC implementations by providing the user with an easy-to-use application programming interface, and with the flexibility of using multiple state-of-the-art tools and numerical optimization solvers for rapid prototyping of NMPC solutions. IMPACT is written in Python, users can call it from Python and MATLAB, and the generated NMPC solvers can be directly executed from C, Python, MATLAB and Simulink. An application example is presented involving problem specification and deployment on embedded hardware using Simulink, showing the effectiveness and applicability of IMPACT for NMPC-based solutions.

IMPACT: A Toolchain for Nonlinear Model Predictive Control Specification, Prototyping, and Deployment

TL;DR

IMPACT provides a Python-based toolchain to specify nonlinear model predictive control (NMPC) problems and automatically generate deployable solvers. By integrating CasADi for symbolic expressions and algorithmic differentiation with Rockit for transcription, the framework supports multiple discretization methods and outputs self-contained C code and Simulink blocks, enabling rapid prototyping and hardware deployment. A horizon is discretized into points, with objective terms defined by smooth functions and , and the YAML-based model definition plus FMU handling streamline modeling. The end-to-end workflow is demonstrated on a DC-motor control application, showing zero-offset tracking in real-time alongside an extensible path toward more complex robotics and autonomous systems.

Abstract

We present IMPACT, a flexible toolchain for nonlinear model predictive control (NMPC) specification with automatic code generation capabilities. The toolchain reduces the engineering complexity of NMPC implementations by providing the user with an easy-to-use application programming interface, and with the flexibility of using multiple state-of-the-art tools and numerical optimization solvers for rapid prototyping of NMPC solutions. IMPACT is written in Python, users can call it from Python and MATLAB, and the generated NMPC solvers can be directly executed from C, Python, MATLAB and Simulink. An application example is presented involving problem specification and deployment on embedded hardware using Simulink, showing the effectiveness and applicability of IMPACT for NMPC-based solutions.
Paper Structure (12 sections, 2 equations, 5 figures)

This paper contains 12 sections, 2 equations, 5 figures.

Figures (5)

  • Figure 1: Overview architecture of the IMPACT toolchain showing the interaction between modules.
  • Figure 2: Overview of the workflow of the IMPACT toolchain.
  • Figure 3: Overview of the system.
  • Figure 4: Diagram of an offset-free MPC implementation, with differences with respect to traditional MPC in blue, and physical connections to the motor in green.
  • Figure 5: Evolution of the angular position $\theta$ and the voltage input $\mathbf{u}$ during the application execution.