The move_base ROS node

move_base package provides the move_base node which is a major element of ROS Navigation stack. It moves the robot from its current position to a goal position. When path planning is done, the user gives uses the 2D Nav Goal in RVIZ to specify the goal position and orientation. This position (x,y,z) and orientation(x,y,z,w) are actually published in move_base/goal topic.

The move_base node links together a global and local planner to accomplish its global navigation task.

The Global Planner
It is in charge of calculating the safe path in order to arrive at goal pose. Note that the path is calculated before the robot starts moving so it will not take into account the laser readings while moving i.e. unscanned obstacles that are not in the map.
  • Navfn Planner
    The Navfn planner is the most commonly used global planner for ROS Navigation. It uses Dijkstra's algorithm in order to calculate the shortest path between the initial pose and the goal pose.
  • Carrot Planner
    This planner is helpful in the case where the user gives a goal which is in an obstacle. It helps to reach the unreachable goal as close as possible.
  • Global Planner
    This planner is used as a replacement for navfn planner. This enables us to select the path planning algorithm between Dijkstra's algorithm and A*.

The Local Planner
After the path is planned by the global planner, it is sent to the local planner. The local planner divides the path into segments and carries them out considering all the laser readings. It provides velocity commands to the robot and makes it follow the local path.
  • dwa_local_planner
    It provides the implementation of the Dynamic Window Approach algorithm. It is the most commonly used local planner.
  • base_local_planner
    Uses the trajectory rollout algorithm to calculate the path.
  • eband_local_planner
    Uses the elastic band method to calculate the path.
  • teb_local_planner
    Uses the timed elastic band method to calculate the path.

Cost Maps
Another important concept in the move_base node is costmaps. It is a map that represents the places that are safe for the robot in a grid cell. Each cell has a cost value in integer from 0 to 255.
  • 0 - Free space.
  • 253 - Inscribed: A cell is less than the robot's inscribed radius away from an actual obstacle. So moving the center of the robot here will result in a collision.
  • 254 - Lethal obstacle.
  • 255 - Unknown information.
Global planner uses the global costmap to generate a long-term plan while the Local planner uses the local costmap to generate a short-term plan. Global costmap is created from static/stored map whereas Local planner is created using sensor readings in real-time. In the image below, the black-white part is the global costmap whereas the coloured parts represent the local clostmap.

Comments

Post a Comment

Popular posts from this blog

Three Wheeled Omnidirectional Robot : Motion Analysis

Dijkstra`s Algorithm vs A* Algorithm