Les encodeurs pour les robots mobiles
Nous recevons régulièrement des questions concernant les encodeurs pour les roues des robots mobiles. Il nous apparaît important de proposer un petit état des lieux.
Un encodeur est un dispositif électromécanique qui génère un signal électrique en fonction de la position ou du déplacement de l’élément mesuré. En robotique mobile, les encodeurs rotatifs sont utilisés pour mesurer le déplacement (sens et vitesse de rotation) de chacune des roues du robot. On ne parlera pas des encodeurs linéaires ici mais leur fonctionnement est semblable.
Un encodeur permet d’obtenir une information en quasi-temps réel sur la position et vitesse du moteur et donc d’appliquer des corrections (on parle de boucle de contrôle ) si le comportement du moteur n’est pas conforme à l’ordre qu’on lui a transmis, ce qui arrive fréquemment en fonction de la pente, de la capacité de la roue à agripper sur le sol (la roue tourne plus vite si elle patine), de la charge utile…
Sur un robot mobile à deux roues (conduite différentielle), la mesure effectuée permet de déduire le déplacement du robot, on parle d’ odométrie . L’odométrie est utilisée en conjonction avec d’autres capteurs pour réaliser des algorithmes de SLAM ( Simultaneous Localization and Mapping ), largement étudiés en robotique mobile.
Vous l’avez compris, un encodeur sur chaque roue de votre robot est indispensable !
Les différents types d’encodeurs pour robots mobiles
On distingue deux grands types d’encodeurs incrémentaux et absolus. Un encodeur incrémental génère un signal permettant de déterminer sens et vitesse de rotation tandis qu’un encodeur absolu génère une information absolue indiquant la position du capteur.
Comment fonctionne un encodeur incrémental ?
La plupart des encodeurs pour robots mobiles utilisent des capteurs optiques (mais il existe des encodeurs utilisant une information mécanique ou magnétique). L’idée est de placer un disque alternant des zones transparentes et opaques devant un capteur de lumière et de rentre le disque solidaire de l’axe de rotation de la roue. La fréquence d’apparition des zones blanches et noires (ou de tout autre principe offrant un contraste suffisant) devant le capteur de lumière va indiquer la vitesse de rotation. Le schéma suivant présente le principe de fonctionnement basique de l’encodeur :
Lorsque le disque tourne, les segments opaques bloquent la lumière alors que les segments transparents la laissent passer. Ceci génère des impulsions d’onde carrée qui peuvent ensuite être interprétées comme position ou mouvement.
Si le fonctionnement précédent indique la vitesse de rotation, il n’indique pas le sens de rotation. Ce problème est résolu dans par l’encodeur en quadrature (l’encodeur en quadrature le nom que l’on donne à l’encodeur rotatif incrémental). L’encodeur en quadrature comporte deux pistes de code dont les secteurs sont décalés de 90 degrés d’une piste à l’autre. Ces deux pistes génèrent deux signaux de sortie. Si le premier signal devance le second alors le disque tourne dans le sens des aiguilles d’une montre et dans l’autre sens dans le cas contraire. Par conséquent, en mesurant à la fois le nombre d’impulsions et les phases relatives des deux signaux on peut mesurer la position et la direction de la rotation des roues de votre robot.
Comment fonctionne un encodeur absolu ?
La structure d’un encodeur absolu est proche de celle d’un encodeur incrémental. Il y a le disque, la source de lumière et le capteur. La différence réside au niveau du disque. Au lieu de 2 ou 3 voies sur le disque comme dans l’encodeur incrémental, l’encodeur absolu utilise un disque possédant de nombreux disques concentriques chacun comportant un motif différent. La lecture de toutes les voies par un scan radial (c’est-à-dire partant du centre du disque vers l’extérieur) donne une information unique quel que soit l’orientation du disque, information correspondant à l’orientation du disque.