Hexapod Robot

Zuerst möchte ich klarstellen, dass diese Anleitung für Bastler gemacht worden ist. An einigen Stellen kann oder muss man noch Verbesserungen vornehmen. Außerdem sollte man sich schon minimal mit programmieren und Elektronik beschäftigt haben sonst kann man schnell einen Kurzschluss haben und das kann beim Akku schnell zum Brand führen. Für mich war das Projekt wichtig da ich Programmierung mit Python gelernt habe und elektronische Auslegung.



Aufbau

Das Grundgerüst wird mit dem 3D-Drucker produziert. Pro Bein werden 3 Servomotoren benützt. Der Oberschenkelmotor muss unten auch gelagert, um die am höchsten belastete Verbindung zu entlasten. Jeder Fuß wird mit einem Druckknopf ausgestattet, um die Auftrittshöhe bestimmen zu können. Im Nachhinein ist das ein relativ sinnloses Feature. (Habe dieses Feature in den CAD-Daten entfernt.) Die Kabel für die Füße werden mithilfe der im 3D-Teil vorhandenen Löcher mit Draht befestigt und geordnet. Die Batterie wird unter der Grundplatte mit Kabelbinder angebracht. Direkt über der gedruckten Grundplatte werden die zwei Servodriver mit 5 mm Messingstehern befestigt. Darüber kommt der Raspberry Pi. Dazu benötigt man 25 mm Messingsteher. Für den hinteren Steher nimmt man zuerst einen 5 mm Messingsteher fädelt den DC-DC Wandler ein und schraubt einen 18 mm Steher auf. Die Kamera wird in die 3D-gedruckte Halterung eingeschraubt, die man an einem Servo befestigen kann. Der Servo kann in die vorgesehene Halterung auf die Grundplatte geschraubt werden. Es kann noch ein Laser auf die Kamerahalterung montiert werden. Der Laser benötigt eine kleine Platine da die GPIO Pins nur 3,3V ausgeben der Laser aber 5V braucht, um mit voller Stärke zu leuchten.  Die Anschlüsse an den 3,3V GPIO Pin für die Auftrittsensorik sowie der ON-OFF-Schalter kommen auch auf diese Platine. Es wird ein Loch gebohrt, um diese auf die Distanzen über dem Raspberry Pi auffädeln zu können. Ein extra das ich noch hinzugefügt habe ist eine Befestigung für eine externe WLAN-Antenne.


Software

Raspberry Pi wird mit einem Bildschirm, Tastatur und Maus aufgesetzt, upgedatet und upgegradet. Eine WLAN Verbindung sollte aufgebaut werden.

sudo apt-get update

sudo apt-get upgrade

Als nächstes wird eine Remote Desktop-Verbindung aufgebaut. Dazu wird SSH unter den configs aktiviert und die benötigten Programme sollten verfügbar sein.

sudo apt-get install xrdp vnc4server tightvncserver

Per Remoteverbindung kann jetzt über einen anderen Computer gearbeitet werden. Achte darauf das ein sicheres Passwort verwendet wird. Nimm nicht das Standardpasswort raspi. Als erstes werden noch die Librarys für die Servosteuerung heruntergeladen sowie die für PySimpleGUI für das User Interface.

sudo apt-get install git build-essential python-dev

pip3 install adafruit-pca9685

 

pip3 install PySimpleGUI

Um auf die Kamera in Echtzeit ohne größere Lags Zugriff zu haben wird ein Kamera Web Server verwendet. Installieren kann man diesen mithilfe dieses Links.


Verkabelung

Ein Plan für die gesamte Verkabelung des Hexapods wurde mit dem Programm Fritzing entworfen. Mit diesem kann man Leiterplatten und Schaltpläne selbst zeichnen. Der allgemeine Ablauf ist das die Spannung der Batterie von 7,4V auf 5,5V mit dem DC-DC Wandler heruntergespannt wird. Vor dem Wandler ist noch ein ON-OFF-Schalter eingebaut sieht man unter den Extras beim Laser im Schaltplan. Der Raspberry Pi und ein Servodriver werden von den Ausgängen des Wandlers gespeist. Der zweite Servodriver wird über den ersten mit Informationen und Strom versorgt. Beim Laser war die Schwierigkeit ihn mit 5V Spannung aufleuchten zu lassen. Mit einem Transistor (siehe Schaltplan) konnte ich das Problem lösen. Die ganzen Knöpfe sind die Reste der Idee das die Position der Füße beim Auftreten gemessen werden kann. (waagrechte Haltung bei kleinen Stufen)

