robotDein Eigener Menschlicher Roboter

Humanoide Roboter sind Roboter in Gestalt eines Menschen. Sie müssen beim Fortbewegen das
Gleichgewicht halten, können die Umgebung wahrnehmen und mit ihr interagieren. Der große
Vorteil von humanoiden Robotern gegenüber anderen Robotern besteht darin, dass sie aufgrund
ihrer Menschenähnlichkeit eine hohe Faszination ausüben und sehr flexibel einsetzbar sind.

Im Folgenden wird ein 2,5kg schwerer, 50 cm großer Roboter vorgestellt, der frei nachgebaut werden kann. Alle benötigten Einzelteile sind entweder online erhältlich oder können mit Hilfe der kostenlosen 3D- & Layout-Downloads individuell online bestellt werden. In Summe liegen die Kosten für die Einzelteile bei ca 450EUR. Der günstige Preis wird durch Einsatz von bereits vorhandenen und in Massenproduktion befindlichen Einzelteilen erreicht, die mit wenigen selbst entworfenen Komponenten und einer entsprechenden Software zu einem humanoiden Roboter
zusammengesetzt werden. Alle Details zu den benötigten Einzelteilen, sowie eine detaillierte Anleitung und ein Video des fertigen Roboters findet sich unter www.german-robot.com.

Der Bau des Roboters bietet die Möglichkeit die Faszination eines menschlichen Roboters selbst zu erleben. Ebenso können die Hardware und Mechanik einfach erweitert werden, eigene Software geschrieben oder Bewegungsabläufe erstellt werden.

Die aktuelle Software bietet neben der Möglichkeit Bewegungen einfach zu erstellen auch die Möglichkeit Sprache auszugeben und das Videobild des Roboters auf PC oder Handy zu übertragen. Erstellte Bewegungen inklusive Sprache oder Musik können über eine eigene HTML Seite abgerufen werden, so dass der Roboter per Browser steuerbar ist. Ebenso wird das Videobild bzw. der Ton über WLAN übertragen.

Roboter – Elektronik: 17 Servos am Raspberry Pi + Erweiterungsboard

artikel bild 2

Die Elektronik des Roboters basiert auf einem Raspberry Pi 2, der über eine Platine erweitert wird. Auf der Erweiterungsplatine sind Anschlüsse für 17 RC-Servos sowie für einen 6.6V LiFePo Akku, die Sprach-LED und das Beschleunigungsmodul untergebracht. Die Kamera wird direkt auf dem Raspberry Pi angeschlossen, das Mikrofon per USB-Soundkarte ebenfalls am Raspberry Pi eingesteckt. Die Bewegung wird von 17 RC-Servos ausgeführt, die über PWM von den Raspberry Pi I/O Ports aus angesprochen werden. Da die I/O Ports nativ kein PWM unterstützen, kommt eine SW-Erweiterung zum Einsatz, die es erlaubt die Ports wie PWM Ausgänge zu nutzen. Die erreichten Pegel von 3.3V auf der PWM Leitung waren dabei für alle getesteten RC-Servos ausreichend.
Da günstige RC-Servos keinen Überhitzschutz haben, kommen auf dem Board 2 rückstellende Sicherungen zum Einsatz, die bei zu hohem Stromverbrauch der Servos auslösen und nach wenigen Minuten abkühlung wieder funktionsfähig sind. Damit kann eine Beschädigung der Servos größtenteils verhindert werden.
Über einen USB-WLAN Stick verbindet sich der Roboter mit dem eigenen WLAN Netzwerk und kann dann über PC oder Handy gesteuert werden.
Es ist auch möglich, die Erweiterungsplatine sowie die Software für andere Projekte zu nutzen, bei denen RC-Servos angesteuert werden sollen.

Roboter – Mechanik

IMG_3023

