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_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

HARMONI 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.