Python implementation of BOUNDS: Bounding Observability for Uncertain Nonlinear Dynamic Systems.
This repository provides python code to empirically calculate the observability level of individual states for a nonlinear (partially observable) system, and accounts for sensor noise. Below is a graphical example of how pybounds can discover active sensing motifs. Minimal working examples are described below.
The package can be installed from PyPi:
pip install pyboundsor from source, for development, after cloning the repo:
pip install -e .
For a simple system:
Monocular camera with optic fow measurements: mono_camera_example.ipynb
For a more complex system:
Fly-wind: fly_wind_example.ipynb
If you use the code or methods from this package, please cite the following paper:
Cellini, B., Boyacioglu, B., Lopez, A., & van Breugel, F. (2025). Discovering and exploiting active sensing motifs for estimation (arXiv:2511.08766). arXiv. https://arxiv.org/abs/2511.08766
To learn more about nonlinear observability, its relation to Fisher information, see Boyacioglu and van Breugel
To start with the basics, check out these open source course materials: Nonlinear and Data Driven Estimation.
This repository is the evolution of the EISO repo (https://github.com/BenCellini/EISO), and is intended as a companion to the repository directly associated with the paper above.
This project utilizes the MIT LICENSE. 100% open-source, feel free to utilize the code however you like.
