(!) 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.

Setup the Navigation Stack for TurtleBot

Description: Provides a first glimpse of navigation configuration for your robot, with references to other much more comprehensive tutorials.

Tutorial Level: BEGINNER

Next Tutorial: Build a map with SLAM

This tutorial doesn't pretend to be a comprehensive guide for fine tuning TurtleBot navigation, as the navigation tutorials do a great job on this. Here we just provide some useful how-tos and tricks that TurtleBot users sometimes ask. The idea is to save your time, avoiding you the need of digging in the abundant existing documentation!

Key files

The TurtleBot navigation is ruled (as in almost any other ROS robot) by a combination of launch and yaml files. Both are contained on turtlebot_navigation package, on launch and param directories respectively.

Move base

TurtleBot navigation motion is generated by move_base, who maintains a global and a local cost maps so it can create global and local plans. Its behavior is defined on param/move_base yaml files, three for cost maps and base_local_planner_params.yaml for the planner. costmap_2d configuration is quite tricky, and in most cases is driven by the need of balance between cpu usage and performance, so we will not mention here.


  • Change speed limits:
    • max_vel_x: maximum linear velocity; absolute limit for TurtleBot 1 is 0.5, and 0.7 for TurtleBot 2

    • min_vel_x: minimum linear velocity; maybe you will need to increase when caring heavy loads, in case the robot cannot beat friction at minimum speed
    • max_rotational_vel: maximum angular velocity; absolute limit for TurtleBot 2 is 3.14 (not sure for TurtleBot 1; can anyone fill this?)

    • min_in_place_rotational_vel: same comment as for minimum linear velocity
  • Goal tolerance. These two parameters allow you to make TurtleBot more or less accurate when reaching its goal. Be careful: very low values can make the robot move around the goal without reaching it!

    • yaw_goal_tolerance
    • xy_goal_tolerance
  • Cost computing biases. These three parameters define the preference of TurtleBot when following its global plan:

    • path_distance_bias: increase to make the robot follow the plan more closely
    • goal_distance_bias: increase to make the robot trajectory smoother and more efficient
    • occdist_scale: increase to make the robot more afraid to hit obstacles

Amcl (localization)

TurtleBot localization is provided by amcl. You can tweak this algorithm by modifying parameters on launch/includes/_amcl.launch file. But this is not basic stuff, and so out of the scope of this tutorial.

Gmapping (map building)

TurtleBot maps are build with gmapping. You can tweak this algorithm by modifying parameters on launch/includes/_gmapping.launch file. But again, this is out of the scope of this tutorial.

Wiki: turtlebot_navigation/Tutorials/Setup the Navigation Stack for TurtleBot (last edited 2014-01-23 15:28:06 by LucasWalter)