Trobot1

From Eric

Jump to: navigation, search

Contents

Objectifs

Un prétexte pour explorer le domaine de l'électronique...

Réalisation

La plateforme mécanique

TRobot1 est réalisé en pièces de plexiglas et aluminium plus ou moins bien coupées et assemblées. Il dispose de deux moteurs de propulsion à courant continu munis de leurs réducteurs planétaires (sorties coaxiales) et de deux magnifiques "roues folles" surdimensionnées.

Il est très laid et bien lourd.

Voici la chose dévoilant ses moteurs à courant continu.

Robot m1 motors.png

Et son capteur infrarouge monté sur son moteur pas-à-pas.

Robot m1 ir.png

La plateforme électronique

La commande des moteurs

Au premier février 2011, la carte de commande des moteurs est achevée. La voici, sur le robot :

Trobot cmde moteurs.jpg

Il s'agit d'une carte hybride, mêlant wrapping et soudure. On y distingue les 8 MOSFET des pont en H de commande des moteurs de propulsion avec les drivers correspondants, et le L298 de commande du moteur pas-à-pas. J'y rajouterai sans doute un contrôle de l'intensité.

Les moteurs de propulsion sont commandés en PWM. Le signal PWM est généré de façon autonome par le microcontrôleur qui dispose de 2 voies PWM (timers 16 bits). La programmation des timers est décrite dans la section dédiés à l'Atmega32.

La carte de contrôle

La carte de contrôle reprend peu ou prou la carte à base d'Atmega 32 décrite ici. J'ai simplement supprimé l'écran, l'horloge temps-réel et la télécommande (pour l'instant), afin de libérer des broches d'entrée-sortie.

Voici la carte :

Trobot controle.jpg


Les fonctions principales

Détection d'obstacles

Détection d'obstacles par infrarouge

Il s'agit d'estimer la distance à un obstacle --- et non seulement de déterminer la présence d'un obstacle --- par un moyen optique.

Le capteur de distance est un capteur optique Sharp qui fournit un signal analogique dont la valeur dépend de la distance à l'obstacle. Le signal d'entrée est simplement connecté à l'une des entrées analogique de la carte de contrôle.

L'acquisition de la valeur du capteur s'effectue en deux phases :

  • lancement de l'acquisition
  • traitement de l'interruption de fin de conversion

Il est à noter que la relation entre la valeur du signal et la distance n'est pas linéaire ; cette valeur est obtenue par interpolation à partir des données du constructeur.

Détection d'obstacle par ultra-sons

Il s'agit d'estimer la distance à un obstacle --- et non seulement de déterminer la présence d'un obstacle --- par un moyen sonore (sonar). Le détecteur est décrit dans la section télémètre à ultrasons.

La version prototype :

Sonar.jpg

La version finale :

Sonar final.jpg
Détection d'obstacle par caméra vidéo

On se référera à la page intitulée utilisation d'une caméra avec un microcontrôleur pour une description détaillée des moyens d'acquisition vidéos envisageables (et mis en oeuvre).

A supposer la capacité d'acquérir une image vidéo, comment peut-on en déduire une information sur la présence d'obstacle et, plus particulièrement, leur distance?

Marquage laser

Cette première solution consiste à projeter un marqueur (par ex. point lumineux issu d'un faisceau laser) au sol devant le robot. En l'absence d'obstacle, ce point est perçu à une position fixe dans une image capturée vers l'avant du robot. En cas de présence d'obstacle, le point lumineux va apparaître à une distance variable en fonction de l'endroit où le faisceau rencontre l'obstacle.

Si les seuls obstacles sont les murs ou tout objet présentant une surface plane perpendiculaire au plan du sol, on peut aussi déterminer la distance entre le robot et l'obstacle.

Cette solution a l'avantage de ne pas nécessiter de gros traitements d'images (comme ceux que l'on devrait réaliser si on voulait se baser sur la stéréoscopie (mise en correspondance de deux images prises de deux endroits différents situés à des distances connues).

Stéréoscopie

L'utilisation de deux caméras filmant la même scène selon des points de vue légèrement différents devrait permettre de déterminer les distances, pour peut que l'on puisse corréler les images.

Télémétrie

La carte utilise un coupleurs bluetooth BTM-5 pour transmettre les données de télémétrie à un petit boitier de TM/TC générique.

Ce boitier comprend 2 LEDs, un écran LCD ainsi qu'un synthétiseur vocal (oui...), le voila :

Tm tc.jpg


Localisation

La localisation du robot dans son environnement est le problème. Naturellement, il est inutile de vouloir utiliser un GPS pour localiser un robot au centimètre près!

Parmi les solutions envisageables :

  • Utilisation d'un accéléromètre et d'un gyroscope solid state (ou d'un compas) pour calculer la position par intégration. Je n'y crois pas vraiment.
  • Repérage de position au moyen de points de repères positionnés dans la pièce. Ces points de repère peuvent être positionnée à dessein, telles des LEDs infrarouges observables au moyens de phototransistors, où être déterminés par le robot lui-même au moins d'une caméra. Dans les deux cas, le robot calcule sa position par triangulation.
  • Mesure de déplacement au moyen de capteurs de position montés sur les roues (mais gare aux glissements).
  • Mesure de déplacement au moyen d'un capteur optique, à la façon de ce qui est utilisé pour les souris optiques.

Cette dernière solution me semble assez astucieuse et simple car il suffit de démonter une souris à 8€ pour récupérer le capteur et son électronique (on préférera une souris PS/2 plus facile à interfacer avec un microcontrôleur). Par contre, le capteur doit être placé très près du sol, ce qui pose problème si le sol n'est pas plan. L'alternative consiste à mesurer le déplacement des roues en plaçant les capteurs sur les roues, mais gare aux glissements... En outre, comme toute technique reposant sur la mesure d'un déplacement, les erreurs s'accumulent avec les déplacements.

On trouvera dans l'article sur les souris PS/2 quelques informations sur cette technique. La photo suivante montre la carte d'acquisition réalisée, à base d'Atmega64 :

Carte odo souris.jpg
Orientation par compas magnétique

Le robot est muni d'un compas électronique sur bus I2C. Ce compas utilise le composant MMC212xMG de MEMSIC. Il permet la mesure du champ magnétique selon deux axes ; l'orientation est déduite de ces deux valeurs. La mise en oeuvre de ce composant, sur un Atmega32 est donné ici.

Conclusions et leçons

Aucune...

Personal tools