Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektews2013:moperro:projektdokumentation

Bau eines mobilen, personengesteuerten Roboter

Projektziel MOPERO

R2-D2, WALL-E oder Tranformers – Roboter sind aus der Filmgeschichte nicht mehr weg zu denken. Aber auch in der Realität sind die oft erschreckend intelligenten Maschinen für uns Menschen unentbehrlich geworden.
Der Begriff „Roboter“ entspringt dem slawischen Wort „robota“, welches sich mit „Arbeit“ übersetzen lässt. Somit ist ihnen ihr Aufgabe quasi in die Wiege gelegt: Ob als Industrieroboter in der Automobilfertigung, Forschungsroboter auf anderen Planeten oder Assistenzroboter in der Medizin - sie erleichtern Abläufe und verrichten Arbeit.
Und Arbeit, das war es auch was uns im Projektlabor Robotik MINTgrün der Technischen Universität Berlin erwartete.
Ziel unseres Projektes war, einen mobilen, personengesteuerten Roboter (MOPERO) zu bauen. Seine Aufgabe bestand darin, einer Person beständig zu folgen, bis diese dem Roboter ein „High Five“ gibt. Daraufhin soll MOPERO ein Kompliment zurückgeben.

Projektverlauf

Der Projektverlauf lässt sich in einige Teilschritte untergliedern, welche für die Verwirklichung unseres Roboters benötigt waren.
Zunächst wurde die Hardware des Roboters konstruiert, bei der wir uns für einen fahrbaren Untersatz auf dem ein Laptop angebracht ist, entschieden. Auf dieser Plattform wurden die Utensilien zur Erkennung einer Person, wofür eine Kinect-Kamera benutzt wurde, angebracht, was im Anschluss die Steuerung der Räder ermöglichte.
Nachdem MOPERO nun selbstständig einer Person folgte, war es an der Zeit, die Interaktion des Roboters mit dem Menschen zu programmieren. Dazu wurde eine „Hand“ benötigt, die durch einen Lichtsensor ein „High Five“ des Menschen erkennt, was die Reaktion des Roboters, ein Kompliment zu geben, auslöst.

Teilschritte des Baus

Konstruktion der Hardware

Zu Beginn des Roboterbaus standen wir vor der wahrscheinlich einfachsten Aufgabe des Projekts, der Hardware.
Wir entschieden uns, den MOPERO als einen Roboter, der sich mithilfe von Rädern fortbewegt, zu konstruieren. Glücklicherweise war ein bereits fertig gebauter, unbenutzter fahrbarer Untersatz im Projektlabor vorhanden, welchen wir verwendeten und so kostbare Zeit sparen konnten. Dieser bestand aus einem Metallgestell und vier Rädern, welches wir aber durch zwei weitere Räder stabilisierten. Dieses Fahrgestell wurde durch zwei „Wild Thumper“ Motoren, die durch eine H-Bridge gesteuert wurden, angetrieben. Den hierzu benötigten Strom erhielten sie aus einem angeschlossenen Lithium-Ionen-Akku. Anschließend musste die Oberfläche des Gestells mit Isolierband abgeklebt werden, um die elektronischen Geräte ohne Kurzschlüsse befestigen zu können.
So war unsere Hardware bereit zur Benutzung, doch im Laufe des Projekts traten mehrere Probleme damit auf, womit wir die anfangs eingesparte Zeit wieder verbrauchten. Die Motoren überhitzten nach kürzester Zeit und verringerten deshalb oft selbst die Drehgeschwindigkeit der Räder. Des Weiteren drehten sich die Räder des Roboters zwar, doch erst nachdem man sie anfangs einmal von Hand selbst drehte. Diese Komplikation versuchten wir durch Akkus mit unterschiedlichen Leistungen und unterschiedliche Geschwindigkeiten zu lösen, doch beide Wege führten nicht zur Lösung des Problems.
Deshalb entschieden wir uns, die H-Bridge, mit der die Motoren gesteuert wurden, durch eine „Pololu Trex DMC“ Steuerung zu ersetzen. Mit diesem neuen Bauteil funktionierte die Steuerung auf Anhieb.

