Club robotique de Sophia-Antipolis

Accueil > Projets et études > Nos robots > Robots Eurobot > PoBot 2008 (aka Mars Alien) > Programmation du robot 2009

Programmation du robot 2009

samedi 26 janvier 2008, par Julien H.

Le programme du robot est réparti sur les trois différentes cartes électroniques programmables qui le composent.

Les technologies utilisées sont les microcontrôleurs AVR, le bus I2C, la liaison série et l’affichage LCD.

 Schéma de principe

JPEG - 27.1 ko

 Description des unités programmables

La carte principale

Cette carte (EMBmega32) est équipée d’un microcontrôleur ATmega32. C’est le "cerveau" du robot qui dirigera toutes les communications ("master") et prendra toutes les décisions à destination des autres éléments intelligents de l’architecture.

Ses fonctions seront :
- configuration en début de match
- communication "console de commande" (en tests)
- détection du démarrage
- détection de la fin de match
- décisions et choix de stratégie
- lecture des capteurs
- consignes de vitesse des moteurs de propulsion

La carte odomètre

Elle lit les encodeurs (signaux en quadrature). Nous n’utilisons que les fronts montants (1024 fronts par tour) pour que le microcontrôleur ait suffisamment de temps pour répondre à la carte principale.

La carte communique sur le bus I2C en mode slave à l’adresse 0xA1. A chaque demande du maitre, elle répond en envoyant la position mesurée.

Ensuite, en attendant un autre appel (qui arrive toutes les 50 ms), la carte met à jour la position en lisant le nombre de pas sur chacun des encodeurs droite et gauche (avec une remise à zéro des compteurs pour éviter tout overflow).

La position d’un robot est composé de ses coordonnées dans le repère du terrain, ainsi que de la direction (de l’avant du robot) dans ce repère. Il y a donc 3 composants : X sur l’abscisse du repère, Y sur l’ordonnée du repère et Theta, l’orientation.

La carte odomètre envoie l’angle en degrés, mais exprime les coordonnées X et Y en pas d’encodeur, afin de garder la plus grande précision, charge à la carte principale de l’exploiter ou non. Il est par contre indispensable de transformer la variation d’angle en direction car nous avons besoin d’un angle réel (en radians) pour les opérations sinus et cosinus nécessaires pour transformer la variation de déplacement en coordonnées x et y. On fait ensuite la transformation en degrés car c’est plus lisible ;)

La carte propulsion

Cette carte commande les drivers en envoyant les signaux particuliers aux modules (sens, activation, pulse pour chaque pas) et pas directement les vitesses calculées par la carte principale.

La carte communique donc aussi sur le bus I2C (adresse 0xA2) avec la carte principale et reçoit toutes les 50 ms les nouvelles consignes de vitesse.

Une consigne correspond à un indice "objectif" d’un tableau contenant chaque délai à attendre entre deux pulses. Un autre indice sert de vitesse courante et est utilisé pour déterminer le réarmement d’un compteur.

La carte servos

Cette carte est préprogrammée (carte développée par Mindsensors) pour transcrire les consignes de servomoteur reçues sur le bus I2C en signaux électriques PWM à destination d’un des 8 servomoteurs qu’on peut y connecter.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document