Multilevel Planning Framework {#multiLevelPlanning}

[TOC]

When dealing with high-dimensional motion planning problems, we often cannot solve them directly because our algorithms either run out of memory or the runtime quickly blows up. To combat this curse of dimensionality, we can instead plan on different levels of abstractions. To plan on different levels of abstractions, we develop the multilevel planning framework. In this framework we use internally the language of Fiber Bundles to model abstractions as sequences of admissible lower-dimensional projections of the state space.

High-level introduction

Instead of planning on a single state space, we instead use a sequence of state spaces, which allows a planner to exploit those spaces to quickly find solutions. To use the multilevel planning framework, you only need to specify a sequence of ompl::base::SpaceInformationPtr together with corresponding ompl::base::StateValidityChecker functions. You can use any sequence and any validiy checker you like. However, if you want to be sure that the algorithm finds a solution, you need to make sure that those functions are admissible. Admissible here means that if there exists a valid solution on the original state space, and you project this solution onto a lower-dimensional space in your sequence, then this solution must be feasible. In practice, you can achieve admissibility by constraint relaxation operations, like shrinking obstacles, shrinking links, removing non-holonomic constraints, removing links, removing subsystems or removing robots (from a set of robots).

Some examples of admissible projections are shown in the Figure below. We show three examples. In the first example, we remove the arms of PR2 (which might be irrelevant when moving through long corridors). In the second example, we remove some fingers of the Shadow hand which might not be relevant for a particular grasp. In the third example, we nest an inscribed sphere in an airplane. While the airplane might have non-holonomic constraints, the sphere is holonomic. The validity checker in each case corresponds to checking collision of the lower-dimensional robot.

\htmlonly

\endhtmlonly