This repository provides a clean and well-documented Python implementation of DistKP, a distributed algorithm for time-varying Gaussian process regression, as introduced in our paper:
Distributed Time-Varying Gaussian Regression via Kalman Filtering
Nicola Taddei, Riccardo Maggioni, Jaap Eising, Giulia De Pasquale, Dörfler Florian
paper link
The implementation is designed to be accessible, educational, and extensible, with simulations and detailed explanations provided via Jupyter notebooks.
DistKP enables agents in a distributed network to collaboratively estimate a time-varying function using Gaussian Processes and Kalman filtering techniques. It is particularly suited for robotics applications such as:
- Environmental monitoring
- Swarm robotics
- Distributed learning in dynamic environments
- ✅ Modular and readable implementation in Python
- ✅ Simulation-ready with Jupyter notebooks
- ✅ Reproducible experiments from the paper
- ✅ Educational annotations and visualizations
- ✅ No obscure dependencies – runs with NumPy, SciPy, and Matplotlib
DistKP uses a state-space GP representation to model the time-varying behavior of Gaussian processes, leveraging Kalman filtering for efficient inference and message-passing for distributed communication. Each agent locally processes data and shares limited information with neighbors, enabling scalable regression over time.
git clone https://github.com/Nicola-Taddei/DistributedGP.git
cd DistributedGPYou can use a virtual environment (e.g., venv or conda) and then install the required packages:
pip install -r requirements.txtjupyter notebook notebooks/DistKP/
├── notebooks/ # Jupyter notebooks with step-by-step explanations and experiments
├── requirements.txt # Minimal dependencies
└── README.md
We provide two notebooks:
- 01_introduction.ipynb: a minimal version of the algorithm.
- 02_experiments.ipynb: reproduces the results from the paper.
To reproduce the simulation results from the paper, check out the notebook 02_experiments.ipynb. It includes:
- Convergence plots
- Comparison with centralized and baseline methods
DistKP is ideal for roboticists working with:
- Multi-robot exploration and mapping
- Distributed sensor networks
- Online learning in non-stationary environments
If you find this repository useful in your research, please cite our paper:
@misc{taddei2025distributedtimevaryinggaussianregression,
title={Distributed Time-Varying Gaussian Regression via Kalman Filtering},
author={Nicola Taddei and Riccardo Maggioni and Jaap Eising and Giulia De Pasquale and Florian Dorfler},
year={2025},
eprint={2504.14900},
archivePrefix={arXiv},
primaryClass={eess.SY},
url={https://arxiv.org/abs/2504.14900},
}
Contributions are welcome! Whether it's fixing typos, improving documentation, or extending the code – feel free to open a pull request or reach out.
For questions or feedback, you can reach us at: [taddein@ethz.ch] and [rmaggioni@ethz.ch]