Catalog PyPI
Back to packageRELEASE DETAILS

0.1.1

PyPI

adaptive-kmpc-py

A Python implementation of the adaptive Koopman model predictive control algorithm

Published5 Jun 2025
Direct dependencies5
Transitive dependenciesNot calculated

README

Version 0.1.1 documentation

adaptive-kmpc-py

This is a Python implementation of the adaptive Koopman model predictive control (KMPC) algorithm, proposed in https://arxiv.org/abs/2503.17902 (currently under review).

An equivalent Julia implementation can be found in the official paper repository.

Adaptive KMPC algorithm

The controller allows approximating nonlinear system dynamics from experimental data as a linear system, which is then embedded in a convex model predictive controller. This eliminates the need for determining a dynamic model via first principles. Additionally, the model is updated online from the closed-loop feedback, which enables control of systems with varying dynamic parameters.

The algorithm is explained in depth in the linked paper, and verified with real-system control experiments on a 1R and 2R robot system. To ensure understanding of the code, variable names are chosen according to the notation used in the paper.

The following process schematic may help in getting a quick overview of the algorithm and the code.

adaptive_KMPC_scheme
  • For initial model build the controller relies on availability of data that partly capture the underlying system dynamics. These data can be obtained by perturbing the system with a sequence of random controls and recording the system response, which is denoted as preceding experiment.
  • Data are then used to fill a circular buffer, operatin under first-in-first-out logic.
  • Subsequently, Extended Dynamic Mode Decomposition is carried out on the buffer data (for more detailed explanation you can consult the paper), leading to a linear model in the discrete time domain.
  • Casting the linear model in a convex quadratic program along with some reference trajectory, constraints, and feedback on the current state allows solving for an optimal control input that is applied to the system.
  • The applied controls and the measured system response are fed back into the circular buffer, such that the model adapts to the current operating point.

Installation

You can install the latest version from GitHub:

pip install git+https://github.com/adrianodelr/adaptive-kmpc-py.git

Or via the package manager:

pip install adaptive-kmpc-py

Usage

For understanding basic usage, you can have a look at the Jupyter notebooks:

Both demonstrate simulated tracking control of serial robots.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 5

Native requirements
5 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
numpy<1.26.0,>=1.22.4runtime
scipy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
scipy<=1.11.2,>=1.9.0runtime
osqp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
osqp<1.1.0,>=0.6.2runtime
numba
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
numba<0.61.0,>=0.58.0runtime
pykoopman
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pykoopman==1.1.0runtime

Distribution files

2 collected
adaptive_kmpc_py-0.1.1-py3-none-any.whl

bdist_wheel · 5.91 KB · Python py3

Source file
adaptive_kmpc_py-0.1.1.tar.gz

sdist · 4.84 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:06 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:67d23309b2054062e49e0eb12feb5e51291c0b4ea2d5185b977d9c9d5e8bbfd9

Other collected versions

View all collected versions →