# SoftBank Robotics documentation What's new in NAOqi 2.8?

# ALMood API

NAOqi Emotion - Overview | API | Tutorials

## Method list

class `ALMood`

This is a naoqi2 module.

Emotion management:

- `ALMood::currentPersonState`
- `ALMood::personStateFromPeoplePerception`
- `ALMood::personStateFromUserSession`
- `ALMood::persons`
- `ALMood::ambianceState`
- `ALMood::getEmotionalReaction`

Operating mode:

- `ALMood::subscribe` (Deprecated)
- `ALMood::unsubscribe` (Deprecated)
- `ALMood::getSubscribersInfo` (Deprecated)

## Signal list

- `ALMood::valenceChanged`
- `ALMood::attentionChanged`
- `ALMood::ambianceChanged`
- `ALMood::currentFocusedUserMood` (Deprecated)

## Property list

- `ALMood::valence`
- `ALMood::attention`
- `ALMood::ambiance`
- `ALMood::valenceLevel`
- `ALMood::attentionLevel`
- `ALMood::ambianceLevel`
- `ALMood::attentionZone`

## Methods

PersonState `ALMood::``currentPersonState`()

  Gets the emotional state of the current focused user through a PersonState struct.

  Returns: | A struct containing the values of each emotional descriptor of a person.

  This is organized as follows:

      PersonData =
      {
         "valence" : { value, confidence },
         "attention" : { value, confidence },
         "bodyLanguageState" :
         {
           "ease" : { level, confidence }
         },
         "smile" : { value, confidence },
         "expressions" :
         {
          "calm" : { value, confidence },
          "anger" : { value, confidence },
          "joy" : { value, confidence },
          "sorrow" : { value, confidence },
          "laughter" : { value, confidence },
          "excitement" : { value, confidence },
          "surprise" : { value, confidence }
         }
      }

  The valence field contains a value with a value from -1 (negative) to 1 (positive), with a confidence from 0 to 1. All other fields contain a value with its confidence, both ranging from 0 to 1.

PersonState `ALMood::``personStateFromPeoplePerception`(unsigned int ID)

  Get the emotional state of the user with the identifier ID from PeoplePerception through a PersonState struct.

  Parameters: | ID – ALPeoplePerception identifier. Please refer to ALPeoplePerception API for details.
  Returns: | A struct containing the values of each emotional descriptor of a person. See above.

PersonState `ALMood::``personStateFromUserSession`(unsigned int ID)

  Get the emotional state of the user with the identifier ID from UserSession through a PersonState struct.

  Parameters: | ID – ALUserSession identifier. Please refer to ALUserSession - API for details.
  Returns: | A struct containing the values of each emotional descriptor of a person. See above.

std::list<Person> `ALMood::``persons`()

  Get a list containing all the person present in the memory of the module through a Person struct.

  Returns: | A struct containing the persons detected by ALMood with their ID and emotional state.

  This is organized as follows:

      Person =
      {
         "userSessionID" : usid,
         "personState" :
         {
           ...
           *See above*
           ...
         }
      }

  A person is created in this module each time UserSession creates a new user, and is forgotten by the time UserSession deletes this user.

AmbianceState `ALMood::``ambianceState`()

  Get the state of the ambient environement through a AmbianceState struct.

  Returns: | A struct containing the values of each emotional descriptor of an ambiance.

  This is organized as follows:

      AmbianceData =
      {
         "agitationLevel" : value,
         "calmLevel" : value
      }

  Each field contains a value ranged from 0 to 1.

std::string `ALMood::``getEmotionalReaction`()

  Get the emotional reaction of the focused user.

  This function looks for the first emotional reaction of the user, and returns when:

  - a positive or negative reaction is found, or
  - The timeout is reached.

  Returns: | The detected reaction.

  For further details, see: Basic Emotions.

