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 by cloning the repo and running python setup.py install from inside the home pybounds directory.
Alternatively using pip
pip install pyboundsFor 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.
