Wie man das Animatronic Workbench Studio installiert
Animatronic Workbench ist eine Open Source Lösung zur Steuerung von animatronischen Figuren. Damit müssen Bewegungen nicht mehr mühsam programmiert werden, sondern können einfach mit einem grafischen Editor erstellt werden.
Voraussetzungen
Animatronic Workbench Studio läuft auf dotnet core und damit prinzipiell auf Windows, Linux und MacOS. Die Routinen zur Ansteuerung des COM-Ports und der Midi-Controller sind allerdings meines Wissens noch nicht für Linux und MacOS implementiert. Gleiches gilt für die Darstellung per WPF, wofür es aber wohl Wege für eine Portierung von WPF unter Linux gibt.
Installation
- Installiere dotnet core für dein Betriebssystem.
- Lade die aktuelle Version von Animatronic Workbench in ein Verzeichnis auch Deinem Computer herunter.
- Wenn Du die ZIP Version verwendet, enpacke das ZIP anschließend.
- Öffne eine Windows-Eingabe und wechsele in das Verzeichnis ** src\desktop\AwbStudio\ **
- Gib den Befehl dotnet run ein
Projekte
Wenn Du Animatronic Workbench Studio zum ersten Mal startest, musst Du ein neues Projekt anlegen. Ein Projekt ist immer ein Verzeichnis, in dem alle Dateien für eine animatronische Figur gespeichert werden.
Projektdateien
Die Dateien "AwbProject.awbprj" und ".awbtl" enthalten die Informationen für das Projekt und die einzelnen Animationen. Sie sind zwar in einem lesbaren JSON-Format gespeichert, sollten
Sound Verzeichnis "audio"
Aktuell wird als Hardware primär der YX5300 MP3-Player unterstützt, der MP3 Dateien von einer SD-Karte abspielt.
Im Projektverzeichnis gibt es dazu ein Unterverzeichnis "audio\SDCard\01", in dem die Sounddateien für die Animationen im MP3 Format abgelegt werden. Das Verzeichnis "01" kann dann später 1:1 auf die SD-Karte des MP3-Players kopiert werden.
Die MP3-Dateien sollen immer in der Form "001_Name1.mp3", "002_Name2.mp3", "003_AnotherName.mp3" usw. benannt werden, damit sie später einfach per Index aufgerufen werden können. Was nach dem "_" im Dateinamen steht, wird später zur Auswahl des Sounds in der Benutzeroberfläche angezeigt.
Projekt konfigurieren
Bei der Einrichtung eines Projektes stehe folgende Einstellungen zur Verfügung:
Timeline States erstellen
Bewegungen der animatronischen Figuren werden in Timeline gespeichert. Eine Timeline kann einem Timeline State zugeordnet werden, den man als so etwas wie ein Thema oder eine Rubrik ansehen kann.
Beispiele für Timeline States könnten "Sitzen", "Schlafen" oder "Stehen" sein. Über den Timeline State "Schlafen" kann man somit alle Timelines finden, die eine Schlafbewegung enthalten.
Bei einem neuen Projekt sind folgende Timeline States bereits vorausgefüllt:
- "Default" - Standard-Timelines
- "DontExport" - Timelines, die nicht exportiert werden sollen. Das können Timelines sein, die noch nicht ganz fertig sind oder die als "Nested Timelines" in andere Timelines hinein gestempelt werden.
Die vorausgefüllten Timeline States sind aber nur Vorschläge und beliebig umbenannt oder gelöscht werden.
STS / SCS Servos
STS und SCS Servos sind spezielle Servos, die über eine serielle Schnittstelle angesteuert werden. Solche seriellen Bus-Servos haben den Vorteil, dass man sie nicht sternförmig verkabeln muss, sondern einfach hintereinander an den Bus hängen kann. Gleichzeitig können sie auch ihren Zustand (aktuelle Position, Temperatur, Drehmoment) melden, statt nur die Zielposition zu empfangen. Sie sind nicht kompatibel zu klassischen Modellbau-Servos, die über PWM angesteuert werden. Bekannte Anbieter von STS/SCS-Servos sind zum Beispiel WaveShare oder Feetech. Bei STS-Servos kann (im Gegensatz zu SCS) neben de Geschwindigkeit auch die Beschleunigung eingestellt werden.
Serielle Servos können in der Konfiguration des Projektes hinzugefügt werden. Gleichzeitig muss dazu in den Einstellungen des ESP32-Microcontrollers der serielle Bus durch Angabe der GPIO Pins für RX und TX konfiguriert werden.
PWM Servos
PWM-Servos sind klassische Modellbau-Servos, wie sie bereits seit den 1970er Jahren eingesetzt werden. Sie werden über einen PWM-Signal angesteuert, das die Zielposition des Servos angibt. Die Position wird dann durch die Pulsweite des Signals bestimmt und jeder Servo muss mit einem eigenen Kabel direkt mit dem Controller verbunden werden.
Um PWM-Servos zu verwenden, muss ein PWM-Controller angeschlossen und dieser in den Einstellungen des ESP32-Microcontrollers aktiviert werden.
NeoPixel
Um eine animatronische Figur auch mit Lichteffekten zu versehen, können RGB-LEDs verwendet werden. Diese LEDs können einzeln angesteuert werden und so zum Beispiel eine Lauflicht oder eine Farbwechselanimation erzeugen. Die Ansteuerung erfolgt über einen digitalen Bus, der von einem Controller (zum Beispiel einem ESP32) angesteuert wird.
Um NeoPixel zu verwenden, muss in den Einstellungen des ESP32-Microcontrollers der GPIO-Pin angegeben werden, an den der Data-In-Pin der ersten LED angeschlossen ist.
Inputs
Einzelne PIns des ESP32 können als Inputs konfiguriert werden, um zum Beispiel Schalter oder Sensoren anzuschließen. Inputs können in den Timelines als Bedingungen verwendet werden, um zum Beispiel eine Bewegung nur dann auszuführen, wenn ein Schalter betätigt wird oder eine Person vor der Figur steht und den Bewegungsmelder auslöst.
Praktisch funktioniert dies so, man pro Timeline-State angeben kann, welche Inputs aktiv sein müssen, damit die Timelines dieses States abgespielt werden. Gleichzeitig kann man pro Timeline angeben, bei welchen aktiven Inputs ein Timeline-State nicht aktiviert wird.
Klingt kompliziert? Nehmen wir mal ein praktisches Beispiel:
Mein animatronischer Grogu kann entweder am dem Tisch stehen oder in der Umhängetasche stecken. In der Tasche soll er nur Bewegungen machen, bei denen die Arme hoch gehoben sind, da sie sonst beschädigt würden. Auf dem Tisch soll er die Arme runter hängen lassen.
Dazu habe ich eine Anzahl Timelines erstellt, bei denen die Arme oben sind und andere mit den Armen unten. Gleichzeitig hat das Projekt zwei Timeline-States bekommen, nämlich "InTasche" und "Stehen", denen die Timelines entsprechend zugewiesen wurden.
Nun kommt der Input ins Spiel: Dazu hat Grogu eine geheimen Schalter, den man ein und ausschalten kann. Der Timeline-State "InTasche" hat diesen Schalter als positiven Input eingestellt bekommen und der Timeline-State "Stehen" als negativen Input. Das bedeutet, dass bei aktiviertem Schalter nur die Timelines mit den Armen oben abgespielt werden und bei deaktiviertem Schalter nur die Timelines mit den Armen unten.
Timelines bearbeiten
Weiter geht es mit der Bearbeitung der Timelines.