Open Source Software für animatronische Figuren
Bei meinen bisherigen Animatronik-Projekten hatte ich immer viel Spaß mit der Hardware, dann allerdings in die Programmierung der Bewegungen nicht mehr so viel Elan gesteckt. Das ist eigentlich schade, da es ja gerade die Bewegungen sind, die die Figuren lebendig machen.
Der Grund lag darin, dass es eben wirklich Programmierung ist, d.h. jede Bewegung in Programmcode geschrieben werden musste. Das ist recht mühsam, wirkt im Ergebnis oft abgehackt und muss zum Ausprobieren immer wieder neu kompiliert und gestartet werden.
Aus diesem Grund habe ich die Software "Animatronic Workbench" (AWB) entwickelt, die auf GitHub als Open Source herunter geladen werden kann. Damit kann man die Bewegungen von animatronischen Figuren ohne Programmierkenntnisse am Bildschirm erstellen. Der ersten praktischen Einsatz hatte die Software bei meinem animatronischen Grogu:
Zum Projekt gibt es auch bereits ein kurzes YouTube-Interview, das die wesentliche Funktionsweise zeigt und erklärt:
Projektstatus
Versions-Historie anzeigen
Roadmap
- Windows-App
- Timeline-Editor
- ESP32-Client
- Steuerung per Midi-Controller
- Steuerung per Maus / Tastatur (ohne zwingenden Midi-Controller)
- Servos in Timeline einbinden
- Live-Modus
- Speichern der Bewegungen im Mikrocontroller
- Autonomer Modus
- Web-Interface für den Client
- STS serielle Servos ansteuern
- SCS serielle Servos ansteuern
- PWM Servos ansteuern
- Wifi Handfernbedienung unterstützen
- Sound / Sprache in Timeline einbinden
- Projekt-Konfigurator statt manueller Bearbeitung der JSON-Dateien
- "Hardware.h" automatisch aus Projekt-Konfigurator generieren
- RGB-LEDs einbinden
- Custom Code im ESP32-Client ermöglichen
- LX serielle Servos ansteuern
- ausführliche Anleitung
- Video-Tutorial
- UnDo Funktion im Editor
Setup / Installation
Die Installation und das Setup von Animatronic Workbench Studio ist hier beschrieben.
Timeline Editor
Kern der App "AWB Studio" ist der Timeline-Editor. Hier können die Bewegungen der einzelnen Servos in Szenen über eine Zeitleiste gestaltet werden. Die Bedienung ist dabei intuitiv und ähnelt der Bedienung von Videoschnitt-Programmen.
Eine einzelne Szene wird unter einem Namen abgespeichert und kann einem Status wie zum Beispiel "Idle", "Sleep" oder "Talk" zugeordnet werden.
Live Control vs. Autonome Speicherung der Bewegungen im Mikrocontroller
Während der Bearbeitung können die Veränderungen direkt per USB oder WLAN an die animatronische Figur übermittelt werden. Dadurch kann man die Anpassungen im Editor live an der Figur mitverfolgen.
Anschließend können die Bewegungsabläufe fest in den Mikrocontroller gespeichert werden, so dass die Figur sich komplett ohne angeschlossenen Computer autonom bewegen kann und dazu nur noch einen Stromanschluss benötigt.
Mit dem (optionalen) Wahlschalter kann ein Status (wie "Idle", "Sleep" oder "Talk") am Mikrocontroller ausgewählt werden, der dann (nur) die dazu passenden Bewegungen abspielt.
Eingabe Controller
Als Eingabegerät verwendet die Software Midi-Mischpult-Controller, die man per USB anschließen kann und die es schon für unter 100 Euro zu kaufen gibt. Mit diesen Controllern kann man sich durch die Timeline der jeweiligen Animation bewegen und haptisch durch Dreh- oder Schieberegler die Drehungen der Servos steuern.
Durch den Rückkanal einiger Mischpult-Modelle kann man sogar die aktuelle Position der Servos am Regler ablesen, wenn die Timeline im Playback Modus abspielt. Ist die animatronische Figur zu diesem Zeitpunkt per USB-Kabel mit dem Computer verbunden, wird die Bewegung auch live an der Figur ausgeführt.
Web-Interface für den Client
Der ESP32 Client-Mikrocontroller spannt ein kleines, eigenes WLAN auf, über welches man sich mit einem Smartphone oder Tablet verbinden kann. Über eine lokale Website kann dort der Zustand der Servos (inklusive Temperatur, Belastung etc.) abgelesen werden und auch Bewegungen gestartet werden. Das ist besonders praktisch, wenn die animatronische Figur nicht mehr am Computer angeschlossen ist, sondern z.B. bereits auf einer Bühne oder in einem Schaufenster steht.
Hardware
Microcontroller Clients
Als Microcontroller eignen sich besonders ESP32-Boards, da diese sehr klein und günstig sind, über WLAN verfügen und auch noch genügend Rechenleistung für die Ansteuerung der Servos haben. Optimaler Weise schließt man auch ein kleines Display an, auf dem der aktuelle Zustand der Servo-Positionen, Servo-Temperatur und möglicher Fehlermeldungen angezeigt wird. Das erleichtert die Fehlersuche und das Debugging.
Den ESP32 kann man entweder selbst mit den verwendeten Komponenten verlöten, ich habe aber auch mit folgenden zwei fertige Boards gute Erfahrungen gemacht:
Waveshare ESP32 Servo Driver
Das Waveshare ESP32 Servo Driver Board ist sehr klein und enthält bereits ein Display und fertige Anschlüsse für STS Servos. Mit 25 EUR ist es immer noch erschwinglich. Als Bonus hat es auch einen RGB-LED Anschluss (auch bekannt als Neopixel) und sogar zwei solcher LEDs auf dem Board untergebracht. Leider sind darüber hinaus keine Pins des ESP32 nach außen geführt, so dass man keine eigenen Sensoren oder Lautsprecher mehr anschließen kann. Es eignet sich aber perfekt, um solche Projekte wie den animatronischen Grogu umzusetzen.
M5Stack
Die M5Stack ESP32 Core Module kommen bereits in einem Gehäuse mit Display und oft auch mit eingebautem Akku. Die meisten haben auch einen Lautsprecher und andere nützliche Komponenten verbaut. Sie sind daher sehr vielseitig und können zudem noch mit anderen Modulen z.B. über I2C-Bus erweitert werden. Aus meiner Sicht eignen sie sich sehr gut für Projekte mit PWM-Servos, da es auch dafür ein passendes Erweiterungsmodul gibt, das direkt ans Gehäuse passt.
M5Stack Boards sind sozusagen das komfortable Rundum Sorglos Paket - allerdings sind sie auch deutlich teurer als das Waveshare Board.
Unterstützte / geplante Servo-Typen
STS Servos (bereits unterstützt)
Die STS Servos der Firma Waveshare oder Feetech sind serielle Servos und können dadurch sehr einfach an den Mikrocontroller angeschlossen werden. Dafür, dass sie verschleißfreie Magnet-Encoder statt Dreh-Potentiometer verwenden, sind sie immer noch vergleichsweise günstig und haben eine hohe Auflösung.
Sie können zudem pro Bewegung zugewiesen bekommen, wie hoch die Beschleunigung und Endgeschwindigkeit sein darf und sind daher ideal für animatronische Figuren geeignet. Wenn es im Dauerbetrieb dazu kommt, dass die Servos zu heiß werden, können die seriellen Servos dies an den ESP32 zurück melden und dieser Gegenmaßnahmen einleiten.
Der animatronische Grogu basiert auf diesen Servos.
PWM Servos (bereits unterstützt)
Die klassischen Modellbau Servos sind PWM Servos. Sie sind sehr günstig und weit verbreitet.
Der primäre Nachteil ist aus meiner Sicht, dass sie meist keine einstellbare Geschwindigkeit / Beschleunigung haben und daher für animatronische Figuren nur bedingt geeignet sind. Zudem kann es beim Einschalten der Elektronik passieren, dass sie in ungeeignete Positionen fahren, was je nach Konstruktion dazu führen kann, dass die Figur sich selbst zerstört.
Dynamixel AX Servos (eventuell geplant)
Serielle Servos von Dynamixel haben aber eine sehr hohe Auflösung, können sehr hohe Drehmomente erzeugen und sind dabei aber dennoch recht leise. Sie sind daher ideal für große Figuren geeignet und stecken zum Beispiel in der Nikola Tesla Büste. Allerdings sind sie auch recht teuer. Leider habe ich bisher keine Open-Source-Implementierung des Protokolls gefunden, so dass ich diese Servos bisher nur in Projekten verwenden konnte, die ich später nicht selbst als Open Source veröffentlicht habe. Das erschwert die Unterstützung in AWB, da ich die Protokoll-Implementierung selbst schreiben müsste.
LX Servos (eventuell geplant)
Die LX Servos der Firma LewanSoul sind ebenfalls serielle Servos, allerdings mit einem anderen Protokoll.