Furhat 101
Erfahrungen mit dem "soziale" Roboter im SimDeC
In diesem Tutorial sammeln wir unsere Erfahrungen im Umgang mit dem Furhat.
Allgemeines
Der SDK-Launcher ("virtuellen" Furhat, passendes Web-Interface, Skills starten) ist zur Benutzung virtuellen Furhats notwendig. IntelliJ Idea und JDK werden benötigt, um Skills zu kompillieren und zu erstellen.
- SDK-Launcher installieren (SDK-Download
- Erfordert eine Registrierung. Für Studierende der OST & SimDeC-Partner: wir können hier gesammelt persönliche Accounts beantragen.
- Accounts können aber auch unabhängig vom SimDeC beantragt werden.
- Java 8 JDK bzw. OpenJDK 8 ist installiert.
- Ubuntu: OpenJDK ist im Softwarechenter enthalten
- IntelliJ IDEA ist installiert
- Ubuntu: IDEA ist im Softwarecenter enthalten
"echter" Furhat
- Verkabelung: Externes Mikrofon und Netzteil einstecken
- Einschalten: Knopf über den USB-Steckern und neben der Versorgungsspannung kurz drücken (Nicht mit dem Drehrad verwechseln)
- Erfolgskontrolle: Das externe Mikrofon leuchtet beim einschalten kurz auf.
- Web-Interface öffnen: IP-Adresse in den Browser eingeben
- Die IP-Adresse kann über das Drehrad abgerufen werden.
- Achtung: Die IP-Adresse unterscheidet sich, je nachdem ob über WLAN oder LAN auf den Furhat zugegriffen wird.
virtueller Furhat
- SDK-Launcher starten
- Auf "Launch SDK" klicken (ggf. vorher Updates ausführen)
- Ein Fenster mit dem virtuellen Furhat öffnet sich
- Auf "open web Interface" klicken - um auf die Steuerung des Furhat zuzugreifen
- Auf "Start skill" klicken, um einen Skill zu laden
Vorbereitung
- Beispiel-Skills herunterladen: https://github.com/FurhatRobotics/example-skills
- Web-Interface öffnen (via IP beim "echten" Furhat oder SDK-Launcher beim virtuellen Furhat)
- Skill kompillieren (Ab Minute 3:00):
- Datei: build.gradle in InelliJ IDEA (als Project) öffnen, z.B. ./example-skills/dialogFlow/build.gradle
- [Je nach Skill wird einiges an Dateien wird heruntergeladen]
- Im DialogFlow auf "main.tk" klicken
- Gradle-Toolbar (rechter Bildschirmrand, vertikale Schrift) anklicken
- Tastks>ShadowJar anklicken (run)
- Kompillieren abwarten
- Datei: build.gradle in InelliJ IDEA (als Project) öffnen, z.B. ./example-skills/dialogFlow/build.gradle
Skill installieren - "echter Furhat"
- Auf Web-Interface wechseln
- In der Navigationsleiste "Skills" auswählen
- "Import Skill" anklicken
- .skill-Datei auswählen
Skill öffnen - virtueller Furhat
Skill starten
- "echter" Furhat
- In der Menüleiste im Bereich "Skills" einen bereits installierten Skill mit "Start" aufrufen.
- virtueller Furhat (Hier gibt es keinen Bereich "Skills" in der menüleiste)
- Web-Interface öffnen (via Launcher)
- "Start Skill" auswählen
- .skill-Datei auswählen (Der Skill startet automatisch)
Dashboard
- Im Dashboard kann der Skill beobachtet werden:
- Kameraansicht - hier kann über den violetten Kreis der Kopf von Furhat manuell bewegt werden.
- Attending: Hier wird beschrieben, ob eine Person fokussiert wird
- Sprachbereich: Hier wird die Sprachausgabe und Spracheingabe dokumentiert.
- Show Intent: Hier wird die abgeleitete Absicht (Grün) offengelegt
Wizard
- Mit dem Wizard kann in einen Skill eingegriffen werden
- Kopfbewegung: Der Kopf kann mit dem violetten Kreis bewegt werden.
- Sprachaussagen können über die Textzeile und den Play-Button ergänzt werden.
- Je nach Skill können auch Interaktionselemente wie Tasten verfügbar sein.
Programmierumgebung öffnen
- Blockly-Skill herunterladen: Der Blockly-Skill ist unter https://furhat.io/downloads verlinkt (Login notwendig).
- Blockly-Skill (ggf. zuerst installieren und) starten
- Im Web-Interface ist neben der Schaltfläche, die den Skill beendet ein Schalter "Build Blockly Flow"
Weiterführend: https://docs.furhat.io/tutorials/blockly/
Run
- Startet das Programm bzw. die Interaktion
- Manchmal muss mit "Save" gespeichert werden, bevor Änderungen wirksam werden.
Stop
- Beendet das Programm bzw. die Interaktion
Test Selected
Save
- Speichert - (aber nicht auf die Festplatte! (vgl. Import/Export)
- Manchmal notwendig, um Änderungen wirksam zu machen.
Load
- Öffnet den letzten gespeicherten Zustand.
Clear
- Setzt die Programmierfläche zurück (Strg + Z für Rückgängig)
Import
- Importiert Skills
- Achtung: Überschreibt auch gespeicherte (--> Save) Zustände
Export
- Speichert als XML-File
Open GUI
- GUI = Grapical User Interface - Grafische Benutzeroberfläche
- Öffnet die Reacht-APP
Erste Schritte
Damit Furhat deutsch versteht, muss eine Deutsche Stimme eingestellt werden
- Speech > Voice
- Amazon Polly (Virtual Furhat und SimDeC-Furhat)
- Hans (de-DE)
- Marlene (de-DE)
- Vicki (de-DE)
- Accapella (nur SimDeC-Furhat)
- Amazon Polly (Virtual Furhat und SimDeC-Furhat)
Weiterlesen
Masken, Texturen, Stimmen
Im SimDeC können für den Furhat folgende "Mask Models" gewählt werden.
- adult (Erwachsene)
- anime ("Comic")
- child (Kind)
- pug (Hund)
Als "real" assoziierte Texturen
- Angelina
- Anne
- Arnold
- Barack
- Fedora
- Jack
- Marty
- Max
- Olof
Als "künstlich" assoziierte Texturen
- Arianna
- August
- Cardi
- Elsa
- Fred
- Geremy
- Ivan
- Mei
- Rene
- Ted
- Ursula
Funktionale Texturen
- blank
- default
Weiterlesen
- blank
- default
Acapela (nur für wissenschaftliche Zwecke)
- Lea22k_HQ (de-DE) - Acapela
- Klaus
- Klaus22k_HQ (de-DE) - Acapela
- Klaus22k_CO (de-DE) - Acapela
- Claudia
- Claudia22k_HQ (de-DE) - Acapela
- Claudia 22k_CO (de-DE) - Acapela
- ClaudiaSmile22k_HQ (de-DE) - Acapela
- Jonas22k_HQ (de-DE) - Acapela
- Sarah22k_HQ (de-DE) - Acapela
- Julia
- Julia22k_HQ (de_DE) - Acapela
- Julia22k_CO (de-DE) - Acapela
- Andreas22k_HQ (de-DE) - Acapela
Amazon Polly
- Marlene (de-DE) - Amazon Polly
- Vicki
- Vicki-Neural (de-DE) - Amazon Polly
- Vicki (de-DE) - Amazon Polly
- Hans (de-DE) - Amazon Polly
Weiterlesen
Blockly
- Schwarz kennzeichnet Zustände und Auslöser (Trigger). Sie werden genutzt, um Handlungsszenarien oder Sinnabschnitte zu gliedern.
- Violett kennzeichnet Interaktionen des Furhat. Sie werden gemeinsam mit den grünen Äusserungen genutzt, um Interaktion zu steuern.
- Rot kennzeichnet logische Operatoren und Berechnungen. Sie werden genutzt, um Berechnungen durchzuführen oder entscheidungen jenseits des (violetten/Control) "If-Then-Else" umzusetzen.
- Grün kennzeichnet mimische oder verbale Äusserungen des Furhat. Sie legen die Inhalte des Gesagten bzw. der Mimik fest.
- Rosa kennzeichnet Variablen und Verbale Äusserungen des Furhat. Sie können im Gegensatz zu den grünen Äusserungen nicht gestapelt werden - sind also eher für kürzere Aussagen geeignget.
- Gelb kennzeichnet Bedeutungen. Sie werden genutzt, um Synonyme Bedeutungen aufzugreifen.
- Freitext-Parameter
- bezeichnen Variablen oder Bausteine. Sie legen damit Namen fest, mit denen einzelne Funktionen oder Parameter abgerufen werden können.
- beinhalten Werte (z.B. URLs, Zahlenwerte) die weiterverarbeitet werden.
- Textbausteine legen Sprachinhalte fest, die von Furhat ausgesprochen oder gehört werden sollen.
- Farben: Sind im Schnellwahlmenü als "grün", "blau", "rot" und "gelb" auswählbar.
- Drop-Down-Listen: ermöglichen die Auswahl (1 von vielen) vorgegebener Parameter
- Häkchen setzen den Wert 1 oder 0 für Häckchen gesetzt oder nicht gesetzt.
- Logische Operatoren ermöglichen die Verarbeitung von Variablen.
State
- State [state1] on entry
- Legt eine Aktion oder Handlungsabfolge beim Betreten des Nahebereichs fest.
- State [state1] inherits [parentState] on Entry
- ?
- State [CONFIRM] On entry Ask [TEXT]
- Erfordert eine Ja/Nein Entscheidung beim betreten des Nahebereichs
Trigger User
- User enters
- Legt eine Aktion beim Betreten des Nahebereichs fest
- [ANY] user leaves
- Legt eine Aktion beim Verlassen des Nahebereichs fest
- Wahloptionen: Any / Current / Other
- User says [hello]
- Legt eine Aktion für ein Kurzes Wort fest
- User says
- Legt eine Aktion für einen rosa Satzbaustein oder Variable fest
- User says something
- legt eine Aktion für einen grünen Satzbaustein fest.
- User is silent
- Legte eine Aktion für Schweigen fest
- [Any] user attends Furhat
- ? Reagiert auf das Ansehen von Furhat?
- Wahloptionen: Any / Current / Other
- [Any] user attends other
- ? Reagiert auf ein gegenseitiges Ansehen im Publikum?
- Wahloptionen: Any / Current / Other
- [Any] user smiles
- Reagiert auf ein Lächeln einer Person
- Wahloptionen: Any / Current / Other
Trigger Other
- Wizard [Button]
- Wizzard [Button] color []
- Repeat [1000] to [2000] ms
- After entry [1000] ms
- Event [Event]
- On reentry
Speech
- Say
- Rosa: Sagt einen kurzen Text oder eine Variable
- grün: Sagt einen langen Text
- Ask
- Entspricht einer Kombination aus "Say" + "Listen"
- Listen
- Wartet auf eine Antwort
- Voice
- Hier kann die Stimme ausgewählt werden.
- Das Sprachpaket von Virtuellem und "echtem" Furhat kann entsprechend der verfügbaren Lizenzen sich unterscheiden
- Die Stimmen von Amazon Poly sind hier gelistet: https://docs.aws.amazon.com/de_de/polly/latest/dg/voicelist.html
- Deutschsprachige Stimmen sind:
- Marlene
- Viki
- Hans
- Stop speaking
Face
Verfügbare Ausdrucksformen:
- BigSmile - Grinsen mit Augenbrauen
- Blink - Zwinkern
- BrowFrown - Augenbrauen nach unten
- BrowRaise - Augenbrauen nach oben
- CloseEyes - Augen schliessen
- ExpressAnger - Wut ausdrücken
- ExpressDisgust - Ekel
- EspressFear - Angst
- ExpressSad - Traurigkeit
- GazeAway - Abdriften (mit den Augen)
- Nod - Nicken
- Oh - Erstaunen
- OpenEyes - Augen öffnen
- Roll - Kopf neigen (links-rechts)
- Shake - Kopf schütteln
- Smile - Lächeln
- Surprise - Überraschung
- Thougful - Nachdenklich
- Wink - Zwinkern mit einem Auge
- Gesture [Bigsmile]
- Gesichtsausdruck steuern
- Gesture [Bigsmile] Strength [1.0] Duration [1.0]
- Gesichtsausdruck in Stärke und Dauer steuern
- Set face mask [adult]
- Maske festlegen (muss physisch gewechselt werden)
- Set charakter [default]
- Masken-Projektion festlegen (ist eingeschränkt, je nach Maske)
- Set LED solit [farbe]
- Sockel-LED leuchten lassen
- Verschiedene vordefinierte Farbtöne
- Set LED solid
- Sockel-LED leuchten lassen
- per Individueller RGB-Farbanteilsbestimmung
Attention
- Attend [that user]
- Person im Raum ansehen
- Auswahloptionen
- that user
- current user
- other user
- random user
- closest user
- all users
- nobody
- Attend angle ↔ [0] ↕ [0]
- Blickrichtung (Neigung und Drehung des Kopfs) festlegen (schauen auf)
- Attend random angle [-30]↔[30] [-15]↕[15]
- Zufällige Blickrichtung festlegen (Bereich von/bis: links/rechts, oben/unten)
Action
- Send [event_name]
- Raise [event_name]
- Log [TEXT]
- Start logging Cloud token []
- Stop logging
GUI
- Glear GUI
- Show image [url]
- Show Video [YouTube URL] Mute Video []
- Show website [Website URL]
- Show Options
- Option title [name] image [url] onClick goto [state]
- Option title [name] image [url] onClick goto [state]
- Option title [name] image [url] onclick goto [state]
- Form tilte [title]
- Form field [label]
- onSubmit Button goto [state] Webhook [url]
- Form field [label]
Wait
- Wait [100] ms
- Wait for [Presenter-Next]
- Auswahloptionen:
- Presenter - Next / Previous / Hide / Play
- Keyboard: A, B, C, D, E, F, G, H
- Auswahloptionen:
- Wait for event [EVENT]
- Wait for wizard [BUTTON]
Transition
- Goto [state1]
- Call [state1]
- Parallel [state1] Abort on exit ☑
- Reentry
- Terminate
Control
- If-Then-Else
- Random - Random block - Random block
- Random block
Settings
- Set maximum number of users to [2] Set engagemetn distance to [1.0] meters
Condition
- Vergleich [<]
- Optionen: <, <=, =, >, >=, !=, &&, ||
- Verknüpfung [AND]
- Optionen: and, or
- NOT
- has users
- Number of users [>] [1]
- Optionen: <, <=, =, >, >=, !=, &&, ||
- Ganzzahl
- [Variable] ist true
- Furhat is attended by [ANY] user
- Optionen: Any, Current, Other
- Furhat is speaking
- Furhat is listening
Value
- Text
- What the user said
- Random joke
- Number of users
- Rechnen: [1] [-] [1]
- Optionen. Minus, Plus, Mal, Geteilt
- Random [1] to [10]
- Red/Green/Blue
- Optionen: jeweils 0 bis 255
- Hue/Saturation/Brightnes
- Optionen: jeweils 0 bis 255
Variable
- Set [Variable] to
- Increase [Variable] by [1]
- Variable
Utterance
- [hello]
- Gesture [BigSmile]
- Value
- Audio [URL] [TEXT]
- Delay [100] ms
- Action
- Random - Random block - Random block
- Random block
Verfügbare Ausdrucksformen:
- BigSmile - Grinsen mit Augenbrauen
- Blink - Zwinkern
- BrowFrown - Augenbrauen nach unten
- BrowRaise - Augenbrauen nach oben
- CloseEyes - Augen schliessen
- ExpressAnger - Wut ausdrücken
- ExpressDisgust - Ekel
- EspressFear - Angst
- ExpressSad - Traurigkeit
- GazeAway - Abdriften (mit den Augen)
- Nod - Nicken
- Oh - Erstaunen
- OpenEyes - Augen öffnen
- Roll - Kopf neigen (links-rechts)
- Shake - Kopf schütteln
- Smile - Lächeln
- Surprise - Überraschung
- Thougful - Nachdenklich
- Wink - Zwinkern mit einem Auge
Built-in Intent
- Yes
- No
- I don't know
- Maybee
- Greeting
Define Intent
- examples [Example]
- examles [Examöle] entities
- entity
- example
- Define [INTENT]
- [INTENT]
Entity
- Number → [Variable]
- Name→ [Variable]
- Color→ [Variable]
- Date→ [Variable]
- Time→ [Variable]