From: Brian Gerkey <gerkey@ai...> - 2005-01-14 22:43:06
While running experiments with multiple robots yesterday, I noticed some
shortcomings in Player's support for path-planning and navigation. So
this morning I've made a few enhancements. If you use the wavefront +
amcl + vfh (+ playernav) combination to command your robots, I think
you'll like these changes. The highlights:
- The wavefront driver caches the computed configuration space (c-space)
data to a file. Computing this data can be annoyingly slow, especially
if you start and stop the planner frequently. So caching can save a lot
of time. There's a config file option to determine the name of the
cache file (default: "player.cspace"). Because md5 hashing is used to
verify the validity of the cache file, this functionality is available
only if you have the libmd5 library (part of the OpenSSL dev kit)
installed; if you don't have it, then the c-space data will be computed
every run, as before.
- The wavefront driver periodically replans; i.e., it computes a new
path to the current goal from the robot's current pose. There's a
config file option to determine how often (default: 2 seconds; set to 0
for no replanning). This little change makes the whole system MUCH more
robust to everything from inaccuracies in the map to dynamic obstacles.
I really can't believe I didn't implement this much earlier.
- The planner interface defines a config request,
PLAYER_PLANNER_ENABLE_REQ, for enabling/disabling (i.e.,
starting/stopping) the robot. When disabled, a robot sits still and
does no planning. The wavefront driver, libplayerc, and the C++ client
lib support this config request.
- The playernav utility supports enabling/disabling robots. Middle-click
a robot to enable/disable it; use the "Stop/Go..." menu to
enable/disable all robots simultaneously. This functionality helps a
lot when one or more robots misbehave during an experiment.
All is checked into CVS.
Brian P. Gerkey gerkey@...
Stanford AI Lab http://ai.stanford.edu/~gerkey