Raspberry Pi Roboter mit Xbox 360 Controller fernsteuern

Projekte

Mit Xbox 360 Controller Raspberry Pi Roboter fernsteuern (Teil 6)

In diesem Teil wollen wir den Roboter nun auch noch mit einem Xbox 360 Controller fernsteuern. Im Vergleich zu der Infrarot Fernbedienung hat der Controller den Vorteil, dass er zwei Joysticks besitzt, welche optimal zum Steuern geeignet sind. Zusätzlich lässt sich mit dem zweiten Joystick z.B. eine Kamera drehen und die Knöpfe können ebenfalls mit Funktionen versehen werden.

Auch wenn wir bereits eine Steuerung realisiert haben, finde ich diese Art doch um einiges cooler. Daher geht es in diesem Video um die Einrichtung der kabellosen Xbox 360 Controller Fernsteuerung.

 

Zubehör

In diesem Tutorial wird nicht viel benötigt, im speziellen nur der Controller und Adapter:

Wer einen Raspberry Pi Zero verwendet, wird ggf. Probleme mit der Stromversorgung bekommen. Nichtsdestotrotz ist ein kleiner USB Hub nötig, da der einzige USB Port des Zero Models höchstwahrscheinlich für den Wlan Adapter gebraucht wird.

 

Vorbereitung & Installation des Xbox360 Controllers

Bevor wir den Controller mit dem Raspberry Pi verbinden und die Funktionen definieren, müssen die benötigten Treiber installiert werden. Im Tutorial „Raspberry Pi mittels Xbox 360 Controller steuern“ ist die Installation und einige Tests, ob der Controller erkannt wurde, genau erklärt. Die Beispiel Schritte sowie die Nutzung als Maus kannst du überspringen. Wichtig ist nur, dass bevor du fortfährst dein Xbox Controller also erkannt und bereit sein sollte.

Da das Kabel des Adapters doch recht lang ist, würde ich das beiliegende Gummi erst gar nicht abnehmen oder das Kabel ggf. wieder aufwickeln. Die Platzierung spielt dabei keine Rolle, da keine visuellen Infrarotsignale sondern Funksignale gesendet und empfangen werden. Im Video habe ich den Adapter vorne über die Ultraschall-„Augen“ gehängt, was vielleicht nicht die beste Wahl ist, sofern auch die automatisches Hinderniserkennung beibehalten bleiben soll 😉

 

Modul laden und Code erweitern

Zum Erkennen der Signale nutzen wir die selbe Bibliothek, die im vorherigen Tutorial auch genutzt wurde. Dafür laden wir uns zunächst diese Datei in unseren Roboter Ordner:

cd robot/
wget https://raw.githubusercontent.com/FRC4564/Xbox/2dcc49eb198e57e4dd0af9a15e53fef85c411ea1/xbox.py

Diese (und die math) Bibliothek binden wir in unserer Main-Datei ein. Dazu bearbeiten wir sie und ergänzen den Code am Anfang um die beiden import Befehle.

sudo nano robot.py

 

Anschließend gilt es den Code am Ende zu erweitern. Dazu erstellen wir zwei Funktionen, dessen Erklärung du nachfolgend findest.

Speichere und beende mit STRG+O und STRG+X.

Die Funktion xboxControl ist zum Verwalten der Tastendrücke/Bewegungen des Joysticks von dem Controller da. Hier können wir bestimmte Funktionen aufrufen, sofern eine Taste gedrückt wurde. In unserem Fall soll das Drücken der A-Taste den Roboter stoppen lassen (auch wenn der Joystick bewegt wird). Falls die Taste nicht gedrückt wird, so wollen wir den Roboter mit Hilfe des linken Joysticks steuern.

Die eigentliche Bewegung findet wiederum in der Funktion moveByAxis statt. Ist der Joystick in der Mitte (x = y = 0), so soll der Roboter stoppen, ansonsten in die angegebene Richtung fahren. Da der Code recht selbstbeschreibend ist, gehe ich hier nun nicht weiter darauf ein. Solltest du eine spezielle Frage haben, kannst du diese gerne als Kommentar posten.

Der Vollständigkeit halber muss noch gesagt werden, dass ein Bewegen des Joysticks nach hinten rechts bzw. hinten links keine zugeordnete Bewegung hat, da ich sie nicht gebraucht habe. Falls du die Funktionalität einbauen möchtest, musst du analog zu den vorherigen Abfragen den Winkel betrachten: Dieser liegt zwischen 180 und 270 falls der Stick sich unten links befindet und zwischen 270 und 360 im unteren rechten Bereich.

 

Code testen

Abschließend wollen wir den Roboter natürlich auch fahren lassen. Stelle dazu sicher, dass der Xbox 360 Controller an ist und erkannt wurde (gedrückte Tasten sollten erscheinen):

sudo xboxdrv --detach-kernel-driver

Wird die Eingabe erkannt, brich mit STRG+C ab.

Nun öffnest du die Python Konsole (sudo python) und kopierst folgenden Code hinein:

Sofern alles funktioniert kannst du den Roboter mit dem linken Steuerknüppel fernsteuern. Im nachfolgenden Video siehst du wie ich meinen Raspberry Pi Roboter mit Hilfe des Xbox 360 Conrtollers hin und her navigiere.

Sofern du nur eine kurze Drehung möchtest, darf der Stick auch nur kurz in diese Richtung gedreht werden. Da es damit manchmal gar nicht so einfach ist, den Roboter präzise zu steuern, habe ich den A-Knopf als Bremse vorgesehen.

 

Als Zusatz kann nun der rechte Controller bspw. einen Servo- oder Schrittmotor drehen, auf dem eine Livestream Kamera befestigt ist.

, , , ,


Schreibe einen Kommentar

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

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!