Ask Your Question

Revision history [back]

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: http://ros.org/wiki/turtlebot_node 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: http://ros.org/wiki/urdf/Tutorials. 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