Trobot1

From Eric

(Difference between revisions)
Jump to: navigation, search
m
Line 65: Line 65:
===== Détection d'obstacle par caméra vidéo =====
===== 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é des moyens d'acquisiion vidéos envisageables.
+
On se référera à la page intitulée [[utilisation d'une caméra avec un microcontrôleur]] pour une description détaillé des moyens d'acquisiion 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?
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?
Line 78: Line 78:
====== Stéréoscopie ======
====== Stéréoscopie ======
-
<<A compléter>>
+
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 ====
==== Télémétrie ====
Line 85: Line 85:
  [[File:trobot_bluetooth.jpg|100px|thumb|none]]
  [[File:trobot_bluetooth.jpg|100px|thumb|none]]
 +

Revision as of 19:56, 2 April 2011

Contents

Objectifs

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

Réalisation

La plateforme mécanique

TRobot1 est réalisé en plexiglas et aluminium plus ou moins bien coupés et assemblés. 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 infra-rouge 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 infra-rouge

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'acquision de la valeur du capteur s'effectue en deux phases :

  • lancement de l'acquision
  • 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 obtnue par interpolation à partir des données 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).

Au 15 février 2011, ce mode de détection est encore en cours d'investigation. Un premier montage (voir photo ci-après) a été réalisé, mais il ne fournit pas un signal très "propre" : une refonte s'impose...

Sonar.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é des moyens d'acquisiion 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 intersecte 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

A terme, la carte disposera d'une fonction de télémétrie réalisée sur la base des coupleurs bluetooth BTM-5 ci-après :

Trobot bluetooth.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ées 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éferera une souris PS/2 plus facile à interfacer avec un micro-contrô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. En outre, comme toute technique reposant sur la mesure d'un déplacement, les erreurs s'accumulent avec les déplacements.

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