Roomba


Programmieren ist oft etwas ziemlich Abstraktes und wenig Anschauliches. Will man jemandem den Sinn und Zweck von Programmcode erklären, eignen sich sehr einfache Programme, wie die zur Richtungssteuerung eines Roboters sehr gut, weil man da sehen kann, was man programmiert hat.

Wie so etwas dann aussieht, zeigt das kleine Video:
Youtube
/!\ Du verlässt Surasto und öffnest Youtube. Youtube sammelt Daten seiner Nutzer und speichert sie außerhalb der EU


Firma iRobot hat es den Hackern extrem leicht gemacht, ihren Staubsaugerroboter Roomba anders als nur zum Saugen zu verwenden. Der Roomba bietet unter einer kleinen Klappe eine serielle Schnittstelle, über die man ihn von außen kontrollieren kann. Alle erlaubten Codes sind dokumentiert - Hackerherz was willst du mehr?
Das Buch "Hacking Roomba von Tod Kurt und die zugehörige Webseite http://hackingroomba.com/ lassen keine Fragen offen.

Das Ziel meines Projektes war, absoluten Beginnern die Programmierung des Roboters über eine API - ähnlich der Kinderprogrammiersprache LOGO -  einfach zu ermöglichen. Nur wird hier nicht wie bei LOGO eine virtuelle Schildkröte herumgejagt, sondern ein echter Roboter - der allerdings aussieht wie eine Schildkröte  :)    

Damit der Bursche nicht am Kabel herumfahren muss, wurde ihm ein Arduino-Board Huckepack geschnallt, dass vom PC aus programmiert wird und den Roomba dann autark steuert.
Bild "Hacks:Roomba-Titel.jpg"

Die Verbindung zum Roomba erfolgt über ein Mini-DIN Kabel. Am einfachsten schlachtet man eine alte Tastatur und verwendet deren Stecker. Hierzu bricht man den zentralen Plastikpin im Stecker ab, damit er in die SCI Buchse vom Roomba passt. Man braucht nur 5 der Kontakte:
GND
UBatt - Batteriespannung vom Roomba zur Versorgung des Arduino-Boards. Hierzu muss man aus den 16V mittels Festspannungsreglers 8V erzeugen.
RX Serielle Empfangsseite
TX Serielle Sendeseite
DD Hiermit kann man den Roboter aufwecken bzw. in Ruhezustand bringen

Bild "Hacks:Roomba-Arduino.jpg"

Programmiert wird dann per Arduino IDE, die man sich bei http://www.arduino.cc herunterladen kann.
Bild "Hacks:Roomba-IDE.JPG"

Hier die simple Programmstruktur
Bild "Hacks:Roomba-Structure.JPG"

Das API zur simplen Bewegungssteuerung. Da auch Grundschüler damit zurechtkommen sollen, gibt's die Befehle auf Deutsch
Bild "Hacks:Roomba-API1.JPG"

Der Roomba kann auch Musik machen - zumindest, wenn man den Begriff "Musik" etwas tolerant auslegt.  :D
Hierzu habe ich eine ganz simple API geschrieben, die es erlaubt, Note für Note im Programmcode aufzulisten.
Bild "Hacks:Roomba-API2.JPG"

Damit man auch auf Ereignisse reagieren kann gibt es noch einige Befehle für etwas fortgeschrittene, mit denen man die Bumper abfragen kann und so bei Wandkontakt z.B. eine Drehung programmiert.
Bild "Hacks:Roomba-API3.JPG"

Hier die Library und Beispiele zum Selbermachen

Nach der Installation der Arduino-IDE entpackt man die diese Datei in das Sketchbook-Verzeichnis:
ArduinoRoombaRalf.zip

Zum Nachschlagen...

Eine noch detailliertere Beschreibung des Projektes findet sich in der Zeitschrift c't Hacks des Heise-Verlags.
Bild "Hacks:Roomba-ct-Hacks.png"
Link zur Zeitschrift

Was man noch erweitern könnte...

Natürlich ist das alles ziemlich einfach - da ich die Sources zur Verfügung stelle, kann man von hieraus die Library weiter entwickeln.
Was noch fehlt:

Roomba als Moonrover

Bei unserer Makernight im Hackerspace C-Hack ging es darum, den Roomba zum Moonrover zu machen. es musste zu einem Vulkan navigiert werden um dort per Webcam eine versteckte Botschaft zu lesen, die unser verschollener Astronaut dort ausgelegt hat. Wie sich herausstellte, verwendete der Astronaut dabei binäre Codierung die die Buchstaben anhand ihrer Position im Alphabet codiert hat.
Die Kids haben das ziemlich schnell herausgefunden:

Der Vulkan:
Bild "Hacks:Roomba-Vulkan.jpg"

Die Codes, die unser verschollener Raumfahrer wie im Flim "Der Marsianer" mit Steinen legt:
Bild "Hacks:Roomba-Code.jpg"

Das Bild im Kontrollzentrum mit dem dazugehörigen Code zur Steuerung des Roombas:
Bild "Hacks:Roomba-Webcam.jpg"

Die Auswertung:
Bild "Hacks:Roomba-Missionen.jpg"