WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Contribution à  l'optimisation d'un comportement collectif pour un groupe de robots autonomes


par Amine BENDAHMANE
Université des Sciences et de la Technologie d'Oran Mohamed Boudiaf - Doctorat en informatique - Intelligence Artificielle 2023
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

CHAPITRE 3

FIGURE 3.6 - Niveaux d'abstraction du processus de navigation, planification et évitement d'obstacles du simulateur PyRoboticsLab

ne se focaliser que sur l'action souhaitée. Il suffit d'utiliser par exemple la commande ro-bot.move(forward) pour le déplacer un mètre en avant, et robot.turn(45) pour faire une rotation de 45° dans le sens des aiguilles d'une montre. D'autres routines permettent d'effectuer des tâches relatives à la détection d'obstacles et de cartographie telle que lidar.scan() pour récupérer la liste des obstacles détectés, lidar.get_measurement_confidence() pour calculer le degré de confiance dans la mesure du lidar selon le modèle du bruit, et robot.update_map() pour mettre à jour la carte.

Afin de simplifier encore plus le processus de développement de nouveaux algorithmes, le simulateur offre un autre niveau d'abstraction permettant à l'utilisateur de définir directement les coordonnées (x, y) du point auquel le robot devra se diriger sans se soucier des commandes de direction (move) et de rotations (turn). Ceci peut se faire en utilisant donc la commande robot.move_toward_point(x,y). De même il suffit d'utiliser les commandes ro-bot.set_goals() et robot.plan_path() pour définir un ou plusieurs points à visiter et planifier une trajectoire vers ces points.

L'idée est donc d'offrir plusieurs niveaux d'abstraction permettant aux utilisateurs de choisir différentes commandes à utiliser selon leurs objectifs. Un utilisateur qui souhaite utiliser le simulateur pour développer un nouvel algorithme d'exploration choisira de préférence un niveau d'abstraction simple afin de ne se focaliser que sur la stratégie du robot, alors qu'un utilisateur souhaitant tester de nouvel algorithme de navigation ou de cartographie choisira sûrement l'utilisation de routines de bas niveau pour contrôler les chaque action individuellement.

Nous laissons aussi la flexibilité aux utilisateurs de pouvoir redéfinir n'importe quelle fonction et apporter des modifications dans l'implémentation à bas niveau afin de leur permettre d'adapter le simulateur à leurs besoins spécifiques. Il pourront pour cela utiliser les variables de classe pour avoir accès aux informations internes du robot telles que le niveau de batterie restant, l'état du robot (en mouvement, en attente, bloqué par un obstacle), la distance parcourue, le nombre de mouvements effectués...etc.

La figure 3.7 présente un schéma général de notre modélisation du processus de naviga-

93

tion, planification et évitement d'obstacles. Cette modélisation se base sur l'implémentation en interne d'un automate à états finis.

Chaque état présenté dans ce schéma possède une routine définissant l'ensemble des opérations à effectuer. La figure 3.8 par exemple décrit les détails de l'opération "solve conflict" dont l'objectif est de trouver un compromis entre deux robots qui se bloquent mutuellement le chemin. Cette routine poussera un des robots à changer de trajectoire, ou de se mettre dans un état d'attente pour laisser l'autre robot passer.

3.5 Modélisation des grilles d'occupation

L'exploration de zones inconnues est étroitement liée au problème de navigation et de cartographie. Le robot doit se déplacer dans l'environnement et le découvrir progressivement. Lors de cette opération, il est fort probable de rencontrer des impasses et autres obstacles bloquant le chemin. Le robot mémorisera alors la position des obstacles et les utilisera pour planifier des chemins alternatifs et découvrir de nouvelles régions.

Les robots utilisent des capteurs pour détecter les murs et les obstacles. Étant donné que ces capteurs ont une portée limitée, il n'est pas possible d'observer l'ensemble de l'environ-nement à la fois. Dans ce cas, nous devons sauvegarder les positions des obstacles détectés dans une structure de données qui permet au robot d'agréger facilement de nouvelles observations et de les combiner de manière à simplifier le calcul des trajectoires.

La Grille d'Occupation (Occupancy Grid Map [34]) est la structure de données la plus utilisée pour représenter l'environnement en robotique. C'est une matrice 2D où chaque cellule représente une partie de l'environnement. La taille des cellules influence le degré de détails affichés sur la grille, elle est généralement définie sur une taille égale ou inférieure à la circonférence du robot. La figure 3.9 montre un exemple de carte quadrillée.

La valeur de chaque cellule de la grille représente la probabilité que la région correspondante de l'environnement soit vide ou occupée par un obstacle. Puisque le robot n'a aucune information à priori sur la région à explorer, toutes les cellules ont une probabilité d'occupation initiale de 0,5. Cette probabilité sera mise à jour à l'aide de la règle de Bayes (équation 3.1) chaque fois que les capteurs du robot détectent une cellule vide ou occupée.

p(A/B) = p(B/A) * p(A) (3.1)

p(B)

A est la valeur d'occupation, et

B est l'observation

Une pratique courante dans le domaine de cartographie vise à utiliser les valeurs logarithmiques d'occupation au lieu des probabilités, et ceci afin de convertir les opérations de multiplication en additions tel que décrit par les équations 3.2 et 3.3.

94

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Tu supportes des injustices; Consoles-toi, le vrai malheur est d'en faire"   Démocrite