Skip to content

Multi Agent Model

Brice Donval edited this page Jan 7, 2020 · 6 revisions

The Greta system supports different characters in the same environment and the agents are independent from the others.

In order to have the multi-character platform in the Greta system,a hierarchy of modules is created. The UI allows us to build and arrange modules as trees. This means that the modules can have a parent, and if so, their component are instantiated, not via the default constructor, but via the constructor with the parent’s reference.

Most of the modules needs to know which CharacterManager reference to use. Therefore, in order to add a new character, the CharacterManager module has to be added first and once selected, the other modules can be added as its child. In this way each agent has its own workflow: FML or BML files can be run independently for each character.

Earlier, there was an assumption that allowed only one character at a time. Hence, several modules used a static reference to a static (singleton) CharacterManager. In the updated version, this class is not a singleton anymore, and it is the parent module of all modules depending on it (i.e. FMLFileReader, BehaviorPlanner, BMLFileReader, BehaviorRealizer, MPEG4Animatable, TTS, etc.). In order to do this, the CharacterDependentInferface has been updated to add the CharacterManager reference andconstructors now need a CharacterManager reference and are CharacterDependent.

To have an idea to how the new CharacterManager reference works, below there is a link for a video that shows you how to create a basic configuration for a single agent in the environment: https://youtu.be/IOpM-TeYp8o .

To have more that one agent, you should recreate a CharacterManager module with all its children and connect the new MPEG4 module to the same environment of previous one.

Getting started with Greta

Greta Architecture

Quick start

Advanced

Functionalities

Core functionality

Auxiliary functionalities

Preview functionality

Nothing to show here

Previous functionality (possibly it still works, but not supported anymore)

Clone this wiki locally