SoftBank Robotics documentation What's new in NAOqi 2.5?

ALEngagementZones API

NAOqi People Perception - Overview | API


Namespace : AL

#include <alproxies/alengagementzonesproxy.h>

Methods

int ALEngagementZonesProxy::computeEngagementZone()

There are two overloads of this function:

int ALEngagementZonesProxy::computeEngagementZone(const float& x, const float& y, const float& z)
Parameters:
Returns:

The corresponding Engagement Zone.

int ALEngagementZonesProxy::computeEngagementZone(const float& xAngle, const float& yAngle, const float& distance, const AL::ALValue& cameraPositionRobot)
Parameters:
  • xAngle – horizontal angular coordinate of the object in the image (in radians).
  • yAngle – vertical angular coordinate of the object in the image (in radians).
  • distance – distance of the object from the camera.
  • cameraPositionRobot – position of the camera in FRAME_ROBOT as a Position6D.
Returns:

The corresponding Engagement Zone.

float ALEngagementZonesProxy::getFirstLimitDistance()
Returns:The current value of FirstDistance (in meters). The default value is 1.5m. Please refer to the diagram in ALEngagementZones for details.
float ALEngagementZonesProxy::getLimitAngle()
Returns:The current value of LimitAngle (in degrees). The default value is 90 degrees. Please refer to the diagram in ALEngagementZones for details.
float ALEngagementZonesProxy::getSecondLimitDistance()
Returns:The current value of SecondDistance (in meters). The default value is 2.5m. Please refer to the diagram in ALEngagementZones for details.
bool ALEngagementZonesProxy::setFirstLimitDistance(const float& distance)

Sets the value of FirstDistance. Please refer to the diagram in ALEngagementZones for details. Calling this method will trigger the event EngagementZones/FirstLimitDistanceUpdated().

Parameters:
  • distance – Value of the new FirstDistance (in meters). It must be positive and smaller than the current value of SecondDistance.
Returns:

true if the update succeeded.

bool ALEngagementZonesProxy::setLimitAngle(const float& angle)

Sets the value of LimitAngle. Please refer to the diagram in ALEngagementZones for details. Calling this method will trigger the event EngagementZones/LimitAngleUpdated().

Parameters:
  • distance – Value of the new LimitAngle (in degrees). It must be between 0 and 180 degrees.
Returns:

true if the update succeeded.

bool ALEngagementZonesProxy::setSecondLimitDistance(const float& distance)

Sets the value of SecondDistance. Please refer to the diagram in ALEngagementZones for details. Calling this method will trigger the event EngagementZones/SecondLimitDistanceUpdated().

Parameters:
  • distance – Value of the new FirstDistance (in meters). It must be positive and bigger than the current value of FirstDistance.
Returns:

true if the update succeeded.

Events

Event: "EngagementZones/LimitAngleUpdated"
callback(std::string eventName, float angle, std::string subscriberIdentifier)

Raised when the limit angle value has changed.

Parameters:
  • eventName (std::string) – “EngagementZones/LimitAngleUpdated”
  • angle – New value in radians.
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/FirstLimitDistanceUpdated"
callback(std::string eventName, float distance, std::string subscriberIdentifier)

Raised when the first limit distance value has changed.

Parameters:
  • eventName (std::string) – “EngagementZones/FirstLimitDistanceUpdated”
  • distance – New value in meters.
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/SecondLimitDistanceUpdated"
callback(std::string eventName, float distance, std::string subscriberIdentifier)

Raised when the second limit distance value has changed.

Parameters:
  • eventName (std::string) – “EngagementZones/SecondLimitDistanceUpdated”
  • distance – New value in meters.
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/PeopleInZonesUpdated"
callback(std::string eventName, std::string subscriberIdentifier)

Raised when the memory keys containing the list of people IDs in each zone have been updated.

Event: "EngagementZones/PersonApproached"
callback(std::string eventName, int id, std::string subscriberIdentifier)

Raised when a person just approached the robot (i.e. moved to a closer engagement zone).

Parameters:
  • eventName (std::string) – “EngagementZones/PersonApproached”
  • id – ID of the person
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/PersonMovedAway"
callback(std::string eventName, int id, std::string subscriberIdentifier)

Raised when a person just moved away from the robot (i.e. moved to a further engagement zone).

Parameters:
  • eventName (std::string) – “EngagementZones/PersonMovedAway”
  • id – ID of the person
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/PersonEnteredZone1"
callback(std::string eventName, int id, std::string subscriberIdentifier)

Raised when a person changed of engagement zone and entered Zone 1.

Parameters:
  • eventName (std::string) – “EngagementZones/PersonEnteredZone1”
  • id – ID of the person
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/PersonEnteredZone2"
callback(std::string eventName, int id, std::string subscriberIdentifier)
Parameters:
  • eventName (std::string) – “EngagementZones/PersonEnteredZone2”
  • id – ID of the person
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/PersonEnteredZone3"
callback(std::string eventName, int id, std::string subscriberIdentifier)

Raised when a person changed of engagement zone and entered Zone 3.

Parameters:
  • eventName (std::string) – “EngagementZones/PersonEnteredZone3”
  • id – ID of the person
  • subscriberIdentifier (std::string) –
Event: "EngagementZones/MovementsInZonesUpdated"
callback(std::string eventName, std::string subscriberIdentifier)

Raised when the memory keys containing the list of movements in each zone have been updated.

ALMemory Keys

int PeoplePerception/Person/<ID>/EngagementZone

Id of the engagement zone of the person (0 if unknown). <ID> is the ID of the person (see ALPeoplePerception API).

AL::ALValue EngagementZones/PeopleInZone1

List of the IDs of the people detected in Zone 1.

AL::ALValue EngagementZones/PeopleInZone2

List of the IDs of the people detected in Zone 2.

AL::ALValue EngagementZones/PeopleInZone3

List of the IDs of the people detected in Zone 3.

AL::ALValue EngagementZones/LastMovementsInZone1

List of the movements detected in Zone 1. The memory key has the same structure as the key MovementDetection/MovementInfo, described in ALMovementDetection

AL::ALValue EngagementZones/LastMovementsInZone2

List of the movements detected in Zone 2. The memory key has the same structure as the key MovementDetection/MovementInfo, described in ALMovementDetection

AL::ALValue EngagementZones/LastMovementsInZone3

List of the movements detected in Zone 3. The memory key has the same structure as the key MovementDetection/MovementInfo, described in ALMovementDetection