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.
When using navigation drivers in Player as the ones mentioned above it is advised to have those drivers running in a separate player instance. Otherwise a Stage plugin or a robot driver can interfere with the navigation drivers and cause Player to segmentation fault.
Real Robot is Spinning Around or Doing Nothing
When using a laser ranger as sensor for the local path planner it can happen that the real robot spins around endlessly and does not head towards any goal. This can happen with a real laser ranger since its readings are noised and providing sometimes erroneous values. Some ranger hardware returns those error values as very short ranges (< 0.1 meter). This can lead the local path planner to interpret the reading as an obstacle and starting avoiding the ghost obstacle. Which can be spinning around or just stop moving.