This repository contains supplementary material to the paper "Adaptive Koopman Model Predictive Control of Simple Serial Robots" (submitted to IROS 2025).
Preprint: https://arxiv.org/abs/2503.17902
To test the adaptive Koopman Model Predictive Control (KMPC) algorithm, trajectory tracking experiments were conducted on a 1R and a belt-driven 2R robot. The following video shows an experiment on the 2R system, which demonstrates the controllers ability to reject force disturbances.
The table below shows the MPC weights used in real system experiments for the 1R and 2R robot systems.
Controller | System | Buffer size | |||
---|---|---|---|---|---|
lin. MPC | 2R | - | |||
adapt. KMPC | 2R | 1500 | |||
stat. KMPC | 2R | 1500 | |||
lin. MPC | 1R | - | |||
adapt. KMPC | 1R | 1000 | |||
stat. KMPC | 1R | 1000 |
These weights determine how much emphasis is placed on tracking of intermediate states (
The buffer size relates to the number of data points stored within the circular buffer, which is used for the extended dynamic mode decomposition in the Koopman based controllers.
In the paper, experimental comparison between adaptive KMPC, linearization MPC and a further Koopman based controller, denoted static KMPC, is done. This repository contains code implementations of adaptive KMPC and comparative controllers, which allows to simulate tracking control and mimic the hardware experiments under simplified conditions. Variable names in the source files are consistent with the notation used in the paper, such that equations can be easily identified.
First, install Julia:
$ curl -fsSL https://install.julialang.org | sh
After creating a local copy of the repository and starting Julia, you can add the package to your current environment via the package manager:
julia> ] dev /path/to/local/repository
This will allow you to use the functions exported by this package. Exemplary usage is shown in two Jupyter notebooks, which simulate reference tracking control of 1R system and 2R system, along with a comparison of the controllers.