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
Weiterführend: https://docs.furhat.io/getting_started/ Weiterlesen


"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
Weiterlesen


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

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

  • Web-Interface öffnen (via Launcher)
  • "Start Skill" auswählen
  • .skill-Datei auswählen (Der Skill startet automatisch)
  • Weiterlesen


    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.
    Weiterlesen


    Programmierumgebung öffnen

    1. Blockly-Skill herunterladen: Der Blockly-Skill ist unter https://furhat.io/downloads verlinkt (Login notwendig).
    2. Blockly-Skill (ggf. zuerst installieren und) starten
    3. 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
    Weiterlesen

    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)
    Weiterlesen

    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)
    Für die Maske "adult" (Erwachsene) können verschiedene Texturen (Gesichts-Ausprägungen) gewählt werden. Weiterlesen


    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


    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

    Furhat & Blockly: Kategorien

    • 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.
    Weiterlesen

    Furhat & Blockly: Parameter-Übersicht

    • 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.
    Weiterlesen

    Furhat & Blockly: Schwarze Bausteine

    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
    Weiterlesen

    Furhat & Blockly: Violette Bausteine

    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
    • 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
    • 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
    Weiterlesen

    Furhat & Blockly: Rote Bausteine

    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


    Weiterlesen

    Furhat & Blockly: Grüne Bausteine

    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
    Weiterlesen

    Furhat & Blockly: GelbeBausteine

    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]
    Weiterlesen