The HyP-DESPOT package is developed based on the DESPOT package. The API in HyP-DESPOT closely follows that in the DESPOT package. See here for detailed documentations of the DESPOT package.
The algorithm was initially published in our RSS paper:
Cai, P., Luo, Y., Hsu, D. and Lee, W.S., HyP-DESPOT: A Hybrid Parallel Algorithm for Online Planning under Uncertainty. Robotics: Science & System 2018. (PDF)
- Cmake
- Version >=3.8 is required for CUDA integration
- CUDA and an NVIDIA GPU with computational capacity >=3.0
cd ~/workspace
git clone https://github.com/AdaCompNUS/HyP-DESPOT.git
cd HyP-DESPOT
mkdir build; cd build
cmake ..
make
The source files of HyP-DESPOT and examples are in folder src/HypDespot. Main extensions from DESPOT include:
include/despot/GPUinterface/ Header files: GPU versions of interface classes in DESPOT
include/despot/GPUcore/ Header files: GPU versions of core classes in DESPOT
include/despot/GPUutil/ Header files: GPU versions of utility classes in DESPOT
src/GPUinterface Source files: GPU versions of interface classes in DESPOT
src/GPUcore Source files: GPU versions of core classes in DESPOT
src/GPUutil Source files: GPU versions of utility classes in DESPOT
src/solvers/Hyp_despot.cu Main file of the HyP-DESPOT solver
src/Parallel_planner.cu Parallel extension of the planner class in DESPOT
src/GPUrandom_streams.cu GPU version of the RandomStreams class in DESPOT
See this GPU model documentation for detailed descriptions on these extensions and how to build a custom GPU POMDP model. Refer to this guide for integration with NVidia Nsight.
The HyP-DESPOT package contains two examples presented in our RSS paper. They include:
- Navigation in a partially known map (HyP_examples/unkown_navigation/). The key files in this example are:
Unc_Navigation/UncNavigation.cpp CPU POMDP model of the navigation problem
GPU_Unk_nav/GPU_UncNavigation.cu GPU POMDP model of the navigation problem
Unc_Navigation/main.cu The custom planner and the main function
- Multi-agent RockSample (HyP_examples/ma_rock_sample/). The key files in this example are:
ma_rock_sample/ma_rock_sample.cpp CPU POMDP model of the car driving problem
GPU_MA_RS/GPU_ma_rock_sample.cu GPU POMDP model of the MARS problem
ma_rock_sample/main.cu The custom planner and the main function
The tools folder provides tools for debugging HyP-DESPOT when implementing new problems, including:
Particles*.txt Text files: particles (starting states of scenarios) for different simulation steps to be loaded and used to fix scenarios in HyP-DESPOT.
Streams*.txt Text files: random streams in scenarios for different simulation steps to be loaded and used to fix scenarios in HyP-DESPOT
draw_car_cross.py Script: to visualize the execution record output by HyP-DESPOT (through cout and cerr)
run_Car_hyp_debug.sh Script: to run experiments with HyP-DESPOT
The best way to debug is to fix the scenarios and output the search process. This can be acheived by setting the FIX_SCENARIO flag defined in GPUcore/thread_globals.h. Possible vaues to be set are:
0 Normal mode
1 Read scenarios from Particles*.txt and Streams*.txt
2 Run in normal mode and export Particles*.txt and Streams*.txt during each simulation step
Alternatively, setting the DESPOT::Debug_mode defined in despot.cpp to be true will fix all random seeds used in HyP-DESPOT, and thus the search will be fully determinized for easier debugging.