|
|

|
|
|
|
|
|
#Inhaltsangabe
|
|
|
# Inhaltsverzeichnis
|
|
|
|
|
|
1. [Einleitung](#einleitung)
|
|
|
2. [Projektziel](#projektziel)\
|
... | ... | @@ -11,9 +11,8 @@ |
|
|
4. [Accelerator](#accelerator)
|
|
|
5. [Anki Vector](#anki-vector)
|
|
|
6. [Middleware](#middleware)
|
|
|
7. [Evaluation](#evaluation)
|
|
|
8. [Setup](#setup)
|
|
|
9. [Noch offene Tasks](#noch-offene-tasks)
|
|
|
7. [Setup](#setup)
|
|
|
8. [Evaluation](#evaluation)
|
|
|
|
|
|
|
|
|
# Einleitung
|
... | ... | @@ -23,41 +22,36 @@ Das Projekt "anki Vector Verbindung" wurde im Sommersemester 2022 von |
|
|
- Patrick Schmutz (patrick.schmutz@student.reutlingen-university.de)
|
|
|
- Kristina Wagner (kristina.wagner@student.reutlingen-university.de)
|
|
|
|
|
|
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 folgendes Video von heise online: https://www.youtube.com/watch?v=tsDUavPVQ2Y
|
|
|
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).
|
|
|
|
|
|
# Projektziel
|
|
|
|
|
|
Zielsetzung des Projektes war es, die Verbindung zwischen dem Accelerator und Vector herzustellen, um so die verschiedenen Reaktionen und Aktionen, die ein Nutzer im Accelerator durchführen kann, 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.
|
|
|
|
|
|
|
|
|
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
|
|
|
* Accelerators muss den Vector in die Nutzerverwaltung aufnehmen können
|
|
|
* Vector muss jeden Raum betreten können
|
|
|
* ein Nutzer muss sich mit dem Vector verbinden können
|
|
|
* Nutzerbefehle müssen an den Vector geschickt werden können
|
|
|
* die Nutzerbefehle müssen alle von dem Vector umgesetzt werden können
|
|
|
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
|
|
|
* 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. Aktionen müssen ersichtlich sein
|
|
|
2. Aktionen dürfen nicht den Unterricht stören
|
|
|
3. Mit dem Bildschirm kann nur eine Aktion angezeigt werden
|
|
|
4. Vektor kann nicht im WLAN der Hochschule verwendet werden
|
|
|
5. Vector verbindet sich in unregelmäßigen Abständen neu
|
|
|
6. Vectors Anwendungen sind auf zeitlich festgelegte Animationen ausgelegt
|
|
|
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.
|
|
|
|
|
|
## Projektplan
|
|
|
|
|
|
Neben der Verbindungsherstellung zwischen Vector und Accelerator sind auch die Animationen auszuarbeiten, welche für die verschiedenen Accelerator-Funktionen stehen sollen. Diese Aufgabenblöcke wurden zwischen den Teammitgliedern aufgeteilt. Der genaue Zeitplan inklusive Aufgabenverteilung ist untenstehend zu finden.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
Der Zeitplan wurde erstellt, bevor klar war, dass auf dem [Ideation Table](https://gitlab.reutlingen-university.de/ksystem/ideation-table)-Projekt aufgebaut werden kann. Demenetsprechend kam noch die Einarbeitung in dieses Projekt hinzu, sowie das Einfügen der entwickelten Vector-Funktionen in das Ideation Table-System. Mehr zu diesen Änderungen ist im Abschnitt [ADD NAME] zu finden.
|
|
|

|
|
|
|
|
|
Somit ergaben sich letztendlich die folgenden Aufgabenblöcke:
|
|
|
Untenstehend ist noch einmal die Auflistung der Aufgabenpakete zu finden:
|
|
|
|
|
|
1. Einarbeitung in Accelerator
|
|
|
2. Einarbeitung in Ideation Table
|
... | ... | @@ -90,27 +84,44 @@ Die online zugeschaltete Person betätigt den "Daumen hoch"-Knopf im Accelerator |
|
|
|
|
|
# Accelerator
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
|
# Anki Vector
|
|
|
# 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.
|
|
|
|
|
|
## Setup des Vectors
|
|
|
DigitalDreamLabs stellt eine Vector SDK in Python bereit, welche die Ansteuerung und Programmierung des Roboters ermöglicht. Sie ist unter folgendem Link zu finden: https://developer.anki.com/vector/docs
|
|
|
Dort steht auch eine ausführliche Beschreibung zur Installation und dem Setup mit Vector bereit.
|
|
|
|
|
|
Es wurde der anki-Account des Ideation Table-Teams übernommen. Die Zugangsdaten für dieses sowie das zugehörige Gmail-Postfach können bei den Projektverantwortlichen erfragt werden.
|
|
|
## Vector Zertifikate
|
|
|
Das SDK muss korrekt auf dem zu verwenden PC installiert sein und die sdk_config.ini sowie das Zertifikat für den zu verwendenden Vector im Root-Verzeichnis des Benutzers /.anki-vector liegen, um eine Verbindung zu einem Vector-Roboter herstellen zu können.
|
|
|
DigitalDreamLabs, die Firma hinter Vector, stellt eine VSDK 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)
|
|
|
[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.
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
# Middleware
|
|
|
|
|
|
TBD
|
|
|
|
|
|
## Empfangen der Accelorator Befehle
|
|
|
|
|
|
TBD
|
|
|
|
|
|
## Management der Animationen
|
|
|
Der Weg einer Aktion auf dem Accellerator 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 Stati sind vorhanden:
|
|
|
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
|
... | ... | @@ -145,7 +156,7 @@ Für folgende Accelerator-Funktionen wurden Vector-Animationen erstellt: |
|
|
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 eine Person Vector über den goldenen Rücken streicht (und den meldenden Teilnehmenden so drannimmt).
|
|
|
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.
|
... | ... | @@ -166,53 +177,49 @@ Dementsprechend sind alle unten aufgeführten Animationen leise und lenken die A |
|
|
|
|
|
|
|
|
# Anpassungen an der Ideation Table
|
|
|
Im Großen und Ganzen konnte das Ideation Table-Projekt für die Verbindung zum anki Vector übernommen werden. Lediglich die Videofeed-Funktion musste entfernt werden, da diese aufgrund von Versionskonflikten nicht mehr funktionsfähig war. Die Animationen des Ideation Tables wurden nicht genutzt, allerdings die Infrastruktur für die Übermittlung von API-Anfragen.
|
|
|
|
|
|
Die für dieses Projekt angepasste Version ist auf dem Branch [ADD NAME] zu finden.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
Die für dieses Projekt angepasste Version ist in dem Projekt auf dem Branch accelerator_project zu finden.
|
|
|
|
|
|
Konkret wurden folgende Änderungen vorgenommen:
|
|
|
|
|
|
#Evaluation
|
|
|
* Entfernung des Webclients: Da die Kommunikation mit Vector über den Accelerator und ein neu erstelltes Skript geschieht, kann der Webclient für dieses Projekt außer Acht gelassen werden.
|
|
|
* Entfernung der Videofeed-Funktion: Aufgrund eines Versionsproblems wurde die Videofunktion entfernt, da sie für die Umsetzung des Projektes nicht notwendig ist.
|
|
|
* Änderung der Aktionsstruktur: Die Accelerator-Funktionen werden nicht mehr über Actions gesteuert, sondern in ähnlicher Manier als Use Cases.
|
|
|
* 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
|
|
|
##
|
|
|
## Setup Ideation Table
|
|
|
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 Code
|
|
|
Benötigte Dependencies für die Funktionsfähigkeit des ankis:
|
|
|
## Setup Ideation Table
|
|
|
Benötigte Dependencies (Installation mit pip install [package name]):
|
|
|
* anki_vector
|
|
|
* zeroconf
|
|
|
* flask-cors
|
|
|
* flasgger
|
|
|
|
|
|
Für das korrekte Funktionieren sollte Python Version 3.7 verwendet werden.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
Starten der Ideation Table durch Navigation zu /ideation-table/src/backend -> Ausführen des Befehls python main.py. 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
|
|
|
Benötigte Dependencies:
|
|
|
Benötigte Dependencies (Installation mit pip install [package name]==[version number]):
|
|
|
python-engineio, Version 3.14.2
|
|
|
python-socketio, Version 4.6.1
|
|
|
|
|
|
|
|
|
Navigation zum Verzeichnis, in dem connect.py liegt, Befehl python connect.py.
|
|
|
|
|
|
TBD
|
|
|
|
|
|
|
|
|
# Evaluation
|
|
|
|
|
|
Um das Verständnis und die Nutzerfreundlichkeit der Vector-Funktionen zu testen, wurden informelle Nutzertests durchgeführt.
|
|
|
|
|
|
|
|
|
## Noch offene Tasks
|
|
|
Navigation zum Verzeichnis, in dem connect.py liegt, Befehl python connect.py. |
|
|
\ No newline at end of file |
|
|
TBD |