Using the Furhat robot

Setting up the Furhat robot

Please follow the setup steps in the Robot Owners Guide for initial setup.

In short, the robot should be moved from the box, preferably while supporting the head, over to a stable surface. Put on the mask, plug in the external microphone, LAN-cable (if desired), and insert the power supply cable.

Environment

To ensure an optimal experience, please read through the Robot Deployment Guidelines section in the Robot Owners Guide. This goes into areas such as optimal robot placement, ensuring adequate ventilation, as well as lighting and acoustics considerations.

Connecting to network

Accessing your Furhat requires it to be connected with a LAN-cable or connected through WIFI.

NOTE: Currently you can not use Furhat with a WIFI that requires a browser signup/log-in or is hidden (not broadcast).

Connecting to the robot through LAN-cable

  1. Plug in a LAN-cable.
  2. Press the rotary button on the back of the robot (or CTRL+I on a connected USB-keyboard) to show the setup dialog on Furhat's face, with Furhat's IP-address shown.
  3. Close the menu again using the rotary button (or press CTRL+X on a connected USB-keyboard) to close the dialog window.
  4. Enter the IP in a browser on a computer connected to the same network.

Connecting to the robot through WIFI

If you are accessing an open network (i.e. neither having a password or requires a browser signup/login), you can use the rotary button to connect.

If a WIFI password is required, you will need to plug in an external keyboard in order to type the password.

  1. Connect an USB keyboard to the Furhat.
  2. Press CTRL+I to show the setup dialog on Furhat's face.
  3. Select Connect to WLAN, select your WIFI-network and press enter.
  4. Enter your password and press enter again.
  5. Once connected, you will see the IP of the Furhat. You might have to close the dialog and reopen it again.
  6. Press CTRL+X to close the dialog window.
  7. Enter the IP in a browser on a computer connected to the same network.

Connecting through WIFI hotspot

  1. Connect an USB keyboard to the Furhat.
  2. Press CTRL+I to show the setup dialog on Furhat's face.
  3. Select Hosted network and then Create hosted network.
  4. Once set up, you will see the IP of the Furhat. You might have to close the dialog and reopen it again.
  5. Connect to the Furhat's WIFI from your computer. The network name is Furhat-XX and the default password is furhatrobotics.
  6. Press CTRL+X to close the dialog window.
  7. Enter Furhat's IP in a browser on your computer.

Resetting known WIFI networks

The robot will remember any WIFIs and try to connect whenever available. This can sometimes cause unnecessary admin, for which reason we've added the possibility to forget known WIFIs. You can do this using the on-face menu.

External microphone

With the robot an external microphone is also included. It is recommended to use this instead of the built-in microphones for improved spatial detection of voices.

External monitor

Experimental support for some touch monitors (including Dell P2418HT) has been added in version 1.9.0. The monitor will display a Chromium browser window when connected using USB-C to the Furhat. The browser will by default point to the Furhat Admin Web Interface. External Monitor support can also be used to display skill GUIs and supports hot plugging to the Furhat. When using a web browser with the External Screen, an on-screen keyboard is displayed which currently only has partial support for web applications. Notably, text input fields on some web interfaces (including the Web Admin console) will not work as intended. The External Monitor support is under development and will be continuously improved.

Camera Feed

Support for accessing the robot's internal camera feed has been added for research type robots in version 1.20.0. The stream can be enabled either through the web-interface, or programmatically inside a skill. The camera feed will be provided as a ZMQ.SUB socket in the form of tcp://:. Further documentation on this functionality can be found here.

Using the Furhat robot

Turning the robot on/off

To turn on the robot, ensure the power supply is connected and press the power button on the back of the robot. The power button is also used to power off the on-board computer. However the projector will still be powered and showing a blue screen. If you wish to power off the robot completely you need to unplug the power cable.

Accessing the robot in Furhat Studio

The default password for the web interface is admin. The password can be changed in the Security tab in the Settings and reset through the selection wheel menu on the robot.

NOTE: You can also access the Furhat web interface through furhat-XXX.local instead of the IP-address, where XXX should be replaced with the unique robot identifier. Whether this works depends on the network configuration.

Running skills on the robot

See Running a skill on a robot.

Changing volume

The volume can be controlled in three ways. Rotary button, Web interface or programmatically through a skill. Note that full volume (100%) is very loud.

Rotary button

By rotating the rotary button the volume should increase/decrease, and the LED ring should light up based on the current volume.

Web interface

In the top bar of the web interface a volume icon can be seen, upon hovering it expands into a volume slider. Drag or click on the slider to change the volume. By clicking the volume icon, the robot will mute, click again to unmute and reset to the previous volume.

There is also a volume slider under Settings > Voice. It is also possible to disable the robot's internal speakers there, this can be done to reduce echo when the robot is connected to an external speaker.

Skill

From the skill the following logic can be used to change the volume:

val volumeState = state {

    onEntry {
        furhat.say("The volume is ${furhat.system.volume}") //Lets furhat say the current volume
    }

    onButton("Set volume higher") {
        furhat.system.volume += 10 //Increases the volume by 10%
    }

    onButton("Set volume lower") {
        furhat.system.volume -= 10 //Decreases the volume by 10%
    }

    onButton("Set volume to 50%") {
        furhat.system.volume = 50 //Sets the volume to 50%
    }
}

Note: When changing/adjusting the volume from the skill, make sure that the volume is still overridable by the web interface, or rotary button.

Playing sounds

For some applications, it makes sense to play sound effects or background music on external speakers, while speech is kept on the robot. For this, the utility class AudioPlayer has been implemented. It allows the user to play .wav sound files on their choice of speaker. Note that AudioPlayer currently only supports 16-bit, 44.1 kHz, stereo, little-endian sound files - also know as "CD quality".

By default, an AudioPlayer instance will use the robot speakers, but the user can also select a custom mixer. The helper function getAvailableMixers() will provide a list of possible audio output choices. The first match of a specified mixerChoice will be chosen, for example the substring "USB Sound Device" matches "USB Sound Device, USB Audio, USB Audio". Also note that if a skill is run through the IDE, the output options are those of the host computer, not the robot itself.

Below you can see an example of this functionality:

val soundUrl = this::class.java.getResource("/<YOUR_SOUND_FILE>.wav")
val mixerChoice = "USB Sound Device" // external hardware, this will vary
val myAudioPlayer = AudioPlayer(soundUrl, mixerChoice)
val customVolume = 70

myAudioPlayer.play(customVolume)
sleep(5000)
myAudioPlayer.fadeOut(1000)

The available functions are: - play(targetVolume) - plays a sound clip at an optional target volume - stop() - stops a sound clip if it is still playing - fadeIn(fadeTimeInMs, targetVolume) - similar to play(), but the sound gradually increases in volume to reach the targetVolume - fadeOut(fadeTimeInMs) - similar to stop(), but the sound fades out

You can also play multiple sounds in parallel as these calls are non-blocking. Note that if the 3.5mm audio jack on the back of the robot is used, it will also output the speech, so this feature is intended for primarily USB devices.

Robot identifier

Each Furhat has a unique identifier that you might want to know programmatically in your skill, for example for tagging logs. You can access this in Kotlin/Java by System.getenv("FURHAT_MACHINE_ID"). In the future, a convenience method will be added for this. There is also a physical sticker on the back of the robot.

Robot Type

A Furhat robot can be of two types: production or research. The different types enable specific functions, e.g. research robots have access to the full library of voices from Acapela and direct access to the camera stream. You can check your robot type in the settings tab of the web console. If you have a setting for Camera and camera stream, your robots is marked as research type. For any inquires on changing your robot type please contact support@furhatrobotics.com.

Help with the Furhat robot

Please see our support information page for suggested first troubleshooting steps.

Support mode

If you have been in contact with our support and been asked to give access to the robot to a Furhat technician, you can do so by activating Support mode on your Furhat from the robot's web interface. For this to work,

  1. The robot needs to be connected to the internet.
  2. You have to be connected to the robot's web-interface from a computer on the same network as the robot (see the sections above for how to do this).

Updating the robot

You can see which version of the software your robot is running by going to the Update tab under Settings in the web interface. If your robot is running 1.8.0 or newer you can update the robot by clicking the update button, otherwise manual steps will be needed. If so, please contact our support to get your robot upgraded to the latest software: support@furhatrobotics.com.

Community Slack channel

To interact with other Furhat users and get peer-to-peer support, please post in our community Slack channel - contact us for an invitation.