Sandbox

Übersicht

Die Sandbox wurde schon beim Hexapod „Captain-Ahab“ verwendet. Allerdings spielt sie dort eine ganz andere Rolle als bei diesem Projekt. Die folgende Abbildung zeigt die Sandbox.

Die wichtigsten Komponenten sind:

  • 5 Akkus zur Stromversorgung des gesamten Systems inklusive der Servo Motoren
  • Microcontroller: Atmel AVR AT90USB1287
  • FPGA: Lattice XP LFXP3K
  • Anschlüsse für bis zu 24 Servo Motoren

Dabei implementiert der Microcontroller ein USB Gerät und stellt einen virtuellen COM Port zur Verfügung. Über ein Protokoll können Befehle gesendet werden. Diese werden verarbeitet und/oder direkt an den FPGA weitergeleitet. Dieser beherbergt einen speziellen Robotics Chip. Außerdem enthält er PWM Generatoren, die die Ansteuerung der Servo Motoren übernehmen.


Ausgangssituation

  • Bewegungsablauf wurde vom Microcontroller koordiniert
  • Umrechnung von Winkel auf PWM Werte mit Linearisierung erfolgte im FPGA
  • Der USB Stack im Microcontroller hatte einen Bug, der zu häufigen Abstürzen führte

Der USB Fehler musste sofort behoben werden. Auch die andere Aufgabenteilung passte nicht zum Projekt. Die Intelligenz wird am Pandaboard in Software realisiert. Die massgeschneiderte Umsetzung auf dem Microcontroller und im FPGA wäre nur sehr schwer anzupassen gewesen. Außerdem sollte das neue Gehirn des Hexapod flexibler für zukünfigte Änderungen sein. Somit musste die bestehende Firmware grundlegend überarbeitet und verändert werden.


Vorgehensweise

Bei der Ansteuerung über USB gab es am Anfang Probleme. In regelmäßigen Abständen stürzte die Verbindung ab. Hier half nur ein Reset der Sandbox. Zuerst wurde die Firmware debuggt. Bei USB und einem Microcontroller war dies jedoch sehr problematisch, da USB mit Timeout arbeitet. Daher wurde der ganze USB Stack verworfen.

Ein USB Geräts zu implementieren, wäre zu zeitaufwendig gewesen. Es konnte jedoch auf den bestehenden LUFA USB Stack zurückgegriffen werden: http://fourwalledcubicle.com/LUFA.php

Dieser konnte mit einigen Änderungen in den Rest der bestehenden Firmware integriert werden. Dabei wurde auch die Firmware für den Hexapod „Captain-Ahab“ gepatcht. Dabei agiert der Microcontroller als USB Gerät der CDC Class und stellt einen virtuellen COM Port zur Verfügung.



Die inverse Kinematik basiert auf einer fixen Grundposition. Die Berechnungen waren genau auf die Geometrie des Hexapod „Captain-Ahab“ abgestimmt. Da dies nicht verwendet werden konnte, bot es sich an, die Funktionen in Software auf dem Pandaboard zu realisieren. Daher gibt es eine Version der Firmware, die diese Komponenten nicht enthält.

Die Sandbox dient damit nur noch als sehr einfache Hardware Plattform. Eigentlich werden nur noch die reinen PWM Generatoren im FPGA genutzt. Diese können per USB konfiguriert und angesteuert werden. Die Abbildung oben zeigt die Gesamtstruktur.