Architecture

HARMONI Repository

The HARMONI repository is organized into the following packages, based on the fundamental capabilities needed for human-robot interaction:

  • harmoni_actuators - controlling hardware (e.g. motors, screens, speakers)

  • harmoni_core

    • harmoni_common_lib - defines the Harmoni unit and helper functions

    • harmoni_common_msgs - defines harmoni messages and actions

    • harmoni_decision - highest level controller, can play patterns or individual units

    • harmoni_pattern - middle level decision player, defines sequences or patterns for dialog

    • harmoni_recorder - records interactions

  • harmoni_detectors - extracting useful information from sensor signals (e.g. transcriptions, facial locations, etc.)

  • harmoni_dialogues - processing user speech (text) and return robot speech (text)

  • harmoni_sensors - reading physical sensors and publishing sensor streams

packges

HARMONI Unit

unit

Nearly everything in HARMONI is a ROS node called a HARMONI unit. The HARMONI unit consists of two classes, a Service Server and a Service Manager, which standardize the interface for a given node as shown above.

The Harmoni Unit standardizes the communication and control interface for each node, allowing other nodes to control a unit with minimal knowledge of the internal workings.