|
Goal-Directed Navigation for
James Kuffner, Jr. |
Data Flow Diagram |
The characters used in these experiments have a minimum of 17
joints arranged hierarchically with anywhere between 40-55 degrees
of freedom. The cyclic motion capture data is used to animate all of
the joints except for the character's global location
(typically determined by the hip transformation). A simple PD
controller is used to make the character globally follow a computed
path.
Indoor navigation | Navigating a maze |
Next, an orthographic camera is situated above the scene. The near and far clipping planes of the camera are set to correspond to the vertical extents of the character's geometry. The camera's view of all obstacles is rendered into an offscreen bitmap. The graphics hardware enables this standard projection operation to be done very quickly. The projected obstacles are "grown" by the radius of the character's bounding cylinder to produce a final bitmap for planning.
Projected Obstacles | Grown Obstacles |
After the rendering and obstacle growth is complete, any
standard graph search algorithm (such as Dijkstra's algorithm or A*)
may be used to search the implicit graph defined by the rendered bitmap
for a collision-free path that connects the character's starting
position to the position of the goal marker.
Computed Path |
State Variables | Computing the Controls |
This algorithm has been implemented on an SGI Indigo2 running Irix
6.2 with OpenInventor. In our implementation, the algorithm runs in
about one-tenth of one second, allowing for interactive modification of
both the goal marker location, as well as the locations of obstacles in
the scene. Full planning and replanning is performed as the
controller adapts to new paths computed due to changes in the
environment and goal location. Provided the controller gains are set
appropriately in relation to the simulation time step, smooth and
continuous tracking motion will result.
Tracking a path using a PD controller |
Closeup of tracking performance |
Exploring an unknown maze environment |
multiple characters navigating in a maze | multiple characters navigating in an office |
Collisions between characters can be avoided by having each
character "plan around" the others. For example, one can project the
(bounding)geometry of the other characters at their current locations,
and replan as necessary. More sophisticated schemes that account
for character motions are possible (e.g. planning around the
other characters' predicted future positions).
1997 - 2009 © James Kuffner, Jr.