Erkennung einer Person

Um die selbstständige Fortbewegung des MOPERO zu ermöglichen, muss er zunächst eine Person erkennen. Diese Herausforderung wurde mit Hilfe einer Kinect-Kamera, welche normalerweise Bestandteil der Spielekonsole Xbox 360 ist, gelöst. Diese Kamera erfasst ein 3D Bild der Umgebung, erkennt die Gelenke verschiedener Personen und kann diese unterscheiden. Diese Informationen verarbeitet die Kinect durch ein Koordinatensystem, wobei die X- Achse quer durch, die Y-Achse senkrecht und die Z-Achse gerade vor der Kinect verläuft. Der Ursprung liegt dabei mittig auf der Kinect, wie auf der Darstellung links erkennbar ist.
Da MOPERO klare Angaben zur Position des Menschen dem er folgen soll benötigt, machten wir uns dieses Koordinatensystem zu nutze. Mit Hilfe der Entwicklungsumgebung Processing, die auf einer vereinfachten Version der Programmiersprache Java basiert, schrieben wir ein Programm, welches laufend die Koordinaten des Massenschwerpunkts (center of mass) eines Menschen ausgibt.
Da die X-Koordinate dabei bestimmt, in welcher Richtung sich die Person vor dem Roboter befindet und somit vorgibt, wohin sich der Roboter bewegen soll, wird diese Koordinate zur Steuerung des MOPERO benötigt und muss an das zugehörige Programm übermittelt werden.

Steuerung des Roboter

Die oben genannte X-Koordinate der zu folgenden Person wird im Anschluss an den Mikrocontroller „Arduino Mega 2560“ übermittelt, welcher die Fortbewegung des Roboters steuert.
Bekannt ist, dass der Ursprung des Koordinatensystems, aus dem die Koordinate stammt, mittig auf der Kinect liegt. Diese Koordinate kann Werte zwischen -1200 und +1200 annehmen, wobei die negativen Werte links und die positiven Werte rechts davon liegen. Somit weiß man nun, in welche Richtung sich MOPERO drehen muss.
Liegt die übermittelte X-Koordinate im positiven Bereich, muss sich der Roboter demnach rechts drehen, bis sie einen Wert annimmt, der zwischen 100 und -100 liegt, also in einem Bereich, der gerade vor dem Roboter liegt. Anschließend fährt MOPERO geradeaus auf die Person zu.
Aber warum zwischen 100 und -100 und nicht einfach gleich 0? Da die Kinect ständig neue Werte der X-Koordinate misst, die auch bei Stillstand der Person in diesem Bereich schwanken, wird dieser Schwellenwert benötigt. Fuhre MOPERO nur geradeaus, wenn die X-Koordinate gleich 0 wäre, würde er sich ständig neu ausrichten.
Das Drehen des Roboters wird durch Drosselung der Geschwindigkeit der Räder auf der Seite, in die er sich drehen soll, bewerkstelligt.

Verbindung von Arduino und Processing

Um die von der Kinect-Kamera gemessene X-Koordinate, die in einem Processing Programm ausgegeben wird an die Steuerung des Roboters durch Arduino zu übermitteln, muss eine Verbindung zwischen den beiden Programmen hergestellt werden.
Anfänglich versuchten wir dies durch die Funktion „parseInt ()“, was aber unpassend für unser Projekt war, da es nur zur Übermittlung eines einzelnen Wertes dient. Deshalb entschieden wir uns für eine flexiblere Variante mit der Library ArduPar, welche mehrere Werte übertragen kann. Zur Übermittlung wird ein „Sender“, einem „Empfänger“ und die serielle Schnittstelle des Computers benötigt. In unserem Fall sendet das Processing Programm laufend die Werte der X-Koordinate der Person an die serielle Schnittstelle. Anschließend wird diese von dem Arduino Programm ausgelesen und die empfangene X-Koordinate verwertet.
Diese Verbindung der zwei Programme war mit Abstand der schwierigste Teil des Projekts, da es die meiste Zeit, Aufwand und Nerven kostete.

projektews2013/moperro/projektdokumentation.txt · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)