Étape 6: Détails du logiciel : odométrie et mappage de champ = où suis-je ?
Une fois que nous avons des informations sur la distance parcourue par chaque roue dans une mise à jour de temps discret (odométrie), nous pouvons estimer les coordonnées de la position du robot avec la même périodicité sans aucune référence externe (dead reckoning).
Certaines bases théoriques au sujet de Lestime d’odométrie se trouve dans le livre de Johann Borenstein :
« Où suis-je ? -Capteurs et méthodes de positionnement de Robot Mobile "
et sur les pages web suivantes :
http://www.seattlerobotics.org/Encoder/200010/dead_reckoning_article.html
Le contexte mathématique et une explication profonde de la méthode utilisée, se trouve sur papier G.W. Lucas A tutoriel et modèle de trajectoire élémentaire pour les différentiels direction système de Robot roue actionneurs, disponible sur Internet :
http://Rossum.sourceforge.net/Papers/DiffSteer/DiffSteer.html
Certains algorithmes simplifiées se trouvent dans cette documentation même trop, il est donc possible d’obtenir le bon compromis entre précision et rapidité d’élaboration, en utilisant la capacité mathématique (trigonométrique) de série dsPIC33F.
On trouvera une description de la mathématique utilisé pour calculer la position dans les images attachées à cette étape. Le premier montre la signification des symboles, le deuxième affiche les formules utilisées avec ces symboles. En cliquant sur les cases en regard de chaque étape de calcul une brève description s’affiche.
À la fin, nous savons combien le robot s’installe dans cet intervalle de temps comme un delta de l’orientation, un delta sur axe X et un delta sur l’axe Y dans le champ de référence carthesian.
Cumul de chaque valeur delta dans sa propre variable, nous savons les coordonnées actuelles (position et orientation) de la plate-forme.
Afin d’éviter les erreurs de calculs (division par zéro) et le gaspillage du temps contrôleur, un contrôle doit se faire à l’avance sur les Sr et Sl variables. Définir un quasi zéro valeur qui prend soin des minimes approximations mécaniques et informatiques, nous pouvons simplifier les formules si le robot se déplace en ligne droite (l’espace couvert par la roue droite est presque identique à l’espace parcouru par la roue de gauche) ou si elle est pivotant autour de son axe vertical (l’espace couvert par la roue droite est presque identique à l’espace parcouru par la roue de gauche, mais dans une direction opposée) , comme indiqué dans le diagramme montré la dernière photo.
Cette vidéo montre un exemple de quel précision, nous pouvons obtenir :
http://www.youtube.com/watch?v=d7KZDPJW5n8
Mappage de champ
Avec des données calculées par les fonctions précédentes un mappage de champs est effectué.
Chaque Xms, après l’élaboration de position actuelle, un mappage de champs est exécuté divisant le champ inconnu dans une grille de cellules de 10 x 10cm. Définition d’une dimension de champ maximal de 5 x 5m, nous obtenons un 50 x 50 = 2500 matrice de cellules. Chaque cellule est définie avec un quartet, avec une occupation de la mémoire totale de 1250 octets. Seize différentes valeurs peuvent être assignées à chaque cellule :
n = 00 cellule inconnue
n = 01 – 10 cellule visité n fois
n = obstacle 11 trouvés
n = 12 gaz target trouvé
n = 13 cible lumineuse trouvé
n = 14 cibles sonores trouvés
Le robot peut commencer à partir de n’importe quelle position sur le terrain ; ce seront les coordonnées (0,0) de la référence dans son système de référence.
Mappage de champ est utile pour trouver la meilleure découverte de stratégie dans un domaine inconnu. Le robot peut se diriger vers la partie moins explorée du champ (valeur inférieure de « n »), peut gagner du temps en n’arrêtant ne pas deux fois dans une cible déjà découverte, peut trouver le meilleur chemin pour atteindre une coordonnée donnée et bien plus encore.