From The Player Project
Robot navigation consists typically of localizing the robot in a map and planning a path to a goal position while avoiding obstacles, e.g. walls, within the map. Furthermore also dynamic objects, e.g. people or other robots, which are not represented in a map, shall be avoided while the robot follows the path to the goal.
Different algorithms for each separate task exist. Some are implemented as Player drivers and will be summarized in the following.
A map provides basic information for the localization and planning algorithms. It can be provided as a bitmap for example with Player's mapfile driver. There is also the possibility to provide a map from a vector file.
To locate a robot within the map its sensor readings, e.g. from a laser or sonar ranger, are compared to positions in the map. The most similar readings will define the most likely pose hypothesis of the robot. Player provides currently one algorithm for localization, i.e. the Adaptive Monte Carlo Localization, via the amcl driver.
Path planning can be separated in two tasks.
Global Path Planner
The global path planner takes care of static objects within the map, i.e. walls, and tries to plan a path from the current to the goal position. The path consists of intermediate positions which will be the goals for the local path planner. Player currently supports the global path planner wavefront as driver.
Local Path Planner
The local path planner plans a path to its next goal position, typically while performing dynamic obstacle avoidance. Normally the next goal is in the line of sight of the robot, i.e. no wall is between the robot and its goal.
Player supports currently following drivers for local path planning:
Testing and Debugging
When testing robot navigation in Player it is very helpful to have a simple interface for setting the robots goal and position directly on the map and monitoring those. This can be done with playernav.