Swen Hopfe hat sich nach einem Universitätsstudium mit den Schwerpunkten Informationstechnik, Datenkommunikation und Bildverarbeitung hat er sich als Diplomingenieur mehrere Jahre mit Projektarbeit beschäftigt und ist heute Business Development Manager bei Comcard.
Hier beschreibt er einen selbstfahrenden Roboter für die Wohnung.
Wie es anfing
Für unsere erste Version haben wir als IDE “Marie Mole” genutzt, von der wir zugunsten der Arduino-IDE wieder abgekommen sind. Sprache war ebenfalls C++ und die Programmierung vergleichbar, ein paar Modifikationen sind inzwischen dazugekommen.

©Swen Hopfe
Der größte Unterschied zur aktuellen Version ergibt sich im Design. Damals hatten wir eine rechteckige Grundplatte gewählt.

©Swen Hopfe
Heute ist unser Robo kreisrund – günstig beim Anfahren an diverse Hindernisse und beim Kontaktrahmen, der damals auf einer Korkplatte entworfen wurde und verlötet werden musste.
Weiche Antriebsräder garantierten schon damals den Vortrieb auf unterschiedlichen Fußbodenmaterialien.

©Swen Hopfe
Die Geschwindigkeit des Robos war damals viel geringer. So konnte er zwar besser auf Hindernisse reagieren, aber letztlich brauchte er auch viel länger, diverse Strecken zurückzulegen. Der aktuelle Geschwindigkeitszuwachs kommt durch neue Motoren und einfach größere Räder.
Das neue Modell
Unser jetziger Selbstfahrer-Roboter basiert auf einem Arduino Mega. Damit er möglichst immer unterwegs sein kann, ohne sich irgendwo zu verkeilen und dann auszupowern, wurde auf die Mechanik, programmierte Logik und Sensoren besonderer Wert gelegt.

©Swen Hopfe
Sensoren sind derzeit zwei Ultraschall-Sender/Empfänger, wobei der vordere über einen Servo um 140 Grad geschwenkt wird, um seitliche Hindernisse in Fahrtrichtung besser erkennen zu können. Der Robo ist jetzt rund mit einem stabilen Aluring. Im Inneren des Rings befinden sich vier Mikroschalter für den mechanischen Nahkontakt, sprich: wenn der Robo an ein Hindernis direkt anfährt. Zur Hauptplatine wurde noch ein Motorshield verbaut, um die beiden Gleichstrom-Getriebemotoren anzusteuern. Die Energie kommt von 6 Mignon-Akkus.

©Swen Hopfe
Die Steuerung folgt derzeit wenigen Vorgaben. Programmiertes Ziel ist quasi das Abfahren einer Fläche, die beispielweise mit so einem Roboter gereinigt werden könnte. Allerdings haben wir den Robo bisher nicht mit einer Reinigungsfunktion ausgestattet. Dazu müsste man ihn vor allem mit einer Staubaufnahme versehen, damit das Ganze auch Sinn macht – sonst bekommt man einen Zimmerfußboden wohl immer noch in Handarbeit wesentlich sauberer ;-).
Ausgestattet ist der Robo mit einer intelligenten Logik, die erkennt, von welcher Seite ein Hindernis auftaucht (es erfolgt eine Kurskorrektur), ob ein Hindernis plötzlich in den Sicherheitsabstand geraten ist (die Fahrtrichtung wird umgekehrt) oder ob es weiter weg ist, so dass er es weiträumig umfahren kann. Eckt der Robo direkt an, so wird je nach geschaltetem Kontaktsensor das Fahrzeug vom mechanischen Hindernis weggedreht.
Das

©Swen Hopfe
Fahrgestell nutzt ein eigenes Konzept. So geschieht der Antrieb über zwei Getriebemotoren, die seitlich links und rechts angebracht sind. Vorn und hinten befinden sich je eine 360 Grad schwenkbare und kugelgelagerte Rolle. Diese richten sich je nach Fahrtrichtung aus. Die Fahrtrichtung wird durch das gleichmäßige oder unterschiedliche Drehen der beiden Motoren bestimmt. Dreht ein Motor entgegengesetzt, so kann der Robo auf der Stelle drehen. Steht einer der Motoren, fährt er im Kreis. Über eine Stromflussmessung wird auch erkannt, ob der Robo eventuell erfolglos gegen ein Hindernis anrennt, wenn alle anderen Steuerungsmöglichkeiten versagt haben. Die Akkus sind “eneloop”, so hat man wenig Entladung beim Nichtgebrauch. Sie dienen auch dazu, den Schwerpunkt des Fahrgestell zu definieren, sind also logischerweise unten und mittig über den beiden Antriebsachsen angebracht.
Neben der Programmlogik und der Elektronik war dann auch einiges mehr noch zu konzeptionieren. So zum Beispiel der im Bild zu sehende Rundrahmen (zur Schaltung der Kontaktsensoren), der recht genau sein musste.

©Swen Hopfe
Und hier noch ein kleines Video mit einer Fahrszene:
Der Arduino steuert bereits zuverlässig und in Echtzeit.
Neben der Reaktionsfähigkeit der Kleinhirnlogik liegt wohl die größte Aufgabe für uns nun darin, dem Robo eine gewisse Strategie mitzugeben, damit der kleine Helfer wenigstens so tun kann, als würde er auch wirkliche Aufgaben übernehmen.
Ich wollte nicht gänzlich auf bestehende Lösungen zurückgreifen, und so ist alles selbst geschrieben und ich habe bewusst nicht die Roboter-Platine der Italiener verwendet. Damit bleibt bei der EEPROM-Kapazität auch noch ordentlich Spielraum nach oben.
Idee für einen künftigen Einsatz ist beispielsweise, einen Raum aus der Ferne zu überwachen, indem man den Robo mit einer Kamera versieht und deren Bilder per Wi-Fi ins Netzwerk überträgt. Lösungen ähnlich einem Spielzeugauto mit Kamera gibt es zwar schon zu kaufen, aber unser Robo kann sich autark bewegen – darin liegt seine Stärke. Man muss ihn nicht dauernd von Ferne steuern, sondern hat mit ihm schon jetzt einen halbwegs intelligenten “Wachmann”, der selbsttätig das Gelände abfährt. Möchte man dann doch eine bestimmte Ecke des Raums sofort betrachten, ginge schließlich auch ein Eingriff in das autonome Fahrprogramm von einem entfernten Rechner aus. Eine andere Erweiterungsidee ist das selbstständige Anfahren an eine Ladestation (über IR-Richtfeuer), um die Fahrzeit ohne manuelles Aufladen zu verlängern. Die Akkus herausnehmen und in Ladegerät einlegen könnte man sich damit dann ersparen. Und eine LED-Beleuchtung für die Fahrt nach vorn ist ebenfalls angedacht.