Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

P.P.T. - Path Planning Testbed

Introduction

This software package contains an interactive application useful for developing, testing, and comparing different path planning algorithms.

It is written in C++ and uses OpenInventor, OpenGL, and X/Motif libraries for the graphics and GUI. Currently, it compiles cleanly under SGI Irix and RedHat Linux. Other platforms have not yet been tested.

Path Planning

Path planning is a fundamental problem in robotics, virtual prototyping, computational chemistry, computer animation, and other applications.

Path planning problems generally involve computing a continuous sequence of configurations (generalized coordinates) between an initial configuration (start) and a final configuration (goal) while respecting certain constraints.

The "basic path planning problem" involves computing a collision-free path between two configurations in a static environment of known obstacles. In this case, the constraints on the solution path arise from the geometry of both the obstacles and the "robot" (the object for which a path is being computed). If the robot can be represented as a single rigid object that rotates and translates in a 3D environment, then the problem is sometimes referred to as "the piano-mover's problem".

The term "Motion Planning" is usually distinguished from "Path Planning" in that the computed path is parameterized by time (a trajectory).

P.P.T. considers the "basic path planning problem", and hence has no real concept of "time" or "system dynamics" (physics) which are inherent to problems requiring time-parameterized solution trajectories.

Those interested in a more general and powerful motion planning software solution might want to check out the "Motion Strategy Library", which can handle both holonomic and nonholonomic motion planning problems across a wide range examples:

http://msl.cs.uiuc.edu/msl/

Compiling and Installing the Source

IMPORTANT: Please read this file in its entirety to avoid potential time-wasting mistakes in the future.

To build the executable, change to the top-level directory and invoke the following commands at a shell prompt:

> gmake depend

> gmake

By default, the source will build on IRIX using the SGI C++ compiler. On Linux systems, it will build using g++ (tested on RedHat 6.2 with gcc version egcs-1.1.2 release).

To change the default compiler and other configuration options for a given platform, edit the "Makefile.irix" or "Makefile.linux" files in the "conf" directory.

It has not yet been ported or tested on other distributions, platforms, or compilers at present.

Using the Program

To run the program, type the name of executable followed by a scene file name, for example:

> ppt.linux scenes/3dAlpha15

If no scene file argument is given, a default scene file is loaded. The scene file loads the robot, and the environment geometry. These are specified in other files in the directories "robots" and "environments".

OpenInventor Models

The actual geometry of all objects is usually specified in Inventor model files in the "models" directory. You can use any modeler to create new geometry and convert it to OpenInventor format (nearly identical to the VRML1.0 specification. The other text files can then be edited to load the model files.

OpenInventor .iv files can be represented in either ASCII or binary formats. For faster file loading and disk storage efficiency, I use the binary format by default. However, you can easily convert any .iv file between its binary and ASCII representations using the 'ivcat' utility:

To convert from binary to ASCII Inventor

ivcat binaryfile.iv -o asciifile.iv

To convert from ASCII to binary Inventor:

ivcat -b asciifile.iv -o binaryfile.iv

For example, when I edit a model, I usually convert it to ASCII and edit it using emacs. Then, when I am satisfied with the appearance, I convert it to binary.

For added model loading and rendering efficiency, you might want to consider using the utility 'ivfix':

ivfix slowObject.iv quickObject.iv

Please note that this utility may CHANGE the model hierarchy to render more effiently (grouping nodes and removing unnecessary nodes). You might want to keep a copy of your original model in case you need to edit the original hierarchy.

IMPORTANT: Collision checking (and therefore path planning) may not work correctly when loading models with multiple scaling nodes in the inventor hierarchy. Thus, you should always run 'ivfix' on your models before loading them from this software.

History

The majority of this software was developed while I was a graduate student at Stanford University. That being the case, I apologize for the poorly documented portions of the code, and for any ugly hacks. Originally, I never intended anyone but myself to be forced to read this software. Sorry!

If you have any questions, just send me email and I will do my best to help out.

Good luck! -James

Using the Program

This software is being provided as a learning resource for students, researchers, and others interested in developing practical and efficient path planners. It is not intended for commercial use or distribution. (see the copyright notice below).

Author

Author: James Kuffner, Jr.

Created: October 22, 1995
Updated: February 6, 2001

Version History

PPT V1.0

Date: February 15, 2001
bulletInitial Release

Copyright Notice

Copyright (c) 1995-2002 James Kuffner, Jr. All Rights Reserved.

Permission to use and modify this software for educational, research and non-profit purposes, without fee, and without a written agreement is hereby granted to anyone using it for study, research, or other academic purposes, provided this copyright notice remains intact.

THIS SOFTWARE IS PROVIDED "AS IS", AND I MAKE NO EXPRESS OR IMPLIED WARRANTY REGARDING ITS CORRECTNESS OR USAGE. USE AT YOUR OWN RISK. Caveat Emptor, etc.