Section: New Results
BCOOL : Behavioral and Cognitive Object Oriented Language
BCOOL stands for Behavioral and Cognitive Object Oriented Language. This language is dedicated to the description of the cognitive part of an autonomous agent. It provides object oriented paradigms in order to describe reusable cognitive components. It focuses the description on the world and the interactions it provides to agents. A stable action selection mechanism uses this representation of the world to select, in real time, a consistent action in order to fulfill a given goal.
In the field of behavioral animation, the simulation of virtual humans is a center of interest. Usually, the architecture is separated in three layers: the movement layer (motion capture and inverse kinematics), the reactive layer (behaviors) and the cognitive layer. The role of the cognitive layer is to manipulate an abstraction of the world in order to automatically select appropriated actions to achieve a given goal. BCOOL is dedicated to the description of the cognitive world of the agents  . Inspired by Gibson's theory of affordances, it focuses on the description of the environment and the opportunities it provides, under a form allowing goal oriented action selection. A stable action selection algorithm uses this description to generate actions in order to achieve a given goal.
The language provides object oriented paradigms to describe the cognitive representation of objects populating an environment. The notion of class is used to describe different typologies of objects and the notion of inheritance allows specializing the description. Objects are described through properties and interactions similar to methods in object-oriented languages. Notions of polymorphism are exploited to redefine interactions and specialize them through the inheritance hierarchy. Notions of relations between object instances are also provided. Relations and properties are boolean facts describing the world. A specific operator enabling incomplete knowledge management has been added. It enables reasoning on the knowledge of the truth value of a fact in a similar way as the fact itself. The description of actions uses preconditions and effects to allow planning and is also informed with C++ code describing an effective action called once the action is selected. Thanks to this property, the cognitive process can be easily connected to the reactive model in charge of the realization of selected actions. Thanks to knowledge operator, perceptive and effective actions are described in the same way. Thus, perceptive actions can be selected to acquire some necessary information during the planning process. Once the abstract world is described, a second language is used to describe a world populated of instances of cognitive objects. This description is used to generate a database describing the world, the relations and the actions that can be performed by agents. This database is then exploited by the action selection mechanism to select, in real time, actions in order to fulfill a given goal. The mechanism is able to handle three types of goal:
Avoidance goal: those goals are used to specify facts that should never become true as a consequence of an agent action.
Realization goal: those goals are used to specify facts that should become true.
Maintain goal: those goals allow specifying facts that should always stay true inside the environment.
Once the goals are provided, the action selection mechanism select actions and calls their associated C++ code to run associated reactive behaviours. Actions are selected incrementally in order to take into account all perceived modifications of the world in the next selection. This way, the mechanism is goal oriented and reactive.
BCOOL provides a high level framework, focusing on the description of reusable cognitive components while providing easy connection with the reactive model. The incremental generation of actions allows to handle the dynamics of the world by taking into account all perceived modifications during the action selection phase. Its aim is to provide a generic and real time framework taking into account dynamic constraints imposed by behavioural animation.