Dual-Stage Viewpoint Planner


Dual-Stage Viewpoint Planner incorporates two planning stages in autonomous exploration - an exploration stage for extending the boundary of the map, and a relocation stage for explicitly transiting the robot to different sub-areas in the environment. The exploration stage develops Rapidly-exploring Random Tree (RRT) and dynamically expand the RRT over replanning steps. The relocation stage maintains a graph through the mapped environment. During the course of exploration, the method transitions back-and-forth between the two stages to explore all areas in the environment. Here is the DSV Planner repository.

DSV Planner involves a local RRT (blue) for exploration and a global graph (red) for relocation. The local path (yellow) and global path (purple) are searched from the local RRT and global graph, respectively. During exploration, DSV Planner transitions back-and-forth between exploration mode and relocation mode.


The repository has been tested in Ubuntu 18.04 with ROS Melodic and Ubuntu 20.04 with ROS Noetic. Follow instructions in Autonomous Exploration Development Environment to setup the development environment. Make sure to checkout the branch that matches the computer setup, compile, and download the simulation environments.

To setup DSV Planner, install dependencies with command lines below. Replace 'distribution' with 'melodic' or 'noetic' to match the computer setup.

sudo apt update

sudo apt install ros-distribution-octomap-ros libgoogle-glog-dev libgflags-dev

Clone DSV Planner repository.

git clone https://github.com/HongbiaoZ/dsv_planner.git

In a terminal, go to the folder and checkout the correct branch. Replace 'distribution' with 'melodic' or 'noetic'. Then, compile.

cd dsv_planner

git checkout distribution


To run the code, go to the development environment folder in a terminal, source the ROS workspace, and launch.

source devel/setup.sh

roslaunch vehicle_simulator system_garage.launch

In another terminal, go to the DSV Planner folder, source the ROS workspace, and launch.

source devel/setup.sh

roslaunch dsvp_launch explore_garage.launch

Now, users should see autonomous exploration in action. To launch with a different environment, use the command lines below instead and replace 'environment' with one of the environment names in the development environment, i.e. 'campus', 'indoor', 'garage', 'tunnel', and 'forest'.

roslaunch vehicle_simulator system_environment.launch

roslaunch dsvp_launch explore_environment.launch


Below are evaluation results using Autonomous Exploration Development Environment in default settings. The vehicle navigates at 2m/s. Each method is run a number of 10 times. The trajectories are the best of the 10 runs and the exploration metrics (explored volume, traveling distance, and algorithm runtime on vertical axis) are the means of the 10 runs with the time on horizontal axis spanning the longest run. A run is ended if the method reports completion, the vehicle almost stops (< 10m of movement within 5 minutes), or the time limit is reached. Here, the time limit is set to twice of DSV Planner. Note that DSV Planner sends the vehicle home after completion of exploration. The process of returning home is not considered in the evaluation. The algorithm runtime is evaluated based on a 4.1GHz i7 CPU in system time. All algorithms use a single CPU thread for exploration planning. In addition, we provide the best results from human practice as a reference. These results are from many times of practice. In other words, prior knowledge of the environment has been incorporated. The autonomous exploration does not utilize prior knowledge of the environment. The results of DSV Planner and best human practice are made available.

Baseline methods

NBVP: Bircher et al. Receding Horizon “Next-Best-View” Planner for 3D Exploration. ICRA 2016.

MBP: Dharmadhikari et al. Motion primitives-based path planning for fast and agile exploration using aerial robots. ICRA 2020.

GBP: Dang et al. Graph‐based subterranean exploration path planning using aerial and legged robots. Journal of Field Robotics. 37(8):1363-1388, 2020.

Campus Environment

Indoor Corridors Environment

Multi-storage Garage Environment

Tunnel Network Environment

Forest Environment

This is an interesting environment - all exploration methods fall short significantly in comparison to human practice based on a pre-planned path pattern. A question arises as to whether it is worth solving the exploration problem in this type of environments. A naive method may perform even better.


Hongbiao Zhu
CMU Robotics Institute

Chao Cao
CMU Robotics Institute

Weidong Wang
Harbin Institute of Technology

Sebastian Scherer
CMU Robotics Institute

Ji Zhang
CMU NREC & Robotics Institute


H. Zhu, C. Cao, S. Scherer, J. Zhang, and W. Wang. DSVP: Dual-Stage Viewpoint Planner for Rapid Exploration by Dynamic Expansion. Submitted in 2021. [PDF]


catkin_simple, kdtree, minkindr, minkindr_ros, and volumetric_mapping packages are from open-source releases.