samedi 3 août 2019

Blackboard et Behavior Tree

Les noeuds n'ont pas vraiment de mémoire excepté les 2 octets qui sert de paramètre. Qui plus est, il difficile d'échanger des données entre les noeuds. Pour y arriver, le concept de "tableau noir" est implémenté. C'est un espace disponible pour tous les noeuds d'un arbre afin d'y laisser de l'information qui peut être lu et modifié par n'importer quel autre noeud. Ici, comme l'espace est limité, la clé est composée que d'un octet et le nombre d'espace dans le tableau doit lui aussi être limité. Seulement 2 octets peut être assigné comme valeur. Ici encore, un pool d'objet d'une taille immuable est définie et utilisé pour l'entièreté de l'exécution. Une valeur de 255 indique un espace libre dans le tableau, donc ne doit pas être utilisé comme clé.

Deux actions de behavior de base sont ajoutées, soit l'assignation et le retrait d'élément au tableau. Puisque seulement 2 octets sont disponible comme paramètre aux action, la valeur assignée est limité à un octet. Ce sont des actions utilitaires, les actions propriétaires pourront mieux utilisé l'espace.

Puisque l'espace est si limité, le blackboard n'est pas fait pour stocker l'ensemble du monde comme pourrait être fait dans une système plus performant. Un robot pourrait encoder les valeur des ses senseur dans une structure plus performante qui serait disponible lors de l'exécution de noeuds propriétaires. Cependant, c'est une structure généraliste qui est pratique.

La classe Blackboard est simple à utiliser. Les méthode set et get permettent l'assignation et l'accès aux valeurs disponible. La méthode releaseElement permet de retirer un élément précis et hasKey retourne si un l'élément existe dans le tableau. L'action SetBBValue aura le statut de SUCCESS si l'assignation réussi et  FAILURE s'il n'y a plus de place dans le tableau.

Prochaine étape, l'utilisation d'évènements pour déclencher l'exécution de sous-arbres.

Aucun commentaire:

Enregistrer un commentaire