engagement_generation: Generating Engagement Behaviors in Human-Robot Interaction
Human-robot engagement generation package developed at Worcester Polytechnic
Institute by Aaron Holroyd et al.
Currently contains the
generation node that is responsible for generating
directed gaze, mutual facial gaze, adjacency
pairs, and backchannels during an interaction.
engagement is "the process by which two (or more) participants establish, maintain and end their perceived connection during interactions they jointly undertake" (Sidner, C.; Lee, C.; Kidd, C.; Lesh, N.; and Rich, C. 2005. Explorations in Engagement for Humans and Robots. Artificial Intelligence 166(1-2): 140-164).
List of nodes:
The generation node consumes EBML and other messages as seen below to generate the engagement behaviors directed gaze, mutual facial gaze, adjacency pairs, and backchannels. The engagement recognition node is then informed of each connection event as it is executed in order to determine if the human responded or not. The results of each EBML execution are then returned to the node which called the generation node.
$ generation [standard ROS args]
- "recognition/human/directed_gaze": [engagement_msgs::HumanDirectedGaze] A human is directing our gaze.
- "recognition/human/directed_gaze": [engagement_msgs::HumanMutualFacialGaze] A human is attempting mutual facial gaze.
- "recognition/human/directed_gaze": [engagement_msgs::HumanBackchannel] A human backchanneled.
- "vision/entity_position": [engagement_msgs::EntityPosition] The entity given is at the position given.
- "performing/look": [engagement_msgs::Performance] Notification of where the robot is looking.
- "bml/performing": [engagement_msgs::BMLPerformance] The bml behavior and its sync point which is currently being executed
- "bml/emit": [engagement_msgs::BMLEmit] Notification that an emit tag has fired
- "generation/lock_gaze": [engagement_msgs::Flag] Lock the gaze so it is not used by generation.
- "generation/tried_gaze": [engagement_msgs::Entity] Inform the rest of the system that the given Entity should be looked at.
- "generation/turn_fragment": [engagement_srvs::ExecTurnFragment] The goal is to complete the given actions with engagement behaviors added, the success state is returned
- "generation/set_gaze": [engagment_srvs::ChangeGaze] The goal is to change where the robot is looking. This can have a lock, target, or timeout, or any combination there of. The success state is returned.
Reads the following parameters from the parameter server
- "generation/conf/debug_level": [string] The verbosity used for debug print statements (anything with a log level <= verbosity will be printed when in Debug mode).
- "generation/conf/logger_type": [string] The type of logger, System or ROS.
- "generation/conf/run_full": [boolean] True to run the full generation node, false to run it in degraded mode.
- "generation/conf/reliability/speech": [double] The channel reliability of speech.
- "generation/conf/reliability/gaze": [double] The channel reliability of gaze.
- "generation/conf/reliability/directed_gaze": [double] The channel reliability of a directed gaze.
- "generation/conf/reliability/directed_gaze_pointing": [double] The channel reliability of directed gaze with pointing.
- "generation/conf/robot/shoulder_length": [double] The distance from the center of the neck to the center of the robot's shoulder.
- "generation/conf/robot/shoulder_height": [double] The distance from the floor to the center of the robot's shoulder.
- "generation/conf/robot/arm_length": [double] The distance from the center of the robots shoulder to the tip of it's finger.
- "generation/conf/robot/head_height": [double] The distance from the floor to the center of the head.
- "generation/conf/constant/gaze_cost_factor": [double] The cost factor of changing the gaze in a reference.
- "generation/conf/constant/point_cost_factor": [double] The cost factor of changing the pointing location in a reference.
- "generation/conf/constant/gaze_distractor_distance": [double] The distance that an object must be away from the referenced object in order to not be a gaze distractor.
- "generation/conf/constant/pointing_distractor_distance": [double] The distance that an object must be away from the referenced object in order to not be a pointing distractor.
- "generation/conf/constant/glance_delay_factor": [double] The factor to multiply the MTBCE by to determine how often to glance up.
- "generation/conf/glance_duration_ms": [int] The number of milliseconds that the robot will look at the human for a glance.
- "generation/conf/glance_delay_max": [int] The maximum time between glances, regardless of the MTBCE.
- "generation/conf/glance_delay_min": [int] The minimum time between glances, regardless of the MTBCE.
This section describes the launch file used for launching this node:
- "generation.launch": Used to launch the generation node. Contains all the parameters used for the generation node.
- "degraded_gen.launch": Used to launch the generation node in degraded mode. Contains all the parameters used for the generation node and sets it to degraded mode.
$ roslaunch generation.launch
$ roslaunch degraded_gen.launch