Das Skelett des Roboters besteht aus 47 Aluminiumteilen, die über Schrauben und Muttern miteinander und mit den RC-Servos verbunden werden. Durch das Aluminium wird einerseits eine hohe Stabilität, andererseits ein geringes Gewicht erreicht. Um die Kosten gering zu halten, werden standard RC-Servos genutzt, die ihre Position nicht an den Raspberry zurückmelden können und daher keine externe Regelung erlauben. Die Qualität der Bewegung wird daher haupsächlich durch die RC-Servo Eigenschaften “Spiel im Nullpunkt” und “Nachgeben unter Belastung” bestimmt. Beim Einprogrammieren von Bewegungen wird das “Nachgeben unter Belastung” berücksichtigt.
Die RC-Servos können bei ruckartigen Bewegungen unter hoher Last die gewünschte Position nicht halten. Um einen möglichst großen Einsatzbereich zu ermöglichen bietet die SW daher die Möglichkeit Start und Ende der Bewegung beschleunigt auszuführen, so dass ein ruckartiges starten/stoppen vermieden wird.
Für eine bessere Optik wird das Skelett mit Plastikteilen aus dem 3D-Drucker verkleidet. Diese geben dem Rumpf darüber hinaus zusätzliche Stabilität und dienen als Befestigungspunkt für die Elektronik. Die 2-Farbigkeit wird dabei über Streifen eines zweiten, andersfarbigen Filamentes erreicht. Nach dem Erhitzen mit einem Fön kann dieses Filament in die nötige Form gebogen und in die Teile aus dem 3D-Drucker eingeklebt werden.

Roboter – Software

bild2

Die Module im Roboter basieren auf einem auf Raspbian installierten ROS (Robot Operating System). Alle Module sind mit einer Frequenz von 15Hz getaktet, sie prüfen also 15 mal pro Sekunde ob neue Bedingungen vorliegen und reagieren darauf. Sowohl die Taktung als auch die Kommunikation der Module untereinander wird über die von ROS zur Verfügung gestellten Schnittstellen durchgeführt. Folgende Funktioen und Module wurden erstellt:

Servo Driver: Eingang: Name einer auszuführenden Bewegung. Ausgang: Einlesen der Datei mit den Bewegungsdaten und Durchführung der bewegung, passendes Antriggern des TTS (Text to Speach) Moduls zur Sprachausgabe, Ansteuerung der Mund-LED. Für die PWM-Generierung wird auf die Open Source SW “ServoBlaster” zurückgegriffen.
TCP/IP: Das Modul wird über TCP/IP mit dem PC verbunden. Es empfängt verschiedene Arten von Nachrichten und sendet diese an die entsprechenden Module weiter (e.g. den Namen einer Bewegung wird an Servo Driver weitergeleitet)
Acceleration: Liest die Beschleunigungsdaten aus den Sensoren aus und stellt diese unter ROS zur verfügung. Wird aktuell von mir nicht weiter genutzt, das Gehen funktioniert auch ohne das Auslesen der Sensoren, basierend auf “Keyframes”, die nacheinander aufgerufen werden.
TTS: Verwandelt den empfantentn Text in gesprochene Sprache, greift auf die Open Source SW Svox-Pico zurück.
mp3: Spielt eine *.mp3 Datei ab.
MJPG-Streamer: Stellt das Videobild im Browser zur Verfügung. Bietet ausserdem eine CGI-Schnittstelle und wandelt die von einer Webseite einkommenden Kommandos in ROS Nachrichten um, die von den anderen Modulen weiterverarbeitet werden.
Microphone: Sendet den Audio Stream an den Browser (nicht in ROS eingebunden)

Kalibrierung & Bewegungen erstellen

robot sw

Um ein einfaches Kalibrieren des Roboters sowie schnelles Programmieren von Bewegungen zu erlauben, wurde eine SW für den PC erstellt. Als Programmiersprache wurde hierfür Livecode gewählt, weil es einerseits Plattformunabhängig ist und andererseits Möglichkeiten zur einfachen GUI (Graphical User Interface) Erstellung bietet.

Im Bild sind neben den benötigten Knöpfen zur Erstellung und Speicherung der Bewegung insbesondere die 17 Schieberegler zu sehen, mit denen die Servos einzeln in die gewünschte Position gebracht werden können. Die 17 Servos verteilen sich wie folgt auf den Roboter: 5 je Bein, 3 je Arm und 1 im Kopf. Indem nun verschiedene Positionen (Winkel für jeden Servo) sowie die Zeit für den Übergang von einer Position in die Nächste eingegeben werden, entstehen Bewegungen, die abgespeichert und wieder abgerufen werden können. Hiermit sind auch Bewegungen wie Gehen möglich, allerdings müssen sie meist individuell auf den Roboter angepasst werden, da sich 2 Aufbauten eines Roboters und der Kalibrierung leicht unterscheiden können. Ausserdem bietet sich die Möglichkeit für jede Position einen Text einzugeben, der dann über TTS vom Roboter gesprochen wird.