Ask Your Question

Building your own ROS stack for a new robot - based off another robot stack (e.g. the TurtleBot stack)

asked 2012-04-12 03:04:16 -0500

updated 2012-04-12 03:10:28 -0500


Are there any tutorials that show you how to basically copy the TurtleBot stack software for a new novel robot?


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-04-12 08:57:22 -0500

mmwise gravatar image

Currently there are not many tutorials on how to build an entire set of robot stacks from the ground up, but I can give you an overview of what you need to do based on things in the TurtleBot stacks.

The turtlebot stack is the core stack for TurtleBot and it contains the base level drivers, nodes, description files, and launch files for the robot.

  1. turtlebot_driver provides the basic driver interface for communicating with the irobot create, the underlying robot used in the TurtleBot. You will need to create a similar driver for your robot that creates an API for your robot that makes sense (drive command, sensor states, etc).

  2. turtlebot_node provides the ROS wrapper for the turtlebot_driver creating a ROS API for the robot. In general it is good practice to create a ROS wrapper around the driver for your robot so that there is a logical division between ROS and your robot driver. This node exposes topics like diagnostics, cmd_vel, odom, etc. The turtlebot_node wiki page shows the ROS API for turtlebot: You should create a similar node with the relevant topics for your robot, this is very robot dependent because of the differences in hardware from robot to robot.

  3. turtlebot_description contains the urdf for the robot. This describes the locations of sensors, joints, and links in your robot. Good tutorials for creating a urdf can be found here: In order to visualize and have proper coordinate transforms your robot needs a urdf. Your robot will need a urdf to leverage many of the packages in ROS and will be extremely helpful in debugging.

  4. turtlebot_bringup contains the basic launch files for the robot. In turtlebot_bringup several key features are "hidden". This is where we start robot_pose_ekf and robot_state_publisher. robot_pose_ekf provides the combined odometric frame of the robot using the imu and odom data provided by TurtleBot (this is a default node in ROS that is very useful). robot_state_publisher provides the transformations for the robot (tf tree) which allows you to use visualize data properly in rviz and transform data between frame easily using tf.

Below is an image showing the basic node configuration of the TurtleBot.

image description

edit flag offensive delete link more

answered 2012-08-15 08:21:28 -0500

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

this has been very helpful. are there any simpler stacks then turtlebot we can examine for learning purposes?


edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2012-04-12 03:04:16 -0500

Seen: 1,004 times

Last updated: Aug 15 '12