Um den Raspberry Pi mit einem Akku betreiben zu können müssen zwei female Jumpercable angelötet werden. Der Lötpunkt PP2 wird mit dem VCC (+Pol) des DC-DC Wandlers verbunden. PP5 ist für die Ground (-Pol) Verbindung.

Am Schluss habe ich die Kabel mit Heißkleber am Raspberry Pi befestigt.

 


Programmierung

Es wurde versucht die While Schleife so einfach wie möglich zu gestalten. Für die einzelnen Gangarten wurden Funktionen geschrieben. Die Bewegungsarten werden in startup, standby, alle Arten von go (go_back, …) und go_crab (go_crab_right, …) gegliedert. Bei startup werden alle Füße nach oben gerichtet somit liegt der Roboter am Boden. Sobald ein Buttonsignal kommt wechselt das Programm in standby. Das heißt die Füße setzen auf dem Boden auf. Dabei ist darauf zu achten das die Füße leicht überbewegt werden damit der Hexapod stabil steht. Je nach Gangart müssen die Füße vor standby noch ausgerichtet werden. Sobald die Gangart gewechselt wird muss man die Beine neu ausrichten. Dafür sind die Funktionen go_crab_to_go und go_to_go_crab zuständig. Die extra Funktionen wie der Laser und die vertikale Kamerabewegungen haben noch Buttons unter der Bewegungssteuerung bekommen. Um das überdrehen der Kamera zu verhindern habe ich für den Kameraservo eine min. und max. Position einprogrammiert. 


Probleme, Fehler und Lösungen

Zuckende Servos:

Zu geringe Spannung auf dem Servodriver. Sollte bei 5V liegen.

 

Hexapod liegt am Boden alle Servos am Zucken:

Zuerst wurde ein DC-DC Wandler mit max. 3A verwendet. Servos bekommen nach dem ersten Schritt nicht mehr genug Strom. Der Wandler wurde gegen einen mit max. 5A gewechselt.

 

Verbindungsprobleme beim Laufen:

Es hat Probleme mit der Stromversorgung des Raspberry Pi´s beim Laufen gegeben. Sobald alle Servomotoren im Einsatz sind ziehen diese so viel Strom, dass der Pi zu wenig Strom bekommt und die Verbindung kurz abbricht. Dieses Problem wurde mit  1500uF Kondensatoren auf den Servodrivern gelöst. Desto mehr Motoren betrieben werden desto mehr Farad muss der Kondensator haben.

 

Fehler:

Raspberry Pi nicht auf metallische Unterlage legen!

Keinen Kontaktspray bei Servopotentiometer verwenden!

Bei angeschlossener Batterie kein 5V Kabel an das Gehäuse des Raspberry Pi´s bringen (Kurzschluss)!

 Aufpassen das die Batterie nicht ganz entladen wird! Eine Idee wäre noch einen Spannungsmesser einzubauen.

 

 


Extras

Externe Antenne:

Ist eine sehr filigrane Arbeit, jedoch wird die WLAN Verbindung stabiler.

Schneide die PCB Antenne nicht ab bevor du dir zu 100% sicher bist das der Connector eine Verbindung mit der Leiterbahn hat. Mit Multimeter nachprüfen!

Laser:

Über der Kamera kann man z.B. noch einen Laser befestigen. Im Code ist ein Laser schon einprogrammiert. Hier noch der elektronische Aufbau.

Gummisohlen für die Füße:

Auf glatten Boden haben die Füße keine Haftung. Darum habe ich den Hexapod nur auf einer Gummimatte laufen lassen.