Software Suite for Sensor Placement (SP) and Informative Path Planning (IPP).
The library includes python code for the following:
- Greedy algorithm-based approaches
- Bayesian optimization-based approaches
- Genetic algorithm-based approaches
- Sparse Gaussian process (SGP)-based approaches
- The ros_sgp_tools package provides a ROS2 companion package for SGP-Tools that can be deployed on ArduPilot-based vehicles.
- The docker-sgp-tools package provides docker containers for running SGP-Tools in simulation and on ArduPilot-based vehicles.
The library is available as a pip
package. To install the package, run the following command:
python3 -m pip install sgptools
Installation from source:
git clone https://github.com/itskalvik/sgp-tools.git
cd sgp-tools/
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
Note: The requirements.txt file contains packages and their latest versions that were verified to be working without any issues.
Please refer to the examples folder for Jupyter notebooks demonstrating all the methods included in the library 😄
examples/
: Jupyter notebooks with code to demonstrate each method in the libraryIPP.ipynb
: SGP-based IPP (point, non-point, continuous sensing, distance constrained, and multi-robot)IPPBaselines.ipynb
: SGP-based IPP approach and baseline methodsnon_point_FoV.ipynb
: IPP with non-point FoV sensors (drone camera setup)non_stationary_demo.ipynb
: SP with non-stationary kernelobstacles.ipynb
: SP in an environment with obstacles
sgptools/
: SGP-Tools librarykernels/
: Kernel functionsneural_kernel.py
: Neural Non-Stationary Spectral Kernel
models/
: Sensor placement and IPP methodscore/
: GP/SGP models used for sensor placement and IPPaugmented_gpr.py
: GPflow's GP that supports transforms (expansion and aggregation)augmented_sgpr.py
: GPflow's SGP that supports transforms (expansion and aggregation)transformations.py
: Expansion and aggregation transforms for IPPosgpr.py
: Thang Bui's implementation of online sparse variational GP used for online/adaptive IPP
bo.py
: Bayesian optimization-based sensor placement method that maximizes mutual informationcma_es.py
: Genetic algorithm-based sensor placement method that maximizes mutual informationcontinuous_sgp.py
: Continuous SGP-based sensor placement methodgreedy_mi.py
: Greedy sensor placement method that maximizes mutual informationgreedy_sgp.py
: Greedy SGP-based sensor placement method
utils/
: Tools used for preprocessing the data, training GPs and SGPs, and generating pathsdata.py
: Tools to preprocess datasetsgpflow.py
: Tools to interface with GPflowmetrics.py
: Metrics used to quantify the solution qualitymisc.py
: Miscellaneous helper functionstsp.py
: TSP solver
-
High-resolution topography data can be downloaded from NOAA Digital Coast
-
High-resolution bathymetry data can be downloaded from NOAA Digital Coast
-
Large tif files need to be downsampled using the following command (requires GDAL package):
gdalwarp -tr 50 50 <input>.tif <output>.tif
Please consider citing the following papers if you use SGP-Tools in your academic work 😄
@misc{JakkalaA23SP,
AUTHOR={Kalvik Jakkala and Srinivas Akella},
TITLE={Efficient Sensor Placement from Regression with Sparse Gaussian Processes in Continuous and Discrete Spaces},
NOTE= {Preprint},
YEAR={2023},
URL={https://itskalvik.github.io/publication/sgp-sp},
}
@inproceedings{JakkalaA24IPP,
AUTHOR={Kalvik Jakkala and Srinivas Akella},
TITLE={Multi-Robot Informative Path Planning from Regression with Sparse Gaussian Processes},
booktitle={IEEE International Conference on Robotics and Automation, {ICRA}},
YEAR={2024},
PUBLISHER = {{IEEE}},
URL={https://itskalvik.github.io/publication/sgp-ipp}
}
This work was funded in part by the UNC Charlotte Office of Research and Economic Development and by NSF under Award Number IIP-1919233.
The SGP-Tools software suite is licensed under the terms of the Apache License 2.0. See LICENSE for more information.