Accueil

STRATEGIES de DEPLACEMENT d'un ROBOT

DETECTION d'OBSTACLES de LIGNES et D'ETRES VIVANTS

Une fois que l'on sait commander un robot pour exécuter les déplacements de base (avancer,reculer, tourner à droite tourner à gauche) on peut les combiner pour réaliser une navigation du robot.

La navigation d'un robot:

Voyons quelques situations par ordre de difficulté , en supposant que: le robot est contrôlé par un micro Basic Stamp qui communique par liaison série avec un ordinateur ou on trouve un programme écrit en langage C#.

On notera que pour toutes ces stratégies, différents paramètres des programmes sont adaptés par tâtonnements après des essais préliminaires du robot.

Exécution directe de commandes de l' utilisateur:

Sur l' écran on crée par exemple une fenêtre avec 4 boutons pour avancer, reculer , tourner a droite, tourner a gauche et reculer, on y ajoute une barre avec un curseur pour choisir la durée des mouvements. Le dernier bouton est un stop.

Il n'y a aucune stratégie au niveau du programme dans ce cas simple.

On peut adapter ce système en remplaçant les boutons par une commande par joystick , mais il faut installer et gérer Direct X sur l'ordinateur.

Utilisation de commandes enregistrées:

On enregistre les commandes dans un tableau de chaînes de caractères (chaque lignes sert à stocker une commande) pour ce là il faut utiliser un tableau dynamique de longueur variable <ArrayList en C#> . On peut y écrire les commandes dans le programme ou mieux y faire enregistrer une suite de déplacements à mesure q'un utilisateur les fait effectuer au robot; ensuite on pourra demander au robot de refaire le même parcours en relisant les commandes stockées dans la liste et en les envoyant au robot.

Navigation par suivi d'une ligne tracée au sol:

Pour que cela fonctionne il faut sur le sol une ligne d'une couleur bien contrastée par rapport a la couleur du sol, par exemple noire sur fond blanc.

On installe sous le robot une diode émettrice de lumière (souvent infra rouge) et deux détecteurs (à droite et à gauche) qui repèrent la réflexion plus ou moins importante de la lumière , ces détecteurs renvoient des signaux au BS2 qui les transmet au programme en C# . Le programme compare les deux signaux et selon le résultat fait tourner le robot un peu plus à droite ou à gauche.

 

Navigation par évitement d'obstacles :

On utilise deux types principaux de détecteurs d'obstacles :

Nous verrons surtout le cas des détecteurs infra rouges qui sont les plus intéressants.

à l'avant du robot on fixe sur un contacteur une tige de métal souple . Si la tige rencontre un obstacle le contact s'établit et l'ordinateur reçoit un signal (de type booléen : vrai/faux). Avec une tige vers la droite et une tige vers la gauche le programme peut décider de faire tourner le robot pour s"éloigner de l'obstacle selon que un ou deux contacteurs ont été mis sur vrai. Le système est simple mais ne permet pas de s'écarter de l'obstacle avant de le rencontrer.

Les détecteurs infra rouges les plus connus sont les Sharp GP02D02 qui selon la distance d'un obstacle renvoient un code de 0 à 255. Avec deux détecteurs on peut par exemple repérer un mur ou un meuble et le programme déclenchera la rotation du robot vers la droite ou la gauche. Un des défauts de ces détecteurs est qu'ils ne détectent pas les objets de faible largeur comme les pieds de chaises ou des objets de faible hauteur comme un livre posé sur le sol , alors que des contacteurs placés prés du sol les repèrent. DE sorte que souvent on combine les deux..

Pièges domestiques pour robots :

Dans un appartement un robot est menacé par différents pièges : voyons comment en éviter quelques uns.

On place sous la partie avant du robot , soit un détecteur de contact soit un détecteur de réflexion lumineuse : lorsque le contact est rompu ou le rayon n'est plus renvoyé le robot recule et tourne.

D'autres détecteurs placés sous le robot peuvent déclencher l'arret des moteurs si ils ne repèrent plus le sol sous le robot : utile pour arrêt automatique lorsqu'on prend un robot posé par terre ou encore si le robot légèrement soulevé du sol par un obstacle risque de ne plus avancer.

Dans ce cas un programme trop simple fait tourner le robot a droite ou il détecte un mur, puis à gauche ou il détecte un autre mur ,, puis à droite...etc... Pour éviter le blocage il faut un programme qui passe à une solution de rechange lorsq'une suite de mouvements droite/gauche se répète . On peut par exemple , enregister les 10 derniers mouvements du robot dans une <queue en langage C#) : c'est une sorte de tube ou on pousse les commandes que vient de faire le robot à l'entrée et elles sortent à l'autre bout de sorte que seules les 10 dernières y sont à un moment donné. En examinant le contenu du tube on y repère facilement des suites de commandes répétitives , ce qui déclenche le changement de programme de déplacement.

Les tapis très épais ou les robots s'enlisent et les meubles bas sous les quels ils se bloquent sont des obstacles plus difficiles à éviter.

Pour les tapis , un contact de sol peut repérer la perte plus ou moins forte d' adhérence.

Mais si le sommet d'un robot touche au sommier d'un lit il lui est plus difficile de s'en sortir seul, d'ailleurs c'est souvent dans des endroits de ce genre qu'on retouve bloqués les robots aspirateurs du commerce.

Quand un robot se trouve bloqué le plus urgent est qu'il arréte ses moteurs pour éviter une surchauffe et l'épuisement de ses batteries. Les robots amateurs n'ont pas souvent des détecteurs de ce genre.

 

Repérage de la position d'un robot:

On pourrait penser qu'un robot sait à chaque instant ou il est, en réalité la plus part du temps il ne le sait pas avec précision. On doit distinguer un repérage relatif (par rapport au point de départ ) et un repérage absolu.

Le positionnement d'un robot de grande taille fonctionnement en extérieur peut se faire comme pour une voiture en absolu par GPS, pour un petit robot fonctionnant à l'intérieur on a recours à d'autres solutions.

il peut être fourni par l'utilisateur ou créé par le robot par exploration du site puis par exemple reporté dans un jeu de cellules comme on en trouve dans Excel en mettant des bords épais a la face des cellules correspondant à un obstacle.Néanmoins, il faudra au départ que le robot sache ou il est sur le plan : soit parcequ'on le place toujours de la même façon au départ , soit parcequ'il fait une sorte de tour d'horizon pour essayer de se repérer (sur des balises , des bords de table ou des obstacles) .

Dans ce cas la difficulté est que le robot , en absence de balises externes, ne sait pas avec une grande précision quel chemin il a parcouru aprés une commande de déplacement . En effet:

En combinant un plan et des réajustements par détection infra rouge d'obstacles ou de marques au sol , balises ou autres, on peut améliorer les résultats.

Pour l'utilisation du plan on est face à un probléme de déplacement dans un labyrinthe : il y a différentes façons de s'en sortir , ce n'est pas trés simple.(voir ici).

 

Détection d'étres vivants