Skip to content
A ZCM driver for the iRobot Create 2 programmable robot based on the libcreate C++ library from AutonomyLab.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


ZCM driver for iRobot Create 1 and 2 based on the ROS driver from AutonomyLab. This package wraps the C++ library libcreate, which uses iRobot's Open Interface Specification. This software is constructed according to the Pods software policies and templates (with the notable exception of lcmtypes.cmake; this is replaced by a corresponding zcmtypes.cmake which is identical to the former except for replacing all instances of lcm with zcm).

The programs were mainly designed as an alternative to the ROS driver for the RaspberryPi. Installing ROS on the Pi can be difficult and time consuming but the dependencies required for this repo are lightweight. However, these have been tested on a generic laptop connected to the robot, as well.

Besides the following documentation, please refer to the Wiki for supported robots, features, the main driver documentation, and other useful information.

Author: Sudhanva Sreesha (University of Michigan)



Local: make. The project will be installed to build/.

System-wide: make BUILD_PREFIX=/usr/local as root.


The binaries will be compiled to build/bin/. Here's an overview of the binaries:

  • ./craebot-joystick: A node that publishes data from a generic Linux joystick to the CRAEBOT_JOYSTICK channel. Should typically be run on a base computer.
  • ./craebot-teleop: A node that publishes teleop (linear and angular velocities) messages (to the CRAEBOT_TELEOP channel) by subscribing to the joystick channel. Should typically be run on a base computer.
  • ./craebot-driver: The main driver that runs on the CPU connected to the robot. This mainly listens to the teleop, and other command messages, and controls the robot. It also publishes the various sensors' data at a certain frequency.

Each of the programs provide help text with a detailed description of the various command line arguments.

Docker Support

Docker's a great way to run the aforementioned binaries in isolated environments. Please refer to the wiki for more information on how to use Docker to develop, build, and run the codebase.

You can’t perform that action at this time.