Le javascript est désactivé sur votre navigateur
 
Prononcer /'po.bot/
Accueil du siteNos robotsRobots EurobotPoBot 2006 (aka Le Gobeur) Programmation du robot 2006
  publication inférieure à 7 jours
  publié < 7j sous cette rubrique
     
À propos de l'article
    Publié le 15 février 2006
    par Eric P. , Julien H.

    Mis à jour le 15 février 2006
Choisir votre langue :

Spécifications

première version du programme destiné à simuler le robot

Voici les specs établies en vue d’une utilisation dans le simulateur. On gardera le même principe dans le microcontrôleur.

 Fonction obligatoire


void progress(
   double deltaTime,    // délai depuis l'appel précédent
   double newTime,        // instant courant
   ContextPtr context,     // passage des données de contexte
   SetPointsPtr setpoints  // retour des consignes
   ) ;

 Définitions


typedef struct {
 single x,        // position X
 single y,        // position X
 single heading    // cap
} Context, *ContextPtr ;

Conventions

- origine au centre du terrain
- coordonnées exprimées en mm
- nord en direction du camp adverse
- axe des Y aligné sur le nord
- cap exprimé en degrés, par rapport au Nord, orientés trigo
- délais et temps exprimés en secondes
- origine du temps absolu au moment du démarrage du contrôleur


typedef struct {
 single motor_left,    // consigne de vitesse moteur gauche
 single motor_right    // consigne de vitesse moteur droit
} SetPoints, *SetPointsPtr ;

Conventions
- consignes exprimés en % de la vitesse maxi
- vitesse maxi définie par configuration, ou bien retournée par la fonction facultative getConfigParms
- plage de variation : [-1.0, +1.0]
- 1 fonction facultative retournant des paramètres de config du robot


void getConfigParms(
   ConfigParmsPtr parms    // retour des paramètres de config
   ) ;

avec les définitions suivantes :


typedef struct {
 single maxSpeed ;    // vitesse maxi des moteur en deg/s
} ConfigParms, *ConfigParmsPtr ;

J’ai volontairement utilisé des structures pour les raisons suivantes :
- plus grande efficacité de transmission et récupération de données (passage par pointeurs)
- immunité aux évolutions d’interface : si on ajoute des champs dans les structures, les anciennes versions du code continuent à fonctionner puisqu’elles n’utilisent pas ces nouveaux champs. Seule contrainte : ne pas modifier les parties existantes d’une version sur l’autre.

 
Répondre à cet article
Vous avez aimé cet article ? Merci de nous recommander !
Commentaires :
  1. Julien
    lundi 20 février 2006 à 13:22
    Répondre Fil de discussion

    pour l’instant, j’ai écrit du code "hors simulateur". je vais faire une version qui utilise ces spécifications. (mise à jour du contexte puis appel de la machine à état depuis le process)

    par contre j’imagine que le contexte sera complété pour prendre en compte différents événements (capteurs du simulateur, touches pour faire la jack)

    l’un des intérêts du simulateur sera de "stresser" le robot pour faire apparaitre des événements "non réalistes" (ou plutôt non simulables) comme la détection d’une tache bleue là où il n’y en a pas, etc..

    le plus simple serait d’assigner des touches clavier et envoyer la lettre de la touche au code du contrôleur (dans le context) qui se charge de l’interpréter (plus simple)