Software

CN810 2010 edition code and report available here

The iRobot Create is a reprogrammable version of the Roomba robot vacuum cleaner for robotics hobbyists, educators and researchers. This page contains software utilities to help you interface with iRobot Create. The goal is to provide a set of basic tools and example on how to get data from, process, and send data back to the robot. There are of course multiple ways in which this can be done, and a list of software is available below. The following examples can be used to get starter with the robot right away: it is up to you to modify and customize the code to suit your needs.
The three examples below represents three of the many options available to interact with the Robot. 
 
 
 
 
 

Option A: Perform all computation on a netbook

This option is the simplest to implement, but at the cost of computational resources. Using this option there is no need for communication over the network as all computation is done locally. Any language may be used, but high level languages such as MATLAB may run into problems due to the limited computationa
l power of the netbook.

 

 

Option B:Perform all computation on a networked computing cluster

 

This option uses the netbook solely as a means of transferring data between the mobile iRobot and a stationary computer. Using wireless communication, sensory information is transmitted to the computing cluster where data is analyzed to produce motor commands, which are then received by the netbook. As of 7/7/10, users will have to write their own wireless interface to communicate between the two computers. UPDATE: As of 8/19/10, a wireless interface has been created for a proof of concept using Open Frameworks (see below.) Please see the Proof of Concept document attached to this page.

 
 
 
 
 
 

Option C: Hybrid of options A and B


This option consists of performing pre-processing on the netbook before sending data to the computing cluster. The level of complexity on each end is up to the user.

 

 


 


List of software to interface with iRobot Create

 
Platform Independent:

 

Open Interface Specification (iRobot Create). This document contains the specifications for the Create Open Interface, which is used to control the iRobot Create by sending 8-bit opcodes over a serial connection. All options for controlling the iRobot Create will use the OI in some way, so this is highly recommended reading. Similar documents for the Roomba are available via iRobot's website.
 
 
PuTTY. A free communications terminal program. It may be useful to debug your robot by opening a serial connection using this program. We had issues interfacing the serial-to-usb converter with this program, however.
 
Implementation-Specific:
 
 
MATLAB:
 
- Matlab Toolbox for the iRobot Create (MTIC). Users can use their PC to control an iRobot Create robot by sending numerical sentences over a serial connection. Two obstacles to use, especially for educational purposes, are:  (1) the cryptic nature of the command interface; and (2) the difficulty in establishing a software serial port connection to the robot. This Matlab toolbox seeks to overcome these difficulties. Many of the commands are also compatible with the iRobot Roomba. Check out the hello world in MATLAB, and Aaron's code that runs a simple saliency map example that moves the robot towards a salient visual spot. Download the documentation
 
-TCP/IP script for MATLAB. This m file provides java functions (usable in MATLAB) to perform TCP/IP networking. Other MATLAB networking implementations are available on the internet as well.
 
Java:
 
Distributed Control Framework for iRobot (IAI). This software provides a simulation environment for the iRobot Create. Although its focus is on simulation, it does appear to support the use of an actual robot as well.
 
Java Communications API. This .jar file will allow you to communicate over a serial port using Java. The process for adding the .jar to your project will differ by IDE, but in general it can be accomplished through editing the project structure. Please note that there is no Windows support for the Java communications API; you will have to use Linux. A Windows alternative is RxTx, available here.
 
Custom Networking Java Tutorial. This tutorial explains the basics of networking with Java.
 
 
C/C++:
 
Open Frameworks. (Recommended) Open Frameworks is a C++ wrapper that allows for fast, easy programming of real-time applications, and includes libraries for video capture, network and serial communication (and much more). This is what we used to create the proof-of-concept robot guidance system for the class. Be sure to download the FAT version from the website so you have access to the networking libraries.
 
COIL. The Create Open Interface Library is a C library that allows you to program for the iRobot using C functions rather than opcodes. It also eliminates the need for writing your own serial interface code. Please note that COIL is not supported for Windows; you will need to run in Linux to use it.
 
C++ Serial Library. If you decide not to use COIL, this website allows you to download a serial communication library for use with the C++ programming language. You will need to create an account in order to download the code; it is free.
 
Beej's Guide to Network Programming. We're working on a program that will do the network communication so you don't have to, but if you want to make your own networking program, this is a good place to start.
 
Python
 
Python Robotics - PyRo is a robotics control library that allows simple interfacing between a controller such as a neural network and a robotics platform such as the Roomba. Please note that the iRobot Create is currently not supported.

PyBrain - Yet another Python library geared towards robotics.
PyBrain is short for Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library

iRobot Create at Brown
Check this page from Brown University.

iRobot Create®
Programmable Robot
Create is an affordable mobile robot platform for educators, students and developers - use it to experiment, learn and play! Here's just the beginning of the fun you can have with Create...
Learn the fundamentals of robotics, computer science and engineering
Program behaviors, sounds and movements
Attach sensors, electronics, cameras, grippers and more
Create is preassembled and ready to use right out of the box. Beginners can observe the robot's behavior in any of the 10 demonstration modes or program the robot by downloading scripts with any basic terminal program. Advanced users can write custom software using a variety of methods that take advantage of the robot's "streaming sensor data" mode for more control of the robot. And highly advanced users can write programs for completely autonomous behavior.
More info available here, and in the Open Interface
Some interesting expansion to the Create are available here and here
ċ
camera_acquisition.m
(0k)
Aaron Berliner,
Sep 8, 2010, 10:48 AM
ċ
cn810-2010_code_and_report.zip
(1043k)
Massimiliano Versace,
Jan 28, 2014, 3:41 PM
ċ
code.zip
(37k)
Massimiliano Versace,
Jan 28, 2014, 3:39 PM
ċ
hello_world_iRobot_Create.m
(1k)
Massimiliano Versace,
Sep 8, 2010, 12:33 PM
ċ
roomba_vector.m
(1k)
Aaron Berliner,
Sep 8, 2010, 1:05 PM
ċ
saliency_for_demo_robot.m
(2k)
Aaron Berliner,
Sep 8, 2010, 10:48 AM
Comments