bool `ALMood::``subscribe`(const string& subscribedName, const string& operatingMode)

  Deprecated since version 2.5: ALMood is now managed by ALAutonomousLife. Subscribing in “Active” or “Passive” mode will have no effect.

  Parameters: | subscribedName – Name of the subscriber. operatingMode – Operating mode for ALMood.
  Returns: | True if the subscription succeeded, False otherwise.

bool `ALMood::``unsubscribe`(const string& subscribedName)

  Deprecated since version 2.5: ALMood is now managed by ALAutonomousLife.

  Unsubscribes the given subscriber from ALMood.

  Parameters: | subscribedName – Name of the subscriber.
  Returns: | True if the unsubscription succeeded, False otherwise.

map<string, string> `ALMood::``getSubscribersInfo`()

  Deprecated since version 2.5: ALMood is now managed by ALAutonomousLife.

  Gets the list of parameters for all the current subscribers (name and operating mode).

  Returns: | A struct containing all the subscriber’s information.

  This is organized as follows:

      subscribers =
      {
         "subscriber_1" : "Active",
         "subscriber_2" : "Passive"
      }

## Signals

std::string `ALMood::``valenceChanged`()

  Triggered: | When the valence of the focused user changes, e.g. from neutral to positive.
  Returns: | The valence to which the emotion changed, one of “positive”, “neutral” or “negative”.

std::string `ALMood::``attentionChanged`()

  Triggered: | When the attention of the human in front of the robot changes, e.g. from “unengaged” to “fullyEngaged”.
  Returns: | The state to which human’s attention changed, one of “unengaged”, “semiEngaged”, or “fullyEngaged”.

std::string `ALMood::``ambianceChanged`()

  Triggered: | When the emotional ambiance around the robot changes, e.g. from “calm” to “excited”.
  Returns: | The ambiance to which the emotion changed, either “calm” or “excited”.

std::string `ALMood::``currentFocusedUserMood`()

  Deprecated since version 2.5: This signal has been replaced by the ALMood::valence() property.

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | The mood of the focused user.

  For further details, see: Basic Emotions.

## Properties

std::string `ALMood::``valence`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | The valence of the focused user, when confidence is > 0.4. One of “positive”, “neutral” or “negative”.

std::string `ALMood::``attention`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | The attention of the human in front of the robot, when confidence is > 0.4. One of:

  - “unengaged”: attentionLevel < 0.6
  - “semiEngaged” : 0.6 <= attentionLevel < 0.9
  - “fullyEngaged”: attentionLevel >= 0.9

std::string `ALMood::``ambiance`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | The ambiance around the robot. Either “calm” or “excited”.

ValueConfidence<Float> `ALMood::``valenceLevel`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | A structure with the valence and confidence of the focused user. Valence ranges from -1 (negative) to 1 (positive). Confidence ranges from 0 (unconfident) to 1 (confident).

  Example:

      float valence = ALMood.valenceLevel().value;
      float confidence = ALMood.valenceLevel().confidence;

ValueConfidence<Float> `ALMood::``attentionLevel`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | A structure with the attention and confidence of the focused user. Attention ranges from 0 when the user is not looking at all at the robot, to 1 when the robot is looking directly at the robot. Confidence ranges from 0 (unconfident) to 1 (confident).

  Example:

      float attention = ALMood.attentionLevel().value;
      float confidence = ALMood.attentionLevel().confidence;

std::float `ALMood::``ambianceLevel`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | The ambiance around the robot. It ranges from 0 (calm) to 1 (excited).

std::string `ALMood::``attentionZone`()

  Triggered: | At each ALMood time period, every 1s by default.
  Returns: | A location where the focused user is looking. When the user is looking to the left from its own perspective, the value is “LookingLeft”. Possible values:

  - “LookingAtRobot”
  - “LookingUp”
  - “LookingDown”
  - “LookingLeft”
  - “LookingRight”
  - “LookingUpLeft”
  - “LookingUpRight”
  - “LookingDownLeft”
  - “LookingDownRight”
  - “Unknown” when confidence of attention is < 0.4.

Glossary Site map Index Support Contact Legal Notices