Only released in EOL distros:
Package Summary
iRobot Roomba 500 package based on the iRobot Open Interface Specification. There are two nodes available, a light node which exposes odometry and velocity commands, and a full node which exposes all capabilities of the underlying library.
- Author: Gonçalo Cabrita
- License: BSD
- Source: svn http://isr-uc-ros-pkg.googlecode.com/svn/stacks/roomba_robot/trunk
The Roomba Robot
The roomba_500_series package was developed on top of the iRobot Open Interface Specification. The 500 series Roombas communicate over the same protocol that the popular iRobot Creates do, however the same protocol (although similar) is not shared with the older 400 series Roombas. This package was fully tested on the models 530, 555 and 560.
The Roomba is a very interesting and robust platform for mobile robot research. Although its performance is not comparable to that of a robot designed with research in mind, the extremely low price is a compelling argument.
Sensors
The Roomba comes equipped with the following sensors:
- 2 bumpers up front;
- 6 IR bumpers up front;
- 4 cliff IR sensors;
- Left, right and omni directional IR data receivers;
- Various buttons.
Actuators
The Roomba has the following actuators:
- Left and right wheel motors;
- Main and side brush motors and vacuum motor;
- Rudimentary music playback.
- Various lights.
Accessories
Most Roomba models ship with the following accessories:
- Docking station;
- Virtual wall/beacon.
ROS API
Action API
The go_dock library present on the roomba560_node and godock_server nodes provides an implementation of the GoDockAction (see actionlib documentation), that automatically docks the Roomba. The GoDockAction is still experimental, it still needs a lot of work until it can be considered stable.
Action Subscribed Topics
godock/goal (roomba_500_series/GoDockActionGoal)
- Goal is empty for the go_dock action.
- Battery status to know if the robot is docked.
- Data from the Roomba IR receivers, left right and omni directional, to guide the Roomba to the dock.
Action Published Topics
godock/result (roomba_500_series/GoDockActionResult)
- Result is empty for the go_dock action.
- Velocity commands to the robot.
roomba500_light_node
roomba500_light_node is a driver for any Roomba from the 500 series. It solely subscribes to velocity commands and publishes the robot's odometry.Subscribed Topics
cmd_vel (geometry_msgs/Twist)- Velocity commands to the robot.
Published Topics
odom (nav_msgs/Odometry)- Odometry readings from the robot.
Parameters
roomba/port (string, default: /dev/ttyUSB0)- The serial port where the Roomba can be found.
roomba560_node
roomba560_node is a driver for the Roomba 555 and 560. It exposes all the functionalities that these models have to offer. This node includes the GoDockAction.Subscribed Topics
cmd_vel (geometry_msgs/Twist)- Velocity commands to the robot.
- Various Leds on the Roomba.
- The digit Leds on the Roomba (clock).
- Store a song on the Roomba.
- Play a song on the Roomba.
Published Topics
odom (nav_msgs/Odometry)- Odometry readings from the robot.
- Battery status.
- Left and right bumper readings
- Status of the various buttons on the Roomba.
- Cliff sensor readings
- Readings from the array of six IR sensors on the front of the Roomba.
- Data from the Roomba IR receivers, left right and omni directional.
- Wheel drop sensor readings.
Parameters
roomba/port (string, default: /dev/ttyUSB0)- The serial port where the Roomba can be found.
godock_server
godock_server is a wrapper node for the GoDockAction created for testing and debugging.godock_client
godock_client is a client implementation for the GoDockAction created for testing and debugging.
Custom Nodes
The iRobot Open Interface protocol for the 500 series Roomba is also available as a library on the roomba_500_series package. This can be used to make custom nodes with any desired combination of Roomba features. To start your own node check the Code API page.
Tutorials
Coming soon...
iRobot Open Interface Specification
The iRobot Open Interface Specification document used for developing this package can be found here.