Module odométrie

De Pensée Profonde - Club de robotique
Révision datée du 30 mai 2010 à 12:04 par Rom1 (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

En cours de rédaction !!!!

Principe Général

Le module a pour objectif de fournir une information de position dans un repère orthogonal 2D (X,Y). Cela ce se résume à 3 valeurs:

  • position en X
  • position en Y
  • orientation Ө

Le positionnement est dit "relatif" et dépend de la position de départ (généralement l'origine du repère X=0, Y=0, Ө=0). Il est donc inévitable d'avoir une dérive liée à l'accumulation d'erreurs successives. La correction et la compensation de ces erreurs fera l'objet d'un chapitre à part entière.

Il ne s'agit pas d'un asservissement mais uniquement d'un tracking de position. L'asservissement en position est réalisé par un second module qui exploite les informations de ce module.


Les capteurs

Différents types de capteurs permettent d'obtenir des informations de position, de déplacement, d'accélération ou de vitesse. Leur mesures sont plus ou moins fiables (bruit, dérive...) et complexe à exploiter (lecture directe, intégration simple ou double...). Se pose également la question du rapport qualité/prix. Notre cahier des charges:

  • fourni une information de déplacement et/ou d'orientation
  • fiabilité
  • simplicité d'utilisation
  • rapport qualité/prix


Le premier chapitre présente les capteurs recalés et les raisons de ce choix. La module utilise 2 types de capteurs afin d'améliorer les résultats: les 2 chapitres suivants présentent les capteurs retenus. Enfin le dernier chapitre présente l'utilisation qui est fait de ces capteurs.


Les éliminés

Accéléromètre et Gyroscope

Ces composants MEMS sont fortement bruités et souffrent d'une dérive importante. De plus un changement d'inclinaison minime ainsi que les vibrations faussent fortement les mesures. L'utilisation de plusieurs composants permet de s'affranchir de certaines problématiques mais complique fortement la réalisation.
Des centrales inertielles (IMU) reposent sur le couple accéléro+gyro mais de meilleure qualité et en plus grand nombre. Elles restent hors de prix (1200€ pour les moins chères, plus de 3000€ généralement) et plutôt volumineuses.

Télémètre et Balise

Ils permettent un positionnement absolu mais imposent des pré-requis importants. Télémètres: Connaitre parfaitement l'environnement et que celui-ci n'évolue pas (pas d'obstacle mobile). Mesure d'orientation complexe. Balises et "LandMark": Installation préalable de balises actives ou passives. C'est un projet complexe à part entière.

Boussole

Les boussoles numériques fournissent une orientation absolue grâce au champ magnétique terrestre. Elles souffrent d'imprécision lorsque l'environnement magnétique est très perturbé. La présence de moteurs changeant de régime ainsi que la structure métallique du robot ou du terrain parasitent les mesures.


Premiers capteurs: Les encodeurs

Ils fournissent une information de déplacement selon 1 axe sous forme de 2 signaux en quadrature (pour connaitre le sens) et éventuellement d'un index. Le nombre d'impulsions par tour dépend du modèle d'encodeur mais pour obtenir une information précise un minimum de 500i/t est indispensable. Le cout moyen se situe de 30 à 150€ pièce ce qui en fait un investissement moyen.
Ils doivent être placés sur des roues non motrices les plus fines et les plus écartées possible. On augmente ainsi la précision des mesure angulaire et on réduit les risques d'erreurs liées aux glissements.

Seconds capteurs: Les capteurs de souris optique

Ils fournissent une information de déplacement selon 2 axes perpendiculaires. Les valeurs sont accessibles dans 2 registres via une connexion série (très proche de l'i2c). Leur vitesse maximale dépend du modèle; elle est généralement supérieure à 30cm/s.
Les capteurs doivent être situés à hauteur fixe et constante du sol (quelques mm si lentille d'origine) et les résultats sont variant en fonction de la surface. Il faut donc être attentif au placement des capteurs et à l'éclairage.

Les modèles retenus sont les ADNS-2610 et ADNS-2620. Leur vitesse limite tourne autour de 35cm/s et un robot rapide pourra donc rencontrer quelques problèmes. Dans ce cas de meilleurs capteurs pourront corriger les problèmes sans pour autant repenser l'asservissement complet (ADNS-5060 par exemple).


Électronique

Choix du micro-contrôleur

Ce que doit être capable de faire l'électronique:

  • s'interfacer avec 2 codeurs en quadrature + index.
  • s'interfacer avec 2 capteurs de souris optique
  • réaliser des calculs trigonométriques
  • communiquer en i2c (slave)

Le problème majeur se situe dans la réalisation de toutes ces tâches en parallèle. Il ne faut pas par exemple qu'un calcul complexe ne fasse "sauter des pas" dans la lecture des codeurs.


Fidèle à nos habitudes nous allons du coté de chez Microchip.
Ils proposent une gamme de micro-contrôleurs disposant d'un module dédié à la lecture des encodeurs en quadrature (QEI MFM). Nous sommes ainsi déchargé du décodage des signaux pour déduire le sens de rotation et assurés qu'aucun pas ne sera oublié. La configuration est relativement complète et permet de le décodage en 1x, 2x et 4x, des interruptions sur un nombre d'impulsion ou le passage de l'index.
La puissance de calcul devrait être suffisant puisque cela s'échelonne de 10 à 40mips, sur 8 ou 16bits.
Coté i2c et communication avec les capteurs de souris optique pas de problème. Un module SSP (spi+i2c) est presque toujours présent, les pin libres permettent de connecter les capteurs (3).

  • Premier composant: le PIC18F2x31. Son principal défaut est qu'il ne propose qu'un module QEI. Il faut soit 2 PIC soit géré un codeur manuellement.
  • Second composant: le dsPIC33FJ128MC202. Il propose 2 QEI, sa puissance et sa mémoire sont supérieures à celles du 18F. Par contre il n'est disponible qu'en 3.3V (demande donc pas mal d'adaptation de niveaux) et seul les modèles 28 broches sont disponibles en package DIP.

Nous retenons le dsPIC car il offre le plus d'avantages. Son port i2c sera interfacé via un adaptateur de niveaux à opto-coupleurs. Le modèle 28 broches dispose de peu d'entrée "5v compliant" mais il reste possible de connecter directement 2 ADNS via 3 pin (clk commune). Par contre il devient difficile de tout concilier si on veut en plus utiliser l'icsp. Pour aller plus loin on peut utiliser un modèle 44, 64 ou 100 broches (64/100 dispo sur d'autres dsPIC) avec un PCB d'adaptation TQFP>DIP (même pas 1€50).

dsPIC33F

Que faut il pour faire marcher la bête ?

  • Une source 3.3v. Un simple régulateur linéaire suffit vu la faible consommation.
  • Un quartz 8mHz. Via la PLL interne on obtient les 80mHz du core. On pourrait utiliser la clock interne mais pour plus de précision un quartz externe est préféré.
  • Un adaptateur de niveau bidirectionnel pour l'i2c en 5V. On utilise un composant un peu plus complet puisqu'il s'agit d'un optocoupleur spécial i2c : Si8400AA-B-IS.
  • Un adaptateur de niveaux pour les encodeurs. C'est unidirectionnel donc un simple 74HC4050 suffit. Il est disponible en DIP ou en SOIC. DS TI & DS NXP
  • Pour les capteurs de souris nous utilisons des entrées "5v compliant". Nous pourrions utiliser aussi un capteur en 3.3v mais aucun de disponible à l'unité... on va utiliser du 5v pour le proto ;)
  • Des condos, des résistances et des diodes... le passif habituel !


Liens

Quelques liens: