The architecture of ERIC

The architecture of ERIC is designed to be highly modular and parallel. The key modules in ERIC are those concerned with knowledge reasoning (the domain model), natural language generation, and affective appraisal. The other pages on this website explain these modules, as well as the gesture and facial expression generation, in more detail. As well as these modules, the agent has a fusion module which is responsible for combining generated language, facial expressions and gestures into a form that can be sent to the Charamel character. The modular structure of ERIC is shown below (click to enlarge).

The rectangular modules each consist of a Jess engine executing a rule-based Jess program that generates the outputs based on the received information. Modules and connections in dotted lines are still future work. Each component is responsible for a single aspect of the reasoning and generation, and runs in its own Java thread.1 In addition, the affect module uses ALMA to generate affective states based on cognitive appraisals. To minimise coupling between modules, the Java Observer pattern is used to pass data between modules.

The dotted box contains the domain-independent part of ERIC: all modules shown in blue can be reused without modification. Modules shown in green must be reimplemented for each new domain. Modules shown in yellow are "off-the-shelf" components.

In addition to the Jess modules, there is a module interfacing with the RaceSim horse race simulator; and a module that sends the generated character commands to Charamel. The text-to-speech capability is provided by Nuance RealSpeak Solo.


1 There is one exception: although the "affect observer" is shown as a separate module here, in fact it runs as part of the "affective appraisal" Jess thread. It is shown as a separate module because it is domain-dependent, whereas the rest of the affective apprasial is domain-independent.