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

To run DSV Planner in a Matterport3D environment, follow instructions to setup the development environment to use the Matterport3D environment. Then, use the command lines below to launch the system and DSV Planner.

roslaunch vehicle_simulator system_matterport.launch
roslaunch dsvp_launch explore_matterport.launch

Users can also set a navigation boundary to constrain the areas to explore. Please follow instructions from the link above to generate a boundary file using CloudCompare. Replace 'src/dsvplanner/dsvp_launch/data/boundary.ply' with the boundary file and set 'use_boundary = true' in 'src/dsvplanner/dsvp_launch/launch/explore_matterport.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

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. IEEE/RSJ Intl. Conf. on Intelligent Robots and Systems (IROS). Prague, Czech, Sept. 2021. [PDF] [Talk]


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