The holonomic motion planner performs a best-first search in the discretized three dimensional C-space using a potential function to guide the search. A number of techniques are employed to speed up this planner. In order to avoid computing a potential function in the full three dimensional configuration space, a weighted combination of potential functions for two control points on the robot is used. Although these component potential functions (which can be computed in the two dimensional workspace) are free of local minima, their comination may not be. Local minima encountered during the search are dealt with by doing a local search, essentially ``filling up'' the local minimum until a saddle point is found. One drawback to this algorithm is that it cannot always quickly determine when no path exists.
The nonholonomic planner transforms the holonomic path by recursively
attemping to replace segments of the path by collision-free Reeds \&
Shepp paths. This is guaranteed to succeed because a free holonomic
path can always be broken into a finite number of subpaths such that the
shortest Reeds \& Shepp curves connecting the endpoints also lie in
the free space (Taix 1991). The path is then optimized by randomly
selecting two configurations along the path and attempting to replace them
with a collision-free Reeds \& Shepp curve. As much optimization
can be done as time allows. Occasionally, this optimization fails
to produce a good path; in these cases the holonomic planner is called
upon to generate another path (here, by planning in reverse from the goal
to the start).