Kategorie-Archiv: Roboter

USB, NodeJS und der Raspberry Pi

 

Nach meinen letzten Experimenten mit einem XBOX360-Controller und dem USB-Shield auf einem Arduino wollte ich mal sehen ob man den Controller nicht auch an einem Raspberry Pi mit NodeJS auslesen kann. Die überlegung ist mittlerweile die Basisstation für den Roboter komplett auf einem RasPi zu realisieren. Hier sind mehr “Schweinereien” möglich als auf einem Arduino Board. Ich denke da an die Steuerung per Webinterface etc.pp.

Also “Tante Google” angeworfen und ein wenig geschaut.

Mein erster Treffer war das NodeJS-Modul “node-hid“. Das Modul soll einfachen Zugriff auf USB-HID-Devices wie Tastatur, Maus und andere Controller geben – also eigentlich auch auf den XBOX-Controller. “To cut a long story short”: Hat nicht kompiliert. Stundenlang weitergesucht und gepatch – hat dann kompiliert aber nicht funktioniert – erstmal alles in die Ecke gefeuert und andere Dinge gemacht… KACKE

Kacke

Nächster Versuch

Heute wieder ein wenig rumgesucht, sowas lässt mir ja keine Ruhe. Gibt es eine Alternative zum “node-hid” Modul?

Weiterlesen

Steuerung per Gamecontroller

Wie geht denn das?

In einem vorherigen Post habe ich bereits den Anschluss des USB-Host-Shields an einen Arduino Mega beschrieben. Ziel war es einen XBOX360-Controller zum Steuern des Roboters zu verwenden. Die Usb-Host-Library bringt einige Module für die Kommunikation mit verschiedenen USB-Geräten mit. Darunter auch eine Library für die XBOX-Controller. Die ausgelesenen Steuerdaten eines Steuerkreuzes werden dann mit einem APC220-Funkmodul an den Roboter geschickt und dort an den Motorcontroller weitergereicht.

Weiterlesen

Die i2C-Blinkbox

i2c – Lichtsteuerung für den Robot

Der Rollstuhl den ich als Basis für die ganze Geschichte nehme hat eine fast komplette “Lichtsignalanlage” (schönes Wort). Blinker und Licht (Vorne und Hinten). Bremslichter gibt es leider nicht.

Es musste also eine Lösung her um das Licht (und evtl. noch andere “Großverbraucher”) schalten zu können. Das Licht läuft auf 24Volt, also wiedereinmal ein wenig viel um das direkt an den Arduino anzuklemmen. Lösungen sind da entweder Relais oder MosFETs. Ausserdem muss das ganze in ein ordentliches Gehäuse verpackt werden. Die Ansteuerung und die Versorgung soll über den I2C-Bus erfolgen. Das braucht nur 4 Kabel und spart einen UART-Port.

 

Die i2C-Blinkbox

Die i2C-Blinkbox

Weiterlesen

XBOX360 Controller

Fernsteueroptionen & Basisstation…

Grundüberlegung: Wie steuert man einen solchen Roboter?!

Aktuell nutze ich eine 8-Kanal Fernsteuerung auf 2.4GHz (Turnigy 9X). Standartsteuerung für (Flug-)Modelle, Steuerkreuz links, Steuerkreuz rechts, ein paar Schalter.

Turnigy 9X

Bei meinen Streifzügen durch das Web habe ich gesehen das einige Bastler zur Steuerung ihrer Fahrzeuge/Roboter keine normalen Fernsteuerungen einsetzen, sondern XBOX360 oder Playstation-Controller.

XBOX360 Controller

So ein Controller hat für meinen Robot einige Vorteile:

Ersteinmal die Steuerung des kompletten Fahrzeugs: Derzeit steuer ich die Kiste im “Panzermodus” mit einem Steuerkreuz der Fernsteuerung. Vorwärt/Rückwärts ist klar, bei Kurvenfahrt wird ein Rad beschleunigt und das andere gebremst. Diese Steuerung könnte ich bei einem XBOX-Controller schon einmal mit dem “Right Stick” erschlagen. (ich benenne das jetzt so wie auf dem obigen Bild zu sehen ist).

Dann soll die Kiste noch eine Kamera bekommen die frei schwenk- und neigbar ist. Dazu brauche ich also ein zweites “Steuerkreuz”. Mit der aktuellen Steuerung auch kein Problem, ist ja noch eines frei. Am XBOX-Controller würde ich wohl den “Left Stick” nehmen.

Sollten noch weitere schaltbare “Schweinereien” wie Blinker, Notaus, Streuwagen, Fegebürste, Hund, Katze, Maus kommen wäre das auch noch mit der aktuellen Steuerung lösbar (sind ja nur Schaltvorgänge). Wenn ich aber noch ein Steuerkreuz brauche wird das ganze ohne Doppelbelegung eng. Bei der XBOX-Steuerung wäre noch das “Directional pad” über.

Ein weiterer Vorteil des Controllers gegenüber der aktuellen Steuerung: Das Teil liegt verdammt besser in der Hand  😉

Allerdings bringt das alles auch Probleme:

  1. Der XBOX-Controller hat einen USB-Anschluss und ich möchte keinen PC für das ganze Projekt nutzen.
  2. Wie kommen die Steuersignale zum Robot? Bei der Modellbaufernbedienung gibt es einen kleinen Empfänger den man direkt mit dem Arduino des Robots verbinden kann. Bei der Controller-Lösung muss das Signal “irgendwie anders” zum Arduino gelangen.

Kaum ein Problem ohne Lösungen:

Der Robot sollte von Anfang an eine “Basis-Station” bekommen. Darin der Videomonitor für die Kamera und ein LCD-Display für die Telemetriedaten. Für die Telemetriedaten ist eine 2,4GHz Funkstrecke über zwei XBEE-Module vorgesehen. Um diese Basis-Station zu realisieren wird dort auch ein Arduino-Kontroller benötigt. Die XBEE-Funkstrecke ist bidirektional, das bedeutet ich bekomme nicht nur die Daten vom Robot, sondern sie kann auch die Steuersignale zum Robot schicken.

Problem 1 – Controler an die Basisstation verbinden: Dazu gibt es “USB-Host-Adapter” z.B. von Sparkfun. Mit der passenden Software können dort USB-Sticks, Kameras, Festplatten, und – Gamecontroller angeschlossen werden. Für den Adapter gibt es eine Arduino Softwarelibrary die so ziemliche alle erdenklichen Geräte ansteuern oder auslesen kann. Die Library unterstützt auch direkt den XBOX360-Controller. Perfekt! 😉

Sparkfun USB-Host-Shield

Problem 2 – Übertragung: Wie oben angerissen können die Steuersignale über die XBEE-Verbindung an den Robot übertragen werden. Allerdings muss ich da noch nach einer Failsafe Lösung suchen! Diese Rollstuhlantriebe haben massiv Kraft und die Kiste kann erheblichen Schaden anrichten. Die aktuelle Steuerung hat einen eingebauten Lösung. Dazu wird im Empfänger eine “Failsafe-Stellung” programmiert, welche ausgelöst wird wenn der Kontakt zum Sender unterbrochen wird.

 

Update

Offenbar kommt bald der “Arduino Esplora”, eine Art programmierbarer Controller mit diversen kleinen Gizmos.

Arduino Esplorer

Hier gibt es weitere Details: http://arduino.cc/en/Main/ArduinoBoardEsplora

Links:

USB-Host-Shield kaufen: http://www.watterott.com/de/SparkFun-USB-Host-Shield

USB-Host-Library: http://www.circuitsathome.com/arduino_usb_host_shield_projects