|Title:||Specification for TurtleBot Compatible Platforms|
|Author:||Melonee Wise, Tully Foote|
This REP outlines compatibility defintions for TurtleBot compatible platforms. The TurtleBot is a specific product, but it is an Open Hardware Design released under the FreeBSD Documentation License.   The purpose of this document is to differentiate the critical design features which are necessary for compatability from the other design features which can be modified without functionally effecting the core design. This document is meant to be a guideline for the development of new cheaper or more functional robots that can still leverage the development efforts of the TurtleBot community.
Developers of TurtleBot applications, hardware accessories, models, and libraries need a share convention for compatibility in order to better integrate and re-use software and hardware components. Shared conventions for compatibility provides a specification for developers creating new hardware configurations, and accessories for TurtleBot compatible platforms. Similarly, developers creating libraries and applications can more easily use their software with robots that are compatible with this specification.
It is expected that most tools and applications written for a TurtleBot should run on a Level 1 compatible robot.
The TurtleBot is trademarked by Willow Garage. If you would like information on producing TurtleBot branded product please contact Willow Garage at email@example.com . This document is designed to allow others to develop robots which can take advantage of the growing community around the TurtleBot design.
There are many tools and applications written for the TurtleBot which can be useful for other similar robots. Level 2 compatible robots are a subset of these robots for which a majority of the applications will work. There are already a number of robots which are TurtleBot compatible such as Mini Max  and Pi Robot  .
TurtleBot is a low-cost, open-source software and hardware personal robotics kit. The TurtleBot main hardware features include a mobile base, rgbd sensor, on board computation, wireless communication, and expansion space for adding new hardware.
There are two levels of compatability defined in this REP. Level 1 compatable robots are expected to be able to be swapped out without significant code changes. Level 2 compatable robots are expected to be able to share significant software components, but may require non-trivial changes to software between robots.
Below are the specifications for each of the levels of compliance:
Robots that are level 1 compatible meet the following requirements as well as all Level 2 requirements.
The following hardware requirements are to ensure that the default TurtleBot software runs without modification on the robot and to ensure accessory compatibility between TurtleBot compatible robots.
The TurtleBot stacks (turtlebot, turtlebot_viz, turtlebot_apps, turtlebot_arm) must run on the robot without user modification.
Distributors of TurtleBot Level 1 compatible robots should provide the following software and configuration files if they are different than the TurtleBot:
- cmd_vel (geometry_msgs/Twist)
- The desired velocity of the robot. The type of this message is determined by the drive_mode parameter. Default is geometry_msgs/Twist.
- odom (nav_msgs/Odometry)
- The odometry of the robot based on the gyro and sensor_state.
- imu/data (sensor_msgs/Imu)
- The angular velocity and integrated position of the gryo.
- ~cmd_vel_timeout (double, default: 0.6)
- If a new command isn't received within this many seconds, the base is stopped.
Robots that are level 2 compatible meet the following requirements as well as all the hardware extensions and modification requirements.
When adding or creating new hardware for TurtleBot compliant robots distributors should use the following guidelines and conventions:
Location names should be generic and have semantic meaning with respect to the robot hardware, below are examples of common location names:
Whenever possible it is prefered to use the following convention naming for sensor topics/namespaces LOCATION_TYPE. For example:
When providing an accessory or extension for a Level 1 or 2 TurtleBot compatable robot a URDF description of the extension should be provided which provides at least collision geometries and visualization meshes.
There is a package which provides the necessary Gazebo model for Level 1 compliant robots. See the turtlebot_simulator stack  for more information.
It is recommended for Level 2 compliant robots to release a stack with the gazebo model(s) which allows them to be simulated as well, to ease development for developers who do not always have access to hardware.
The scope of potential robotics software is too broad to require all ROS software to follow the guidelines of this REP. However, choosing different conventions should be well justified and well documented.
This REP is built upon previous REPs and ROS best practices. All implementations should do the same. Specifically relevant ones are listed below.
|||REP 103, Standard Units of Measure and Coordinate Conventions (http://www.ros.org/reps/rep-0103.html)|
|||(1, 2) REP 105, Coordinate Frames for Mobile Platforms (http://www.ros.org/reps/rep-0105.html)|
|||REP 107, Diagnostic System for Robots Running ROS (http://www.ros.org/reps/rep-0107.html)|
|||The turtlebot_simulator stack (http://www.ros.org/wiki/turtlebot_simulator)|
|||The turtlebot_node package (http://www.ros.org/wiki/turtlebot_node)|
|||The Mini Max Robot (http://www.showusyoursensors.com/2011/06/introducing-mini-maxwell.html)|
|||The Pi Robot (http://www.pirobot.org/)|
|||The Open Source Hardware Statement and Definition (http://freedomdefined.org/OSHW)|
|||The FreeBSD Documentation License (http://www.freebsd.org/copyright/freebsd-doc-license.html)|
TurtleBot is a trademark of Willow Garage.
This document has been placed in the public domain.