Club robotique de Sophia-Antipolis

Accueil > Projets, études > Nos robots > Robots Eurobot > PoBot 2006 (aka Le Gobeur) > Programmation du robot 2006 > Spécifications

Spécifications

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

mercredi 15 février 2006, par Eric P., Julien H.

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.

Vos commentaires

  • Le 20 février 2006 à 13:22, par Julien H. En réponse à : Spécifications

    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)

    Répondre à ce message

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 champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.