Evaluation: iRobot Roomba 560 as platform for DES-Nodes
This evaluation considers the iRobot Roomba 560 vacuum cleaner as platform for DES-Nodes.
Roomba Hardware
The Roomba is a inexpensive (~ 350 €) autonomous robot for cleaning floors. It is provided with a charging station and batteries. The robot has two powered wheels and a third unpowered wheel. Obstacles like walls, legs of chairs or cliffs like stairs can be detected by three kinds of sensors. A light sensor is used to find the charging station; "virtual walls" or "light houses" control the traversing of rooms.
Roomba Software
The robot got a built-in default behaviour, but can alternatively be controlled and monitored by a Serial Command Interface (SCI). This interface is officially documented by the manufacturer. The sensors to find the charging station or "light houses" are not accessible via the SCI.
The standard behaviour seems to use a trial-and-error strategy. The robot drives straight-on till it hits an obstacle, then turns some degrees and continues driving. Bigger obstacles can be avoided. When the robot encompasses a bigger space it starts to drive in spiral circles till it finds an obstacle. There is also a wall-following-mode.
Both behaviours are not useful for a mobile DES-node.
Experiment: Serial Control
To control the Roomba via the SCI the top cover around the control buttons has to be removed. There is a 7-pin mini-din connector below the cover. A USB-to-serial adapter cable is connected via a potential divider (due to the adapter cable having 3V, but the Roomba interface having 5V) to a mini-din connector. This configuration works well, but one might want to use a dedicated level converter.
After connecting the serial interface to a PC via this cable, the Roomba can be controlled by software
Available software
Roombacomm is a Java library to control the Roomba via SCI. It is supplied with some examples written for Processing. One of these is Roombaview - a software to control Roomba and show the state of the sensors.
(http://hackingroomba.com/code/roombacomm/)
Experiment: Movement
Due to the simple structure of the SCI command interface the commands can be easily send without any library. The movements drive and turn were implemented as Python scripts. The driving distance or turning angle is periodically (every 100ms) read from the Roomba via SCI and accumulated. The movement is finished when the desired distance or angle is reached. The odometrical values of the Roomba are reset when the distance or angle values are read - so the accumulated values depend on the scan rate.
These scripts were used to determine the relation between internal distance and angle units and real values.
One distance unit equates to 8,5 mm.
One angle unit equates to 3,3 degrees.
To measure the precession of the distance and angle values three movement patters were evaluated:
- turning a full circle
- driving 1000 units straight
- driving a square shape with 30 units long edges
During the full circle movement there was a deviation between 2 and 13 degrees.
When driving straight there was a deviation of 8 cm (~ 1%).
During the square movement the deviation was 5 cm distance to the starting spot.
Documents
| Attachment | Size |
|---|---|
| docs_roombasci.pdf | 262.84 KB |
- 339 reads
- Printer-friendly version