• Aucun résultat trouvé

sym-boliques

Nous avons vu dans la partie pr´ec´edente un exemple de mise `a jour du niveau g´eom´etrique 1 vers le niveau g´eom´etrique 2. Ici nous examinons un exemple de mise `a jour du niveau g´eom´etrique 2 vers le niveau 1.

3.2.1 Hypoth`ese de positionnement

Un ´etat symbolique renseignant sur la g´eom´etrie est traduit/spatialis´e dans l’espace g´eom´etrique cart´esien. En effet, parfois, le robot connaˆıt un ´etat g´eom´etrique symbolique d’un objet qu’il a d´eduit de l’effet attendu de ses actions ou de celles de l’homme, ou obtenu par le dialogue alors qu’il ne peut le percevoir. C’est le cas par exemple si l’objet est dans un conteneur, dans une main de l’homme ou dans la pince du robot. Cette spatialisation est le plus souvent approch´ee. L’objet est plac´e au centre du conteneur ou de

la main de l’homme. Elle est a priori beaucoup plus pr´ecise dans le cas o`u l’on connaˆıt la transformation qui lie l’objet `a l’environnement. C’est typi-quement le cas quand l’objet est dans la pince du robot `a la suite d’un pick. Cette instanciation g´eom´etrique est utile pour repr´esenter g´eom´etriquement la connaissance du robot dans l’espace cart´esien. Elle est indispensable dans le cas o`u l’objet est dans la pince du robot pour la planification de mouvements futurs. Elle permet ´egalement d’estimer la plausibilit´e de l’´etat symbolique consid´er´e, dans le cas o`u la perception fournit une position concurrente. Ceci permet un retour du niveau 1 vers le niveau 2. On peut d´efinir pour chaque ´etat symbolique des seuils de distance au-del`a desquels l’´etat symbolique est consid´er´e comme impossible du fait de son instanciation g´eom´etrique. Nous r´esumons cela au moyen de deux algorithmes 1 et 2. L’algorithme 1 g`ere la mise `a jour de la position de l’objet. L’algorithme 2 d´ecide de la suppression ´eventuelle d’une hypoth`ese de positionnement.

Les fonctions utilis´ees par les deux algorithmes 1 et 2 sont d´ecrites dans le tableau 3.1.

object.hasPositionHypothesis() :

fonction bool´eenne permettant de savoir si un objet a une hypoth`ese de positionnement. object.updatePositionFromHypothesis() :

fonction qui calcule la position d’un objet `a partir de l’hypoth`ese de positionnement et la met `a jour dans le mod`ele 3d. object.isPerceivedNew() :

fonction bool´eenne permettant de savoir si un objet a ´et´e per¸cu de nouveau depuis le dernier appel `a elle-mˆeme. object.updatePositionFromPerception() :

fonction mettant `a jour la position de l’objet dans le mod`ele 3d `a partir de la derni`ere position per¸cue. object.updatePerceptionPositionHypothesisConflictValue() :

fonction calculant la distance entre la position per¸cue et celle calcul´ee `a partir de l’hypoth`ese de positionnement d’un objet et mettant `a jour la variable stockant cette valeur.

object.getPerceptionPositionHypothesisConflictValue() :

fonction r´ecup`erant la derni`ere distance entre la position per¸cue et celle calcul´ee `a partir de l’hypoth`ese de positionnement d’un objet. object.deletePositionHypothesis() :

supprime l’hypoth`ese de positionnement d’un objet. object.informAttentionAboutConflict() :

fonction informant le processus attentionnel de la d´etection d’un conflit sur la position de l’objet. Tab.3.1 – Fonctions utilis´ees par les algorithmes 1 et 2.

Algorithm 1 chooseObjectPosition (objects) for all objects do

if object.hasP ositionHypothesis() then if object.isP erceivedN ew() then

object.updateP ositionF romP erception()

object.updateP erceptionP ositionHypothesisConf lictV alue() else

object.updateP ositionF romHypothesis() end if

else

if object.isP erceivedN ew() then

object.updateP ositionF romP erception() end if

end if end for

3.2.2 Spatialisation bas´ee agent

D’autres travaux de notre ´equipe de recherche r´ealis´es par Pandey [41] re-l`event aussi de l’instanciation g´eom´etrique de faits symboliques. Ils se concentrent sur la spatialisation dans le rep`ere g´eom´etrique cart´esien d’attributs symbo-liques relatifs `a la perception et `a la capacit´e d’action d’un agent. Il s’agit typiquement de la visibilit´e et de l’atteignabilit´e. `A la diff´erence des hypo-th`eses de positionnement pr´esent´ees ci-dessus qui produisent une position spatiale unique pour un objet, ces processus produisent des grilles 3D don-nant la valeur d’un attribut donn´e pour chaque cellule de la grille. On peut anticiper la valeur prise par les attributs d’un objet qui serait positionn´e dans l’espace compte tenu des valeurs locales de ces attributs dans la grille. Un objet sera visible s’il est d´eplac´e `a un endroit de la grille de visibilit´e o`u les valeurs de visibilit´e sont positives. Un objet qui peut-ˆetre saisi par l’homme sera non atteignable s’il est positionn´e `a un endroit de la grille d’atteigna-bilit´e o`u les valeurs d’atteignabilit´e sont tr`es faibles. Cela a ´et´e con¸cu pour la planification de mouvements dans le but de r´ecup´erer des positions cibles v´erifiant des attributs symboliques. Par exemple, o`u poser un objet tel qu’il soit visible et atteignable par l’homme ? C’est absolument indispensable dans le cas de l’interaction homme-robot, o`u l’on souhaite que l’homme puisse sp´e-cifier une tˆache de manipulation du robot `a partir d’attributs symboliques, et non en devant donner une position cart´esienne exacte.

Algorithm 2 assessHypothesis (object threholdSt thresholdDyn iterM ax) Require: object.hasP ositionHypothesis()

iter= 0

while object.hasP ositionHypothesis() do if object.isP erceivedN ew() then

if object.getP erceptionP ositionHypothesisConf lictV alue() > threholdStaticthen

object.deleteP ositionHypothesis()

else {object.getP erceptionP ositionHypothesisConf lictV alue() > threholdDynamic}

object.inf ormAttentionAboutConf lict() if iter > iterM ax then

object.deleteP ositionHypothesis() else iter = iter + 1 end if end if else iter= 0 end if end while