!
Note: This tutorial assume that your familiar with Navigation package, Amcl, Hector slam. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Robot navigation
Description: Navigation with SLAM and localization algorithmsTutorial Level: ADVANCED
Next Tutorial: Arm manipulation
Contents
Overview
The Navigation Stack is fully supported on ARMadillo.
You can choose between controlling the robot directly using the differential drive controller as explained in the Command your robot with simple motion commands tutorial, or use the move_base interface for high level commands.
In this tutorial we will also cover the supported localization and mapping options.
The move_base interface
The move_base package provides an implementation of an action (see the actionlib package) that, given a goal in the world, will attempt to reach it with a mobile base. The move_base node links together a global and local planner to accomplish its global navigation task. For more reference on move_base interface please refer to this link
Graphical use
To understand how to work with graphical interface, launch the simulated demo of amcl. To do that, open a new terminal and type the following:
$ roslaunch armadillo2 armadillo2.launch gazebo:=true lidar:=true amcl:=true have_map:=true map:="`rospack find armadillo2_navigation`/maps/home.yaml" world_name:="`rospack find armadillo2_gazebo`/worlds/home.world" move_base:=true
Open a new terminal and write the following to launch the Rviz interface:
rosrun rviz rviz -d `rospack find armadillo2_navigation`/rviz/amcl.rviz
The launch contain the following packages:
- Move base. (For planning the path to the goal and moving the robot)
- Gazebo with armadillo model.
Server map. (To provide a map for the amcl package)
- Amcl. (To position the robot in the map)
- Rviz. (For the graphical use)
for more information about using amcl, please to the first part of latest tutorial - Running the demos.
The following video demonstrates how navigation stack work with the Rviz graphical interface.
GMapping SLAM
Rao-Blackwellized particle filters have been introduced as effective means to solve the simultaneous localization and mapping (SLAM) problem. This approach uses a particle filter in which each particle carries an individual map of the environment. Accordingly, a key question is how to reduce the number of particles. We present adaptive techniques to reduce the number of particles in a Rao- Blackwellized particle filter for learning grid maps. We propose an approach to compute an accurate proposal distribution taking into account, not only the movement of the robot but also the most recent observation. This drastically decrease the uncertainty about the robot's pose in the prediction step of the filter. Furthermore, we apply an approach to selectively carry out re-sampling operations which seriously reduces the problem of particle depletion. For more reference on this package please refer gmapping
To see the gmapping_slam work in armadillo2, simply add the parameters lidar:=true and gmapping:=true when you run the launch file.
Saving the map
To save the current map just type the following command in a new terminal:
$ rosrun map_server map_saver
The map_saver program will save the map in the current folder, and will output two file:
- map.pgm
- map.yaml
NOTE:To change the name of the files go to map.yaml file. In the image field change the map.pgm to <my_map>.pgm
Localization
AMCL
amcl is a probabilistic localization system for a robot moving in 2D. It implements the adaptive (or KLD-sampling) Monte Carlo localization approach (as described by Dieter Fox), which uses a particle filter to track the pose of a robot against a known map.
To see how amcl work with our robots refer to the first example in this page.