Arduino Roboter

Unser Arduino-Robot als Selbstfahrer in der Wohnung also. Das Ganze basiert auf einem Arduino Mega. Als Sensoren gibt es derzeit zwei Ultraschall-Sender/Empfaenger, wobei der vordere über einen Servo um 140 Grad geschwenkt wird. Nebst vier Mikroschalter fuer den mechanischen Nahkontakt. Zur Hauptplatine wurde noch ein Motorshield verbaut, um die beiden Gleichstrom-Getriebemotoren anzusteuern. Die Energie kommt von 6 Mignon-Akkus.

Die Steuerung folgt derzeit wenigen Vorgaben. Programmiertes Ziel ist quasi das Abfahren einer Flaeche, welche dann „gereinigt wird“. Bei „Events“ wird in drei Zonen unterteilt. Wird ueber eine mittlere Distanz ueber einen US-Sensor ein Hindernis erkannt, so wird eine Kurskorrektur vorgenommen.

Geraet ein Hindernis in die Kurzdistanz, so wird die Fahrrichtung umgekehrt. Eckt der Robo direkt an, so wird je nach geschaltenem Kontaktsensor das Fahrzeug vom mechanischen Hindernis „weggedreht“.

Wesentliche Bauteile sind im Bild nebenan abgelichtet.

Neben der Reaktionsfaehigkeit der Kleinhirnlogik, liegt wohl die groesste Aufgabe in den naechsten Wochen darin, eine gewisse Strategie mitzugeben. Speicher ist noch genug vorhanden.

Mittels IR-Richtfeuer soll der Robo dann auch eine Ladestation wiederfinden und eine LED-Beleuchtung für die Fahrt nach vorne bekommen. Echte Lernfaehigkeit und Teamplay ueberlassen wir dann mal den Universitaeten…

Das Fahrgestell nutzt ein eigenes Konzept. So geschieht der Antrieb ueber zwei Getriebemotoren, welche 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 gleichmaessige oder unterschiedliche Drehen der beiden Motoren bestimmt. Dreht ein Motor entgegengesetzt, so kann der Robo auf der Stelle drehen. Steht einer der Motoren, so wird ein Kreis gefahren. Die Akkus sind uebrigens „eneloop“, so hat man wenig Entladung beim Nichtgebrauch.

Sie dienen auch dazu, den Schwerpunkt des Fahrgestell zu definieren, sind also logischerweise unten und mittig ueber den beiden Antriebsachsen angebracht.

Neben der Programmlogik und der Elektronik war dann auch einiges mehr noch zu konzeptionieren. So zum Beispiel der im Bild links zu sehende Rundrahmen (zur Schaltung der Kontaktsensoren), welcher recht genau sein musste… Gut fuer mich jedenfalls, dass damit Erfahrungen in der Arduino-Platform gesammelt werden konnten, zusaetzlich zu unserem doch schon recht umfangreichen Einsatz des Raspberry Pi.

OK, noch ein kleines Video von einer Fahrszene.

Der Arduino steuert dann auch zuverlaessig und in Echtzeit und kommt noch fuer Weiteres in der Zukunft in Frage. Denn schnell lassen sich mit den verschiedenen Varianten der Platform eigene Projekte aufbauen. Wie dies hier eben.

Und alles begann mit unserer ersten Version. Und deshalb an dieser Stelle auch ein kleiner Rückblick…

Damals wurde als IDE „Marie Mole“ genutzt, von welcher wir zu Gunsten der Arduino-IDE wieder abgekommen sind. Sprache war ebenfalls C++ und die Programmierung vergleichbar, ein paar Modifikationen sind dazu gekommen.
Der größte Unterschied zur aktuellen Version ergibt sich im Design. Damals hatten wir eine rechteckige Grundplatte gewählt.

Heutzutage ist unser Robo dann „kreisrund“, günstig bei der Auffahrung an diverse Hindernisse und beim Kontaktrahmen, der damals auf einer Korkplatte entworfen wurde und verlötet werden musste.

Weiche Antriebsraeder garantierten schon damals den Vortrieb auf verschiedenen Fussboeden.

Die Geschwindigkeit des Robots war damals viel geringer. Somit konnte zwar besser auf Hindernisse reagiert werden, aber letztlich brauchte es auch viel länger, diverse Strecken zurückzulegen. Der aktuelle Geschwindigkeitszuwachs kommt durch neue Motoren und einfach größere Räder.

Und es soll natuerlich noch weiter ausgebaut werden, damit der kleine Helfer wenigstens so tun kann, als wuerde er auch wirkliche Aufgaben uebernehmen. Ich wollte auch nicht gaenzlich auf bestehende Loesungen zurueckgreifen. Also ist alles selbst geschrieben und es wurde bewusst nicht die Roboter-Platine der Italiener verwandt. So bleibt bei der EEPROM-Kapazitaet auch noch ordentlich Spielraum nach oben. Und der Artikel auf den Hacks-Seiten der PC-Welt: http://www.pcwelt.de/ratgeber/Arduino-Roboter-faehrt-allein-Kleiner-intelligenter-Roboter-9774384.html

Swen Hopfe

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert