@@ -94,6 +94,8 @@ Bei jeder Aktion welche vom anki Vector dargestellt werden soll, wurden Abfragen
Im Accelerator Server, in der `server.js`, wird der Status dann in dem listener `socket.on('setAnkiStatus')` verarbeitet. Hier wird überprüft ob der gesendetete Status sich in der Liste der vom Anki unterstützten Statusmeldungen, `ankiSupportedStatus`, befindet. Danach wird der Status mit dem Eventnamen `ankiStatus` an alle Nutzer im Raum gesendet.
Damit sich die Middleware mit dem Server verbinden kann wurde ein minimalistisches `anki_join` socket-io event zur `server.js` hinzugefügt. Grund dafür ist die callback Funktion welche im `join` Event von normalen Nutzern mitgesendet wird. Da der anki Vector über Python angesteuert wird ist es nicht möglich über socket-io eine Funktion zu senden welche von JavaScript verwendet werden kann.
# anki Vector
Im Folgenden wird das Setup des anki Vectors für die Verbindung mit einem Rechner als Grundlage für die Ausführung der Verbindung mit Accelerator beschrieben.
...
...
@@ -120,12 +122,13 @@ Eine Video-Demonstration dieses Vorgangs findet sich [hier](https://www.youtube.
# Middleware
Die Middleware empfängt die Statusmeldungen von Accelerator und stellt sie dem Skript zum ansteuern des anki's zur Verfügung. Dazu muss die Middleware sich mit dem gewünschtem Accelerator Raum verbinden. Dazu muss zunächst die Adresse des Accelerator Servers eingegeben werden. Mit Klick auf "Connect" verbindet sich die Middleware mit dem Server.<br/>
Mit Klick auf "Get Rooms" kann die Liste der Räume angefordert werden. Nachdem eine Auswahl getroffen wurde verbindet sich die Middleware mit einem Klick auf "Join Room" mit dem Raum. Mit "Disconnect" kann sich die Middleware vom Server trennen. Im unteren Bereich der Gui werden alle empfangenen Statusmeldungen aufgelistet.<br/>
TBD
## Empfangen der Accelorator Befehle
TBD
Die Accelerator Befehle werden über socket-io im JSON Format empfangen. Die JavaScript JSON Objekte werden zwar als String gesendet, sind aber nicht vollständig JSON konform. Damit Python die JSON Objekte laden kann ist ein Vorverarbeitungsschritt nötig, dies geschieht in der `processJsonString` Funktion. Anschließend kann mit dem json package das JSON Objekt als python dictionary geladen und normal weiterverarbeitet werden.
## Management der Animationen
Der Weg einer Aktion auf dem Accelerator wird in Abbildung x dargestellt. Die möglichen Animationen sind unter Animationen aufgelistet. Eine Herausforderung ist es, die normalen Vektoranimationen mit festen Start und Endzeitpunkt beliebig lange abzuspielen. Hierzu wird ein Eventmanagement benötigt. Dazu bieten sich die Optionen der eventbasierten Programmierung oder eine Thread-basierte Programmierung an. Beide Varianten wurden ausgiebig getestet. Im Zuge der Arbeit fördert ein Manager die stabilsten Ergebnisse. Dieser ähnelt einer State-Machine, die je nach Status eine Aktion ausführt. Folgende Status sind vorhanden: