The shortest path is not always fastest, depending on the agent's dynamics (left). RRT*-Unicycle explicitly considers the agent's dynamics to measure how well its learned behavior approximates the fastest possible one (right)
This repo approximates the fastest completion time from a starting pose to a goal position based on the dynamics of the agent. Details are here.
Currently, this repo supports the following dynamics:
- Unicycle
- Pointturn
If you use this code in your research, please cite the following paper:
@inproceedings{sct21iros,
title = {Success Weighted by Completion Time: {A} Dynamics-Aware Evaluation Criteria for Embodied Navigation},
author = {Naoki Yokoyama and Sehoon Ha and Dhruv Batra},
booktitle = {2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year = {2021}
}
If you want to use the unicycle dynamics model or use a navmesh (vs. a PNG file), you need to install habitat-sim. If you just want to use the PNG method and the point-turn model, you don't need to install it. Habitat-sim repo with installation instructions is located here. The use of conda is strongly suggested.
You will need to install the following packages:
pip install numpy numpy-quaternion yacs opencv-python tqdm
This repo can accept either the .json.gz
files that habitat-lab uses
for training PointNav agents, or .png
files that represent a 2D floor plan. For the .png
files, white pixels
represent navigable locations and black/gray ones represent walls or obstacles (see maps/example_map.png
for reference).
You must use a .yaml
file to configure the various parameters needed for running the script.
Please read .yaml
files in configs
folder for list of configurable parameters and descriptions for each one.
After the yaml file has been properly configured, simply pass it to the run.py
script. Here is an example of proper usage:
python run.py configs/png.yaml