Der Bereich Robotik ist ein sehr beliebtes Thema, wenn es um den Raspberry Pi geht. Neben normalen Roboterautos können u.a. auch Greifarme gesteuert werden, wobei es verschiedene Modelle gibt. In dieser Bauanleitung mit Tutorial geht es um den Zusammenbau und Testen eines Raspberry Pi 6 DOF Robot Arm, welcher einen Griff hat, womit z.B. Gegenstände gehalten oder aufgegriffen werden können.
Das „DOF“ steht für „degrees of freedom“ bzw. zu deutsch für „Freiheitsgrad„. Damit wird angegeben, wie viele individuell bewegbare Achsen es gibt. So gibt es auch bspw. 2DOF, 4DOF oder 5DOF Bausätze. Da der Preisunterschied aber nur gering ist, habe ich mich für die 6 DOF Variante entschieden. Zusätzlich ist diese auch am weitesten verbereitet, was den Softwaresupport angeht.
Zubehör
Bei den Bausätzen gibt es einige Unterschiede. Dabei sind nicht immer die Servomotoren mit dabei und auch in der unteren Platform gibt es kleinere Unterschiede. Die wichtigen Metallteile sind hingegen bei allen „6 DOF Robot Arm“ Bausätzen gleich.
Bei meinem Bausatz waren die Motoren nicht inklusive, weshalb ich folgendes genutzt habe:
- 6DOF Roboter Arm Bausatz
- 6x MG996R Servomotoren (ggf. zusätzliche als Ersatz)
- PCA9685 Treiber Board
- 5V Netzteil bzw. Schaltnetzteil (10A)
- ggf. Power Jack Adapter bei normalen (Universal-)Netzteil
- Jumper Kabel (ebay)
Zusammenbau des 6 DOF Roboter Arm für den Raspberry Pi
Das Set kommt mit einigen Metallteilen und sehr vielen Schrauben, welche hauptsächlich zwei Aufgaben haben:
- Dünne Schrauben (kurz & lang): Verbinden der Teile
- Dicke Schrauben: Servos an den Metallteilen befestigen
Bevor wir mit dem Aufbau starten, sollten die Servos in Position gebracht werden, damit sie später optimal gesteuert werden können. Dazu solltest du zunächst das Tutorial für den PCA9685 durchgehen. Darin wird die benötigte Bibliothek installiert und gezeigt, wie man die Servo-Positionen setzen kann.
Die Initialwerte der Servos (bei 60Hz) sollten auf diese Werte gesetzt werden:
- Greiffinger: 555
- restliche 5 Motoren: 475
Bei mir haben die Schrauben nicht durch die runden Plastikaufsätze gepasst, weshalb ich die Löcher mit einer Bohrmaschine vergrößert habe (3-4mm). Dies solltest du zunächst mit allen Aufsätzen machen:
Fangen wir nun mit dem Zusammenbau der Teile an.
Als erstes die Basis: Die zwei langen Teile werden zusammen geschraubt:
Darauf kommt eine Servohalterung:
In die Halterung kommt ein Servo Motor, welcher mit großen Schrauben befestigt wird.
Nun nehmen wir eine weitere Halterung und schrauben seitlich eine runde Plastikhalterung an. Diese wird auf dem gerade montierten Motor der Basis befestigt:
Anschließend schrauben wir zwei der U-Stücke aneinander:
Diese werden mit Hilfe einer langen dünnen Schraube und einer der runden Ösen an der vorherigen Servo Halterung befestigt.
Auf einem neuen Servo bringen wir wieder ein rundes Plastikstück an. Wir stellen die U-Stücke senkrecht auf und befestigen sie an dem Plastikstück. Danach platzierst du den eben eingefügten Motor noch mit großen Schrauben an der Halterung.
Am oberen Ende des U-Stücks befestigen wir auf die gleiche Weise eine Halterung (mit langer Schraube und Öse).
Bevor wir nun hier einen Servo befestigen, müssen wir noch eine kleine Vorbereitung treffen. Nimm das verbleibende U-Stück und das L-Stück an der kürzeren Seite und festige beide aneinander:
Dies befestigst du nun an der noch leeren Servo-Halterung:
Dort hinein kommt jetzt erst ein Servo, welcher bereits einen runden Plastikaufsatz montiert hat, hinein. Der Aufsatz sollte ebenfalls nach oben zeigen::
Wir nehmen nun die letzten beiden verbleibenden Halterungen und schrauben diese wie folgt fest:
Mit Hilfe der letzten runden Öse, einer langen Schraube und einer Mutter, befestigen wir die zwei verschraubten Halterungen am letzten U-Stück:
Wahrscheinlich wird es dir bereits klar sein was als nächstes kommt. Der vorletzte Servo wird mit Plastikaufsatz in die Halterung geschraubt (diesmal nicht nach oben zeigend, sondern 90° zur Seite):
Kommen wir zum letzten unverbauten Servomotor. Dieser wird ganz einfach nur auf der letzte Halterung montiert.
Widmen wir uns nun dem Zusammenbau des Metallgriffs. Zunächst befestigen wir das Plastikrädchen mit zwei Schrauben am Griff:
Nun wird noch der Servo mit Schrauben am Griff befestigt:
Nun kannst du Plastikaufsatz anbringen (Griff sollte geschlossen sein) und mit einer Schraube justieren:
Am Gelenk wird ein weiterer Plastikaufsatz angebracht:
Als letztes setzten wir den montierten Griff einfach auf den obersten Motor auf. Falls der Aufsatz zu locker ist, kannst du das letzte Plastikstück erst auf dem Gelenk-Servo befestigen und anschließend erst mit dem Griff verschrauben.
Zusammengebaut sieht das ganze dann so aus:
Die Kabel der Servos sind etwas zu kurz aber wir können sie mit Jumper Kabeln verlängern. Es bietet sich an diese außerdem mit Kabelbindern zu verbinden, damit etwas Ordnung einkehrt.
Verkabelung des Robot Arms am Raspberry Pi’s
Zunächst widmen wir uns der Verkabelung des PCA9685 Servo Treiber Boards, sofern du diesen nicht bereits mit dem Raspberry Pi verbunden hast. Hierbei wird der I2C Bus genommen, wodurch wir das Board wie folgt verbinden:
PCA9685 | Raspberry Pi |
---|---|
SCL | GPIO 3 / SCL (Pin 5) |
SDA | GPIO 2 / SDA (Pin 3) |
VCC / V | 3,3V (pin 1) |
GND | GND (Pin 6) |
Bevor wird die Servos anschließen, kümmern wir und noch um die externe Stromversorgung. Entweder du hast ein 5V Universalnetzteil, welches genügend Strom liefert, oder aber du nutzt ein Schaltnetzteil, so wie ich ebenfalls. Beim Universaltzteil ist lediglich ein Power Jack Adapter nötig. Du kannst die Spannungspins einfach – wie in der Abbildung zu sehen ist – verbinden.
Falls du hingegen ein 5V Schaltnetzteil (10A) nutzt, so brauchst du ein zusätzliches Stromkabel, welches aufgeschnitten wird. Die Kabel werden wie folgt an das Netzteil angeschlossen:
- Schwarzes bzw. braunes Kabel -> „L“.
- Blaues Kabel -> „N“.
- Grün-gelbes Kabel -> „PE“ bzw. Erdungssymbol.
Hier ist Vorsicht geboten! Bei Unsicherheit solltest du einen Fachmann fragen bzw. ein reguläres Universalnetzteil nehmen. Etwas genauer habe ich das Thema u.a. hier erläutert.
Zuguterletzt schließen wir die Servos an den PCA9685. Hierbei kommt der unterste Motor an Position 0, der darüber an Position 1 usw. Der Servo des Griffs ist an Position 5.
Raspberry Pi 6 DOF Robot Arm Bibliothek laden & testen
Um den Roboter Arm zu testen, muss wie gesagt zunächst die Adafruit PCA9685 Bibliothek installiert sein.
Anschließend können wir eine von mir modifizierte kleine Python Bibliothek laden und im Terminal ausführen:
git clone https://github.com/tutRPi/6DOF-Robot-Armcd 6DOF-Robot-Armsudo python example.py
Ich habe der ursprünglichen Bibliothek noch etwas Code hinzugefügt, sodass der Arm z.B. „herunterfahren“ (sleep) kann und nicht in sich zusammenfällt, sobald der Strom weg ist.
Habt ihr Anregungen / Ideen für Projekte mit dem 6 DOF Roboterarm oder sogar schon ein Projekt umgesetzt? Als nächstes ist von mir die Steuerung per Xbox 360 Controller geplant.