Great News: this paper won the Best Student Paper Award at RSS 2022!
This repository contains the code for reproducing all the figures, animations, and results in the following paper.
@inproceedings{chen2022ak,
author = {Weizhe Chen AND Roni Khardon AND Lantao Liu},
title = {{AK: Attentive Kernel for Information Gathering}},
booktitle = {Proceedings of Robotics: Science and Systems},
year = {2022},
address = {New York City, NY, USA},
month = {June},
doi = {10.15607/RSS.2022.XVIII.047}
}
If you encounter any issues or have any questions, please feel free to contact me at chenweiz [at] iu.edu
. I am happy to help and will respond as soon as possible.
-
Creating a Python virtual environment is recommended but not required. I personally prefer
mamba
overconda
becausemamba
provides the same interface but is much faster.conda create -n ak python=3.8 conda activate ak
-
Install PyPolo -- a Python library for Robotic Information Gathering.
Note: Mac users might need to install the
bezier
library viaBEZIER_NO_EXTENSION=true pip install --upgrade bezier --no-binary=bezier
pip install pypolo==0.0.3
Note: The Github repository PyPolo has been constantly updated and is NOT compatible with this repository. Please use the PyPolo version specified above. The PyPolo code that corresponds to this paper can be found on https://pypi.org/project/pypolo/
-
Run single-file demo to understand the Attentive Kernel. This demo does not rely on PyPolo.
cd attentive_kernels/demo python main.py
This repository follows the following structure.
The data
folder is shared across different experiments.
To keep minimum dependency, we have provided the preprocessed data.
The pre-processing steps can be found in the commented code, which require some tricky-to-install packages such as rasterio
.
Each folder serves for one purpose, including benchmarking (experiments
), ablation study (ablation
), overfitting analysis (overfitting
), sensitivity analysis (sensitivity
), customed step function demo (step
), sin function demo (sin
), and Mount Saint Helens volcano demo (volcano
).
Visualization of the weighting and membership functions can be found in the sin
and step
folders.
data
├── sin/
├── srtm/
├── step/
└── volcano/
experiments/
├── parse_arguments.py (optional)
├── animate.py (optional)
├── clean.sh
├── configs/
├── main.py
└── reproduce.sh
ablation/
overfitting/
sensitivity/
sin/
step/
volcano/
LICENSE
README.md
To reproduce the results in a folder, simply run the corresponding reproduce.sh
shell script.
The results will be saved to the automatically created figures
and outputs
folder in the current directory.
You can also run a specific experiment rather than reproducing all the experiments. For example, the following commands run the Attentive Kernel in environment N17E073 with a myopic informative planner.
cd attentive_kernels/experiments
python main.py --config ./configs/ak.yaml --env-name N17E073 --strategy myopic --seed 0
# After running the experiment, we can animate the sampling process using the saved data in outputs/ folder.
python animate.py --config ./configs/ak.yaml --env-name N17E073 --strategy myopic --seed 0
Field Experiments
One Example Environment in Simulation
Attentive Kernel | RBF Kernel |
---|---|
Gibbs Kernel | Deep Kernel Learning |
---|---|