This code is associated with the following paper:
Martim Brandao and Ioannis Havoutis, "Learning Sequences of Approximations for Hierarchical Motion Planning", ICAPS 2020.
Hierarchical motion planning typically solves complex problems by the help of solutions to approximate problems.
What we do here is to:
- Automatically extract multiple possible sub-spaces of the original state-space of a motion planning problem, including their approximate collision-checking geometry (see test-subspace-models.cpp)
- Represent the sequencing of approximations as a graph (see ArchitectureSearch.h / cpp)
- Optimize the parameters of this graph (which lead to a sequence of approximations and a separate computation-time-budget for each approximation), using the evolutionary algorithm NSGA2 (see deap-arch-es.py)
Please read the paper for further details.
First do:
cd 3rdparty
git clone https://github.com/ANYbotics/grid_map.git
git clone https://github.com/recastnavigation/recastnavigation.git
Then install these dependencies:
- OpenRAVE
- Trajopt (my fork)
- SBPL
- PCL 1.8
- DEAP (pip install deap)
- SCOOP (pip install scoop)
Then compile:
mkdir build
cd build
cmake ..
make -j
Unfortunately the point cloud of the environment used in the paper's experiments is proprietary. Please replace any mentions to "fsc-oil-rig-map-full-1cm-clean.pcd" by your own environment point cloud.
If you use this code in your research, please cite the paper above.