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.