2105109

Arduino-Roboter fährt allein

10.08.2015 | 08:30 Uhr |

Auf einem Arduino Mega basiert ein selbstfahrender Roboter, der mit einer intelligenten Logik ausgestattet ist und zuverlässig und in Echtzeit reagiert.

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.

Die erste Version mit IDE "Marie Mole"
Vergrößern Die erste Version mit IDE "Marie Mole"
© Swen Hopfe

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

Damals wurde eine rechtecktige Grundplatte gewählt
Vergrößern Damals wurde eine rechtecktige 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.

Weiche Antriebsräder garantierten schon damals den Vortrieb auf unterschiedlichen Fußböden
Vergrößern Weiche Antriebsräder garantierten schon damals den Vortrieb auf unterschiedlichen Fußböden
© 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.

Der Roboter basiert auf einem Arduino Mega
Vergrößern Der Roboter basiert auf einem Arduino Mega
© 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.

Wesentliche Bauteile des Robots
Vergrößern Wesentliche Bauteile des Robots
© 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

Der Antrieb erfolgt über zwei Getriebemotoren
Vergrößern Der Antrieb erfolgt über zwei Getriebemotoren
© 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.

Der Rundrahmen muss sehr genau sein
Vergrößern Der Rundrahmen muss sehr genau sein
© 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. 




0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2105109