Last modified 7 years ago Last modified on 11/12/2010 11:38:51 AM

Lirec Agent Architecture

3 Layer Architecture diagram

The above image shows the conceptual functionality of the Lirec agent architecture. The concrete implementation of this architecture consists of 3 sub systems: FAtiMA, CMION and SAMGAR. The following figure gives a broad overview how the 3 systems interact with each other.


FAtiMA is the name of the agent’s mind responsible for decision making, planning, memory and emotions. It works on a purely symbolic level. FAtiMA is written in Java.


CMION stands for Competency Management with ION. The main purpose of this system is the translation of symbolic to sub-symblolic information and vice versa. That means CMION is responsible for selecting concrete competencies to perform symbolic commands selected by the mind and providing symbolic perception inputs to the mind. CMION is written in Java and built on top of the ION framework.


SAMGAR utilises the YARP framework that supports distributed computation and code re-use by structuring communication between modules (within and between the layers in the architecture). This allows modules with a high computational load to be cleanly decoupled and distributed between computers. SAMGAR adds to the functionality of YARP with a method of encapsulation, allowing multiple instances of identical modules to be present on shared networks without error for differing embodiments, therefore allowing code re-use and the ability for migration, along with a Graphical user interface to allow a more direct and more generic way to alter network parameters outside of hard code. SAMGAR is written in C++.

Three Level Model

The LIREC software architecture is based on the concept of a three layer architecture facilitating software integration. The figure below shows how the 3 sub-systems fit within this concept. FAtiMA is exclusively located at level 3 while CMION provides a bridge between levels 3 and 2 (and on platforms where SAMGAR is unavailable even level 1) and SAMGAR bridges levels 2 and 1.

FAtiMA is connected to CMION via a Socket connection. When FAtiMA selects an action for execution it is sent to CMION’s competency manager which selects a suitable execution plan that realizes the action on the current embodiment by invoking one or more competencies. Upon completion of this invocation, CMION will send a message to the FAtiMA reporting the success or failure of the action. Instead of being directly invoke by the mind, competencies can also be continuously running. This is usually the case for perception competencies. If such a competency detects information that is relevant for the agent mind it can update the world model component inside cmion, which is directly linked and synchronized with the FAtiMA agent’s internal knowledge base.

The connection between CMION and SAMGAR is made on the level of individual competencies. In CMION an individual competency can be linked to a certain SAMGAR module. Whenever that SAMGAR module appears (i.e. is started) the connected competency in CMION will automatically be instantiated and available for invocation. When the competency runs it can communicate with its associated SAMGAR module through a Yarp Port and exchange any kind of data through this port (by using the flexible bottle data structure provided by Yarp).