Home

Awesome

rhem_planner

Uncertainty-aware Receding Horizon Exploration and Mapping ROS stack repository.

The Uncertainty-aware RHEM planner performs planning for autonomous exploration, while ensuring that viewpoint-to-viewpoint trajectories minimize localization & mapping uncertainty. Its operation depends on closing the loop between two pipelines:

Planning pipeline:

Implemented in the bsp_planner ("belief-space propagation" planner) package, it is responsible for maintaining and updating the probabilistic volumetric map of the environment, and for performing a 2-layer planning optimization:

Estimation & Propagation pipeline:

The rhem_planner stack provides a localization and mapping pipeline, augmented to perform both tasks. The included pipeline is based on a modified version of the Robust Visual-Inertial Odometry pipeline. It is responsible for:

Loop-Closure scheme:

The Planning pipeline performs RRT-based sampling to reach the 1st layer's next-best-viewpoint. Each RRT vertex carries the Estimation & Propagation pipeline state (current pose, landmarks, and associated statistics). The communication between the two pipelines is performed with ROS service-based data transactions:

Staging the stack

First, download the rhem_planner stack, which contains the packages above. Navigate to the source folder of your ros catkin workspace and:

git clone https://github.com/unr-arl/rhem_planner.git
cd rhem_planner
git submodule init --
git submodule sync --recursive
git submodule update --init --recursive

This framework employs rovio_bsp, a modified version of the Robust Visual-Inertial Odometry pipeline (included as a submodule).

Make sure you have the following dependencies:

Navigate back to your ros catkin workspace folder and proceed with a Release build:

catkin build --cmake-args -DCMAKE_BUILD_TYPE=Release

Testing the planner

To launch the RHEM pipeline directly you can use the following launch file:

roslaunch rhem_planner rhem_exploration.launch

This will bring up:

To trigger a planning iteration a call to the respective bsp_planner service is required. This can be directly performed from the terminal:

rosservice call /bsp_planner '{header: {stamp: now, frame_id: world}}'

If you use this software in a scientific publication, please cite the following paper:

@inproceedings{papachristos2017uncertainty,
  title={Uncertainty-aware Receding Horizon Exploration and Mapping Using Aerial Robots},
  author={Papachristos, Christos and Khattak, Shehryar and Alexis, Kostas},
  booktitle={2017 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={to appear},
  year={2017},
  organization={IEEE}
}

Contact

You can contact us for any question or remark: