Furhat Library

What is it?

The Furhat Library is a curated collection of additional materials available for use with the Furhat platform, which includes code snippets, example skills, and new faces. It was introduced in the 2.0.0 release, and is being gradually built up, so feel free to check in every now and then to see if anything new has been added!

The asset collection is part of the Furhat Library and contains various gestures, functions, intents and entities to complement the furhat-commons when developing a skill. It is in technical terms a library on its own, and meant to be used by skill developers in their projects.

How do I get it?

To use the latest library asset collection you need to add the following to dependencies in the build.gradle file in your skill:

compile 'com.furhatrobotics.assets:StandardLibraryCollection:1.0.0'

Note: If you want to ensure that you are always on the latest version, an alternative is to specify the version dynamically, as shown below. Be warned that this could allow for updates which are incompatible with older code, so for critical skills, we recommend setting a specific version.

compile 'com.furhatrobotics.assets:StandardLibraryCollection:+'

FaceCore enabled in the web interface

Note: If you are using an IDE like IntelliJ IDEA, don't forget to push the refresh button in the Gradle tab (top right) to reload all libraries.

Each library is built against a specific version of the furhat-commons, it should work with newer versions of the SDK but it is meant for 2.0.0 or later.

You use the assets basically the same way you would any from furhat-commons.

FaceCore enabled in the web interface

Note: To begin with, the Library will be available for everyone, but soon only Standard and Premium customers will have build access. Instructions will come before the transition, skills built before will continue to work.

What exactly does it contain?

The content will be continuously updated but below you’ll find a list of the initial content.

AutomaticHeadMovements

GesturesLib

Traditionally built gestures (BasicParams)

  • DoubleNod
  • Recall
  • RecallDown
  • FallAsleep
  • WakeUpWithHeadShake
  • TripleBlink
  • IntenseShake
  • ReadWorkInAir
  • WinkWithDelay
  • BigSmileWithDelay
  • WinkAndSmileWithDelay

Gestures requiring FaceCore (ARKitParams)

  • SmileF1
  • AngryF1
  • AngryF2
  • SmileSideF1
  • SmileRandom
  • bigSmile1
  • eyeBrows1
  • fear1
  • mouthSide1
  • ohYeah1
  • sad1
  • sceptical1
  • shock1
  • smile1
  • thoughtful1
  • thoughtful2
  • what1

NluLib

Entities

  • SpokenLanguages
  • UnderstoodLanguages
  • PositiveExpression
  • NegativeExpression

Intents

  • IAmDone
  • WakeUp
  • PositiveReaction
  • NegativeReaction

UtilsLib

  • SafeGoto
  • randomNoRepeat
  • attendClosestUser
  • getShortestUser
  • usersIncludeShortUser

When you’ve added the library to your skill you can see documentation on each asset in your IDE, as shown below.

FaceCore enabled in the web interface

Why did you not just include this in furhat-commons?

Not all our users need this library and we want to keep furhat-commons lean with short download times and small needed disk space. The library will contain things which are not deemed essential for all our users.

Furhat-commons also follows a certain release schedule and a strict testing procedure, with the library we can be more flexible in adding experimental assets. For instance a function might be great for some use cases but work sub-par in others, gestures in commons should be carefully reviewed and preferably based on research, whereas those in the library could be more artistically created.

With all that said, assets that start in the library may later make their way into the furhat-commons.

Why are they not included for everyone?

Offering them in different packages allows us to spend more resources on creating assets and see if there is actual demand for what we create.