The cob_navigation stack provides configuration and launch files for running the navigation stack on a Care-O-bot in a number of common configurations. For example, the cob_navigation_local package holds files that configure the move_base node to operate in an odometric frame, and the cob_mapping_slam package holds files that configure the robot for SLAM. These configuration files are intended for use as building blocks for applications that wish to use autonomous navigation as a component.

The naming of the packages as well as the documentation is kept close to the one of pr2_navigation for ease of use for experienced ROS users. However, changes are made to suit our needs.


There are three major sections to the documentation of the packages in this stack:

  • Applications: These are launch files that are meant to run as standalone applications. They start all necessary components that are needed to run autonomous navigation. Applications have the extension *.launch.

  • Building Blocks: These are launch files that are intended for inclusion in applications. They can be mixed and matched in order to make applications with similar components that perform different functions. Building Blocks launch files have the extension *.xml.

  • Configuration Files: These are YAML files that hold common configuration options for the navigation stack on the Care-O-bot. They can be included in launch files for applications.

The launch files for end users of the Care-O-bot or the rob@work are in the following packages:

Configuration files (except for the package specific ones) can be found in cob_navigation_config.

The source code of the simple linear navigation is in cob_linear_nav.

The following stacks provide detailed documentation of the parameters and nodes used in the cob_navigation stack:

Which launch file for which purpose?

There are a lot of different launch files in the different packages in the cob_navigation stack. Which package and which launch file should be used for which purpose?

The different packages provide different setups depending on the task you would like to do:

  • If you want to create a map by driving around with the robot using tele-operation, you should use 2dslam.launch in cob_mapping_slam. To save a map, use the map_saver command-line utility provided by map_server.

  • If you want to create a map and simultaneously use autonomous navigation choose one of the launch files in cob_navigation_slam. To save a map, use the map_saver command-line utility provided by map_server.

  • If you already have a map use the launch files in cob_navigation_global.

  • If you only want to navigate in the local (odometric) frame of the robot use cob_navigation_local.

There also exist different navigation algorithms (or modes) in the cob_navigation_* packages, from which you can choose. It also depends on the application you are targeting, which of those modes is suited the best.

  • 2dnav_ros_tr.launch is best suited for environments that are highly dynamic, meaning there are e.g. a lot of people walking around. It uses a differential drive like mode, meaning that it turns the robot's front in driving direction. This is helpful for avoiding obstacles and providing safety functions as e.g. the emergency stop using the front Sick Laser Scanner. However, for doing fast repositioning to the side this mode is not well suited, because it does not fully utilise the omnidirectional capability of the robot. You send the goals via rviz on the move_base_simple/goal topic.

  • 2dnav_ros_dwa.launch is suited for almost all environments (being dynamic or static). It uses a full omnidirectional mode which allows for fast and accurate repositioning. Its drawback is the decrease in safety functionality in highly dynamic environments. You send the goals via rviz on the move_base_simple/goal topic.

  • 2dnav_linear.launch is well suited for obstacle free, static environments and quick'n'dirty repositioning. It does not have any obstacle avoidance, so other nodes have to do this (as is done with the cob_collision_velocity_filter, which is started by default for all Care-O-bots and rob@works). It is not suited for dynamic environments or environments where no straight path to the goal is available. You send the goals via rviz on the move_base_linear_simple/goal topic.

  • 2dnav_ipa.launch and 2dnav_ipa_extloc.launch each provide a differential like and a full omnidirectional navigation mode as well. The respective topics for rviz are move_base_diff_simple/goal and move_base_simple/goal.

For example, for reaching the red X either 2dnav_ros_dwa.launch or 2dnav_linear.launch will yield good results. Whereas for reaching the green X 2dnav_ros_dwa.launch or 2dnav_ros_tr.launch could be used. If there would be people (or other beings) moving in the navigation area, 2dnav_ros_tr.launch should be used. (Of course, the same holds for the respective modes of 2dnav_ipa.launch and 2dnav_ipa_extloc.launch.) Navigation Example


Please consult ros answers to see if your problem is already known.

Please use the mailing list for additional support or feature discussion.

Report a Bug

Use trac to report bugs or request features. View active tickets

Wiki: cob_navigation (last edited 2012-08-07 09:27:02 by MatthiasGruhler)