... | ... | @@ -15,15 +15,15 @@ |
|
|
8. [Evaluation](#evaluation)
|
|
|
9. [Ausblick](#ausblick)
|
|
|
|
|
|
# Einleitung
|
|
|
|
|
|
# Einleitung
|
|
|
Das Projekt "anki Vector Verbindung" wurde im Sommersemester 2022 von
|
|
|
|
|
|
- Alex Pollok (alex.pollok@student.reutlingen-university.de)
|
|
|
- Patrick Schmutz (patrick.schmutz@student.reutlingen-university.de)
|
|
|
- Kristina Wagner (kristina.wagner@student.reutlingen-university.de)
|
|
|
|
|
|
im Rahmen des Kurses "Kollaborative Systeme" durchgeführt.
|
|
|
im Rahmen des Kurses "Kollaborative Systeme" durchgeführt.
|
|
|
|
|
|
Der anki Vector ist ein Mini-Roboter der Firma DigitalDreamLabs. Eine kurze Vorstellung von Vector bietet ein [Video von heise online](https://www.youtube.com/watch?v=tsDUavPVQ2Y).
|
|
|
|
... | ... | @@ -31,15 +31,17 @@ Der anki Vector ist ein Mini-Roboter der Firma DigitalDreamLabs. Eine kurze Vors |
|
|
|
|
|
Zielsetzung des Projektes war es, die Verbindung zwischen dem Accelerator und Vector herzustellen, um so die verschiedenen Aktionen, die ein Nutzer im Accelerator durchführen kann (z.B. Daumen hoch), physisch abzubilden. Dies ist im Kontext von hybriden Teams eine denkbare Maßnahme, um die Awareness bezüglich einer nicht-anwesenden Person zu steigern. Mit dem Vector als Repräsentant für eine lokal entfernte Person kann dies gelingen und die Interaktion in der Gruppe verbessert werden, ohne dass sich mehrere Personen um einen Rechner o.ä. versammeln müssen.
|
|
|
|
|
|
|
|
|
## Anforderungen
|
|
|
|
|
|
Für die Erfüllung des gesetzten Projektziels sind folgende Anforderungen umzusetzen:
|
|
|
* Accelerator muss den Vector in den Raum sowie die Nutzerverwaltung aufnehmen können
|
|
|
|
|
|
* Accelerator muss den Vector in den Raum sowie die Nutzerverwaltung aufnehmen können
|
|
|
* Ein Nutzer muss sich mit dem Vector verbinden können
|
|
|
* Aktionen müssen an den Vector geschickt werden können
|
|
|
* Die Aktionen müssen alle von dem Vector umgesetzt werden können
|
|
|
|
|
|
## Herausforderungen
|
|
|
|
|
|
1. Mit dem Bildschirm des Vectors kann nur eine Aktion angezeigt werden, sodass jeweils nur eine Aktion zum Vector geschickt werden sollte.
|
|
|
2. Vektor kann nicht im WLAN der Hochschule verwendet werden, da eine 2,4 gHZ WLAN-Frequenz benötigt wird und auch die Verbindung mit einem WLAN nur möglich ist, wenn nur eine Passwortsicherung besteht.
|
|
|
3. Vectors Anwendungen sind auf zeitlich festgelegte Animationen ausgelegt, sodass ein Weg gefunden werden muss, Animationen konditional abzubrechen.
|
... | ... | @@ -63,16 +65,16 @@ Untenstehend ist noch einmal die Auflistung der Aufgabenpakete zu finden: |
|
|
7. Dokumentation
|
|
|
|
|
|
# Systemarchitektur
|
|
|
Die Systemarchitektur beschreibt das Gesamtsystem Accelorator - Middleware - Anki Vector.
|
|
|
In den folgenden Kapiteln wird genauer auf die einzelnen Bestandteile eingegangen. In den Anforderungen ist aufgeführt, dass der Vector von einem Nutzer gesteuert werden muss. Da eine direkte Steuerung des Vectors seitens des Accelerator nicht möglich ist, wird eine Middleware verwendet.
|
|
|
|
|
|
|
|
|
Die Systemarchitektur beschreibt das Gesamtsystem Accelorator - Middleware - Anki Vector. In den folgenden Kapiteln wird genauer auf die einzelnen Bestandteile eingegangen. In den Anforderungen ist aufgeführt, dass der Vector von einem Nutzer gesteuert werden muss. Da eine direkte Steuerung des Vectors seitens des Accelerator nicht möglich ist, wird eine Middleware verwendet.
|
|
|
|
|
|

|
|
|
|
|
|
In dieser Abbildung ist der Systemkontext dargestellt. Die Middleware ist die Verbindung zwischen Accelorator und Anki Vector. Eine Person möchte online Teilnehmen und kommuniziert durch die den Vector mit den anderen Kursteilnehmenden. Auch wenn der Accelerator angepasst werden muss, ist dieser nicht in der Systemarchitektur vorhanden. Dies erleichtert die Darstellung. Genauere Informationen zu den Änderungen sind im Kapitel Accelerator präsentiert.
|
|
|
In dieser Abbildung ist der Systemkontext dargestellt. Die Middleware ist die Verbindung zwischen Accelorator und Anki Vector. Eine Person möchte online Teilnehmen und kommuniziert durch die den Vector mit den anderen Kursteilnehmenden. Auch wenn der Accelerator angepasst werden muss, ist dieser nicht in der Systemarchitektur vorhanden. Dies erleichtert die Darstellung. Genauere Informationen zu den Änderungen sind im Kapitel Accelerator präsentiert.
|
|
|
|
|
|

|
|
|
|
|
|
Die Anki_Gui verbindet den Vektor mit dem Accelerator Raum. Dabei wird eine Socketverbindung verwendet um den Vektor einzuloggen. Weiteres dazu steht in dem Kapitel Anki_Gui. Sobald ein Statusupdate gesendet wird, kann die Anki_Gui dieses als JSON-Datei empfangen. Die JSON-File wird verarbeitet und der Status wird extrahiert. Der Status kann mit der Funktion send_reaction_to_anki an die API des Ideationtable weitergegeben werden. Eine Funktion namens accelerator verwendet je nach Status eine der vorgegebenen Funktionen des Managers. Die ausführbaren Vectorfunktionen sowie die dazu gehörigen Bilddateien sind unter useCases auffindbar. Diese Funktionen binhalten die Regeln der Hierarchie der Animationen. Diese Hierarchieebenen werden unter Middleware weiter beschrieben. Die Befehle werden im Anschluss an den Vector weitergegeben.
|
|
|
Der Connect verbindet den Vektor mit dem Accelerator Raum. Dabei wird eine Socketverbindung verwendet um den Vektor einzuloggen. Sobald ein Statusupdate gesendet wird, kann der Connect dieses als JSON-Datei empfangen. Die JSON-File wird verarbeitet und der Status wird extrahiert. Der Status kann mit der Funktion send_reaction_to_anki an die API des Ideationtable weitergegeben werden. Eine Funktion namens accelerator verwendet je nach Status eine der vorgegebenen Funktionen des Managers. Die ausführbaren Vectorfunktionen sowie die dazu gehörigen Bilddateien sind unter useCases auffindbar. Diese Funktionen binhalten die Regeln der Hierarchie der Animationen. Diese Hierarchieebenen werden unter Middleware weiter beschrieben. Die Befehle werden im Anschluss an den Vector weitergegeben.
|
|
|
|
|
|

|
|
|
|
... | ... | @@ -80,13 +82,12 @@ Die Kommunikation der einzelnen Serverkomponenten und deren Ports ist in der obe |
|
|
|
|
|

|
|
|
|
|
|
In dem oben aufgeführten Beispiel ist das Sequenzdiagramm für den Prozess Daumen hoch abgebildet.
|
|
|
Die online zugeschaltete Person betätigt den "Daumen hoch"-Knopf im Accelerator ist bereits festgelegt, dass diese Person mit dem Vector verbunden ist. Somit wird die Ausgabe nicht an den Raum, sondern an in einer JSON-Datei an das Anki_GUI Script weitergeleitet. Dieses formt die JSON um und bildet eine API Post Nachricht mit dem Inhalt der JSON-Datei, dem Userstatus "thumbsUP". Die API empfängt den Post und ruft je nach Inhalt der Nachricht eine Funktion des Managers auf. Die thumbsUp_accelerator Funktion wird verwendet um mit dem Manager den Bildschirm und die Motoren des Vectors zu steuern. Der Accelerator bekommt davon keine Rückmeldung.
|
|
|
In dem oben aufgeführten Beispiel ist das Sequenzdiagramm für den Prozess Daumen hoch abgebildet. Die online zugeschaltete Person betätigt den "Daumen hoch"-Knopf im Accelerator ist bereits festgelegt, dass diese Person mit dem Vector verbunden ist. Somit wird die Ausgabe nicht an den Raum, sondern an in einer JSON-Datei an das Connect Script weitergeleitet. Dieses formt die JSON um und bildet eine API Post Nachricht mit dem Inhalt der JSON-Datei, dem Userstatus "thumbsUP". Die API empfängt den Post und ruft je nach Inhalt der Nachricht eine Funktion des Managers auf. Die thumbsUp_accelerator Funktion wird verwendet um mit dem Manager den Bildschirm und die Motoren des Vectors zu steuern. Der Accelerator bekommt davon keine Rückmeldung.
|
|
|
|
|
|
# Accelerator
|
|
|
|
|
|
Um die Statusänderungen an den anki Vector zu senden musste Accelerator leicht modifiziert werden. Das Client Frontend wurde um einen Button erweitert welcher es dem Nutzer erlaubt seinen Status an den Anki zu senden.<br/>
|
|
|
<br/>
|
|
|
Um die Statusänderungen an den anki Vector zu senden musste Accelerator leicht modifiziert werden. Das Client Frontend wurde um einen Button erweitert welcher es dem Nutzer erlaubt seinen Status an den Anki zu senden.\
|
|
|
\
|
|
|
Die `uiEvents.js` wurde dementsprechend erweitert, um in der Variable `controlsAnki` zu speichern ob der Nutzer seine Statusmeldungen an den anki Vector senden will oder nicht.
|
|
|
|
|
|
Bei jeder Aktion welche vom anki Vector dargestellt werden soll, wurden Abfragen eingebaut welche prüfen ob der Nutzer den Anki kontrollieren will. Diese sind zu finden in der `uiEvents.js` in den Bereichen `.toolbar-icon`, wo sich Aktionen wie Daumen-hoch befinden. Bei `$(window).focus` um die Abwesenheit mit dem Anki zu zeigen. Und zuletzt beim `$("#chatInput").keypress` und `$("#chatButtonWrapper").click` um die Chataktivität zu beobachten.
|
... | ... | @@ -103,37 +104,38 @@ Im Folgenden wird das Setup des anki Vectors für die Verbindung mit einem Rechn |
|
|
|
|
|
## Setup des Vectors
|
|
|
|
|
|
DigitalDreamLabs, die Firma hinter Vector, stellt eine SDK in Python bereit, welche die Ansteuerung und Programmierung des Roboters ermöglicht. Sie ist [hier](https://developer.anki.com/vector/docs) zu finden.
|
|
|
DigitalDreamLabs, die Firma hinter Vector, stellt eine SDK in Python bereit, welche die Ansteuerung und Programmierung des Roboters ermöglicht. Sie ist [hier](https://developer.anki.com/vector/docs) zu finden.
|
|
|
|
|
|
Dort steht auch eine ausführliche Beschreibung zur Installation und dem Setup mit Vector bereit. Notwendig ist dafür neben einem Rechner mit einer Python-Installation (für dieses Projekt Version 3.7) ein Smartphone, auf dem die Vector Robot App installiert ist.
|
|
|
|
|
|
[Google Play Store](https://play.google.com/store/apps/details?id=com.anki.vector)
|
|
|
<br/>
|
|
|
[Google Play Store](https://play.google.com/store/apps/details?id=com.anki.vector) \
|
|
|
[App Store](https://apps.apple.com/de/app/vector-robot/id1433999065)
|
|
|
|
|
|
Für die Verbindung mit App und Rechner ist zusätzlich ein anki-Account notwendig. Dieser wurde vom Ideation Table-Team übernommen. Die Zugangsdaten für dieses sowie das zugehörige Gmail-Postfach können bei den Projektverantwortlichen erfragt werden.
|
|
|
|
|
|
Insbesondere bei der Verbindung zwischen Vector, App und WLAN kann es häufiger zu Problemen kommen bzw. länger dauern. DigitalDreamLabs stellt hier einen umfangreichen [Hilfeguide](https://support.digitaldreamlabs.com/article/104-troubleshooting-vectore28099s-connection) bereit.
|
|
|
Insbesondere bei der Verbindung zwischen Vector, App und WLAN kann es häufiger zu Problemen kommen bzw. länger dauern. DigitalDreamLabs stellt hier einen umfangreichen [Hilfeguide](https://support.digitaldreamlabs.com/article/104-troubleshooting-vectore28099s-connection) bereit.
|
|
|
|
|
|
Falls die dort aufgeführten Tipps nicht helfen, kommt man potenziell nicht um einen Reset des Vectors herum. Dabei wird dann zufällig ein neuer Name für den Vector vergeben, was für das weitere Setup beachtet werden sollte.
|
|
|
|
|
|
Nach erfolgreichem Setup des SDKs ist im Root des Benutzers der Ordner .anki-vector zu finden, in dem die sdk_config.ini (mit Name, IP-Adresse, Seriennummer und guid) und sowie das Zertifikat zu finden sind. Diese sollten dort gespeichert bleiben, um eine Verbindung mit Vector so einfach wie möglich herstellen zu können.
|
|
|
|
|
|
Bei Veränderung des WLANs, mit welchem Vector verbunden ist, kommt es häufig zur Änderung der IP-Adresse. Wird diese dann nicht in der sdk_config.ini abgeändert, kann keine Verbindung zu Vector hergestellt werden. Die aktuelle IP kann herausgefunden werden, indem Vector auf seiner Ladestation plaziert wird. Dann muss der Knopf auf seinem Rücken schnell zweimal gedrückt werden. Es wird der Schlüssel angezeigt. Anschließend muss Vectors Schaufel hoch. und runter gehoben werden. Dann sind die IP sowie weitere Informationen von Vectors Bildschirm ablesbar. Zum Verlassen dieses Modus wieder die Schaufel heben und senken.
|
|
|
Eine Video-Demonstration dieses Vorgangs findet sich [hier](https://www.youtube.com/shorts/xasxAovrwiQ)
|
|
|
|
|
|
Bei Veränderung des WLANs, mit welchem Vector verbunden ist, kommt es häufig zur Änderung der IP-Adresse. Wird diese dann nicht in der sdk_config.ini abgeändert, kann keine Verbindung zu Vector hergestellt werden. Die aktuelle IP kann herausgefunden werden, indem Vector auf seiner Ladestation plaziert wird. Dann muss der Knopf auf seinem Rücken schnell zweimal gedrückt werden. Es wird der Schlüssel angezeigt. Anschließend muss Vectors Schaufel hoch. und runter gehoben werden. Dann sind die IP sowie weitere Informationen von Vectors Bildschirm ablesbar. Zum Verlassen dieses Modus wieder die Schaufel heben und senken. Eine Video-Demonstration dieses Vorgangs findet sich [hier](https://www.youtube.com/shorts/xasxAovrwiQ)
|
|
|
|
|
|
# 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/>
|
|
|
<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/>
|
|
|
|
|
|
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.\
|
|
|
\
|
|
|
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.\
|
|
|

|
|
|
|
|
|
## Empfangen der Accelorator Befehle
|
|
|
|
|
|
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:
|
|
|
|
|
|
- thumbup
|
|
|
- thumbdown
|
|
|
- handup
|
... | ... | @@ -144,53 +146,54 @@ Der Weg einer Aktion auf dem Accelerator wird in Abbildung x dargestellt. Die m |
|
|
- cancel
|
|
|
- silent
|
|
|
|
|
|
Jede Animation hat einen eigenen Status. Trotz Management können die Übergänge zwischen Bildschirmanzeigen des Vectors nicht fließend gestaltet werden. Dies lässt die Codestruktur nicht zu.
|
|
|
Demzufolge muss es eine Option geben einen vorherigen Status nicht nur abzubrechen, sondern den Vector anderen Aktionen wieder zur Verfügung zu stellen. Der Status Cancel bricht die vorherige Aktion ab und hinterlässt den Vector in einem Idle Status. Bei jeder Cancel-Aktion werden sowohl die Motoren als auch der Bildschirm auf den Normalstatus gesetzt. Da es keine feste Funktion für das zurücksetzen des Bildschirm gibt, wird eine kurze unaufällige Animation verwendet um den Bildschirm zu bereinigen. Damit sieht ein Wechsel zwischen zwei Bildschirmanimationen wie in Abbildung z gezeigt aus.
|
|
|
|
|
|
Der Vector kann nur begrenzt Aktionen anzeigen. Eine Verbindung mehrerer Aktionen kann andere Aktionen verdecken. Deshalb zeigt der Vector nur eine Aktion zu einem Zeitpunkt an. Über den Accelerator können jedoch mehrere Tasten gleichzeitig ausgelöst werden. Hierzu muss eine Hierarchie der Funktionen festgelegt werden. In der unten angefügten Abbildung sind die 5 Hierarchieblöcke dargestellt.
|
|
|
Der Abbruch einer Aktion muss immer möglich sein. Dementsprechend gehört der Abbruchaktion die höchste Hierarchieebene. Sobald der Zuhörer seine Lautsprecher auf lautlos gestellt hat, kann keine effektive Kommunikation stattfinden. Demzufolge beinhaltet die zweite Hierarchieebene die silence Aktion. Ähnliches gilt für die Pause. Diese wird durch coffee (im Code break genannt) in der dritten Hierarchieebene abgebildet. Auch wenn ein nicht anwesender Zuhörer genauso wenig von der Vorlesung mitbekommt wie ein Zuhörer mit ausgestellten Lautsprechern, sind die Funktionen in verschiedene Hierarchieebenen unterteilt da bei aktivierten Lautsprechern der Zuhörer auditiv auf den Coffee Zustand aufmerksam gemacht werden kann. In der vierten Hierarchieebene finden sich bis auf not-onscreen (im Code afk) alle weiteren Aktionen. Dies basiert auf der Annahme, dass ein Nutzer, der eine Aktion ausführt nicht afk sein kann.
|
|
|
Jede Animation hat einen eigenen Status. Trotz Management können die Übergänge zwischen Bildschirmanzeigen des Vectors nicht fließend gestaltet werden. Dies lässt die Codestruktur nicht zu. Demzufolge muss es eine Option geben einen vorherigen Status nicht nur abzubrechen, sondern den Vector anderen Aktionen wieder zur Verfügung zu stellen. Der Status Cancel bricht die vorherige Aktion ab und hinterlässt den Vector in einem Idle Status. Bei jeder Cancel-Aktion werden sowohl die Motoren als auch der Bildschirm auf den Normalstatus gesetzt. Da es keine feste Funktion für das zurücksetzen des Bildschirm gibt, wird eine kurze unaufällige Animation verwendet um den Bildschirm zu bereinigen. Damit sieht ein Wechsel zwischen zwei Bildschirmanimationen wie in Abbildung z gezeigt aus.
|
|
|
|
|
|
Der Vector kann nur begrenzt Aktionen anzeigen. Eine Verbindung mehrerer Aktionen kann andere Aktionen verdecken. Deshalb zeigt der Vector nur eine Aktion zu einem Zeitpunkt an. Über den Accelerator können jedoch mehrere Tasten gleichzeitig ausgelöst werden. Hierzu muss eine Hierarchie der Funktionen festgelegt werden. In der unten angefügten Abbildung sind die 5 Hierarchieblöcke dargestellt. Der Abbruch einer Aktion muss immer möglich sein. Dementsprechend gehört der Abbruchaktion die höchste Hierarchieebene. Sobald der Zuhörer seine Lautsprecher auf lautlos gestellt hat, kann keine effektive Kommunikation stattfinden. Demzufolge beinhaltet die zweite Hierarchieebene die silence Aktion. Ähnliches gilt für die Pause. Diese wird durch coffee (im Code break genannt) in der dritten Hierarchieebene abgebildet. Auch wenn ein nicht anwesender Zuhörer genauso wenig von der Vorlesung mitbekommt wie ein Zuhörer mit ausgestellten Lautsprechern, sind die Funktionen in verschiedene Hierarchieebenen unterteilt da bei aktivierten Lautsprechern der Zuhörer auditiv auf den Coffee Zustand aufmerksam gemacht werden kann. In der vierten Hierarchieebene finden sich bis auf not-onscreen (im Code afk) alle weiteren Aktionen. Dies basiert auf der Annahme, dass ein Nutzer, der eine Aktion ausführt nicht afk sein kann.
|
|
|
| Animation | Hierarchieebene |
|
|
|
| ------ | ------ |
|
|
|
|-----------|-----------------|
|
|
|
| cancel | 1 |
|
|
|
| silence | 2 |
|
|
|
| coffee | 3 |
|
|
|
| applause, chatMessage, handup, thumbsUp, thumbsDown | 4 |
|
|
|
| not-onscreen | 5 |
|
|
|
|
|
|
|
|
|
## Animationen
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
Für folgende Accelerator-Funktionen wurden Vector-Animationen erstellt:
|
|
|
|
|
|
### Daumen hoch/runter
|
|
|
### Daumen hoch/runter
|
|
|
|
|
|
Für die Anzeige, dass der "Daumen Hoch"-Button des Teilnehmers in Accelerator geklickt wurde, hebt Vector seinen Kopf an und zeigt ein Bild mit einem grünen Haken auf weißem Untergrund. Für den "Daumen runter" ist es ein rotes X auf weißem Untergrund.
|
|
|
|
|
|
### Meldung
|
|
|
|
|
|
Bei der Meldung eines Teilnehmenden hebt Vector seine Schaufel hoch und sagt "Meldung". Die Meldung (gehobene Schaufel) bleibt so lange bestehen, bis die Hand wieder gesenkt wird.
|
|
|
|
|
|
### Away from Window (gestrichenes Auge)
|
|
|
|
|
|
Um die Abwesenheit/Unaufmerksamkeit des Teilnehmenden zu verdeutlichen, werden Vectors Augen bei diesem Status weiß. Außerdem schaut Vector gelangweilt in der Gegend umher.
|
|
|
|
|
|
### Klatschen
|
|
|
|
|
|
Vector signalisiert das Klatschen mit dem schnellen Klopfen seiner Schaufel.
|
|
|
|
|
|
### Kaffeepause
|
|
|
|
|
|
Für diesen Status schläft Vector ein: Er senkt seinen Kopf, "schließt" seine Augen und macht leise Schnarchgeräusche.
|
|
|
|
|
|
### Chatnachricht
|
|
|
|
|
|
Die Ankunft einer Chatnachricht wird von Vector durch das Einblenden eines Umschlag-Icons auf seinem Bildschirm angezeigt. Um hier eine gute Sichtbarkeit zu gewährleisten, hebt er zusätzlich seinen Kopf an.
|
|
|
|
|
|
### Arbeitsfluss in der Vorlesung ungestört mit den Vector beiwohnen
|
|
|
|
|
|
Eine der Herausforderungen beschreibt die Anwesentheit über den Vector ohne den Fluss der Vorlesung zu stören. Hierzu müssen die Animationen eindeutig und möglichst leise ausgeführt werden. Ein lautes Klatschen oder wildes Manövieren des Vectors können sind in dieser Situation nicht möglich.
|
|
|
Dementsprechend sind alle unten aufgeführten Animationen leise und lenken die Aufmerksamkeit nur auf den Vector, sobald dies nötig ist. Ein Beispiel hierfür ist die Sprachausgabe "Meldung" sobald eine Meldung von den Lehrpersonal erfassst werden muss. Die Animationen müssen inklusiv gestaltet werden. Der Fokus liegt hierbei auch auf Menschen mit einer Farbsichtigkeitsschwäche. Um falsch interpretierte Farben zu vermeiden wird neben der roten und grünen Farbe bei Abstimmungen ein Icon vor weißem Hintergrund verwendet. Dies garantiert eine eindeutige Ersichtlichkeit.
|
|
|
|
|
|
Eine der Herausforderungen beschreibt die Anwesentheit über den Vector ohne den Fluss der Vorlesung zu stören. Hierzu müssen die Animationen eindeutig und möglichst leise ausgeführt werden. Ein lautes Klatschen oder wildes Manövieren des Vectors können sind in dieser Situation nicht möglich. Dementsprechend sind alle unten aufgeführten Animationen leise und lenken die Aufmerksamkeit nur auf den Vector, sobald dies nötig ist. Ein Beispiel hierfür ist die Sprachausgabe "Meldung" sobald eine Meldung von den Lehrpersonal erfassst werden muss. Die Animationen müssen inklusiv gestaltet werden. Der Fokus liegt hierbei auch auf Menschen mit einer Farbsichtigkeitsschwäche. Um falsch interpretierte Farben zu vermeiden wird neben der roten und grünen Farbe bei Abstimmungen ein Icon vor weißem Hintergrund verwendet. Dies garantiert eine eindeutige Ersichtlichkeit.
|
|
|
|
|
|
# Anpassungen an der Ideation Table
|
|
|
Für die Verbindung zwischen Accelerator und Vector wurde auf dem [Ideation Table Projekt](https://gitlab.reutlingen-university.de/ksystem/ideation-table) aufgebaut. Für mehr Informationen zur Architektur des Projektes kann das Wiki dessen aufgerufen werden.
|
|
|
|
|
|
Für die Verbindung zwischen Accelerator und Vector wurde auf dem [Ideation Table Projekt](https://gitlab.reutlingen-university.de/ksystem/ideation-table) aufgebaut. Für mehr Informationen zur Architektur des Projektes kann das Wiki dessen aufgerufen werden.
|
|
|
|
|
|
Im Großen und Ganzen konnte das Ideation Table-Projekt für die Verbindung zum anki Vector übernommen werden. Die Animationen des Ideation Tables wurden nicht genutzt, allerdings die Infrastruktur für die Übermittlung von API-Anfragen.
|
|
|
|
... | ... | @@ -204,10 +207,13 @@ Konkret wurden folgende Änderungen vorgenommen: |
|
|
* Hinzufügen der Vector-Aktionen/Use Cases: Für das Funktionieren der Aktionen müssen diese in der API, der config.json und dem Manager hinzugefügt werden.
|
|
|
|
|
|
# Setup
|
|
|
|
|
|
In den folgenden Abschnitten wird das Setup der einzelnen Komponenten erläutert, welche für das Funktioneren der Vector-Accelerator-Verbindung notwendig sind.
|
|
|
|
|
|
## Setup Ideation Table
|
|
|
Benötigte Dependencies (Installation mit pip install [package name]):
|
|
|
## Setup Ideation Table
|
|
|
|
|
|
Benötigte Dependencies (Installation mit pip install \[package name\]):
|
|
|
|
|
|
* anki_vector
|
|
|
* zeroconf
|
|
|
* flask-cors
|
... | ... | @@ -215,20 +221,20 @@ Benötigte Dependencies (Installation mit pip install [package name]): |
|
|
|
|
|
Für das korrekte Funktionieren sollte, wie bereits angesprochen, Python Version 3.7 verwendet werden.
|
|
|
|
|
|
Wichtig ist hierbei, dass in der src/config.json unter "vectors" der richtige Vektor eingestellt ist. Dazu einfach die aktuellen Daten (Name und Seriennummer) mit denen des Vectors, der verbunden werden soll, ersetzen.
|
|
|
Wichtig ist hierbei, dass in der src/config.json unter "vectors" der richtige Vektor eingestellt ist. Dazu einfach die aktuellen Daten (Name und Seriennummer) mit denen des Vectors, der verbunden werden soll, ersetzen.
|
|
|
|
|
|

|
|
|
|
|
|
Zusätzlich ist auf die Einstellungen, die unter "Setup des Vectors" beschrieben sind, zu beachten. Sind diese Voraussetzungen erfüllt, kann in das verzeichnis src/backend navigiert werden. Abschließend mit dem Kommando "python main.py" den Server starten. Die Verbindung zu Vector wird hergestellt. Hat alles geklappt, sagt Vector "Connection! Backend connected to me".
|
|
|
Zusätzlich ist auf die Einstellungen, die unter "Setup des Vectors" beschrieben sind, zu beachten. Sind diese Voraussetzungen erfüllt, kann in das verzeichnis src/backend navigiert werden. Abschließend mit dem Kommando "python main.py" den Server starten. Die Verbindung zu Vector wird hergestellt. Hat alles geklappt, sagt Vector "Connection! Backend connected to me".
|
|
|
|
|
|
## Setup Middleware
|
|
|
|
|
|
Die Middleware kommuniziert mit Accelerator über das [python-socketio package](https://python-socketio.readthedocs.io/en/latest/index.html). Bei der Installation der benötigten Dependencies muss auf die kompatibilität mit dem JavaScript socket-io protocol geachtet werden. Die aktuelle Kompatilibätsmatrix ist auf der Website des Erstellers von python-socketio zu finden [Version compatibility](https://python-socketio.readthedocs.io/en/latest/intro.html#version-compatibility).
|
|
|
|
|
|

|
|
|
|
|
|
Die socket-io Version vom Accelerator kann in der package.json im Accelerator Repository nachgelesen werden. Aktuell verwendet Accelerator Version 2.3.x von socket-io.
|
|
|
Die benötigten Dependencies können mit "pip install [package name]==[version number]" installiert werden.<br/>
|
|
|
`pip install python-engineio==3.14.2`<br/>
|
|
|
Die socket-io Version vom Accelerator kann in der package.json im Accelerator Repository nachgelesen werden. Aktuell verwendet Accelerator Version 2.3.x von socket-io. Die benötigten Dependencies können mit "pip install \[package name\]==\[version number\]" installiert werden.\
|
|
|
`pip install python-engineio==3.14.2`\
|
|
|
`pip install python-socketio==4.6.1`
|
|
|
|
|
|
# Evaluation
|
... | ... | @@ -237,8 +243,7 @@ Um das Verständnis und die Nutzerfreundlichkeit der Vector-Funktionen zu testen |
|
|
|
|
|
Dazu wurde den Teilnehmenden das Setup erklärt sowie die Aktionen des Vectors präsentiert. Es wurde anschließend nach dem Eindruck der Funktionen und Verbesserungsvorschlägen gefragt. Außerdem wurde der SUS ausgefüllt.
|
|
|
|
|
|
Testperson 1
|
|
|
Student, männlich, 22
|
|
|
Testperson 1 Student, männlich, 22
|
|
|
|
|
|
* Funktionen waren verständlich
|
|
|
* hilfreich, um den Remote-Teilnehmer präsenter zu haben
|
... | ... | @@ -252,6 +257,7 @@ SUS: |
|
|
Gesamtscore: 92,5
|
|
|
|
|
|
# Ausblick
|
|
|
|
|
|
Aktuell ist das System darauf ausgelegt das ein Remote Person sich mit einem anki Vector im vor Ort Meeting verbindet. Eine mögliche Erweiterung wäre das hinzufügen von weiteren anki Vector Robotern und die Untersuchung inwieweit die Awareness der Online Nutzer gesteigert werden kann. oder die anki Vector Roboter eher stören, da die Aufmerksamkeit bei vielen Online Teilnehmern eher auf dem Rechner als auf den Personen vor Ort liegt.
|
|
|
|
|
|
Weitere potentielle Erweiterungen könnten dem Online Teilnehmer mehr Kontrolle über den anki Vector geben, um zum Beispiel auf Notizen auf dem Tisch vor Ort zu zeigen indem der anki Vector sich dreht oder zu den Notizen fährt. |
|
|
Weitere potentielle Erweiterungen könnten dem Online Teilnehmer mehr Kontrolle über den anki Vector geben, um zum Beispiel auf Notizen auf dem Tisch vor Ort zu zeigen indem der anki Vector sich dreht oder zu den Notizen fährt. |
|
|
\ No newline at end of file |