Cours:SaeRobotique

De troyesGEII
Aller à : navigation, rechercher

https://www.youtube.com/watch?v=xH8EIqh-2_Y

Corrections enseignants

Organisation

  • Fonctionnement en trinôme sur 12 jours
  • Compte rendu écrit quotidien individuel
    • sera contrôlé chaque matin
    • doit indiquer les tâches réalisées la veille
    • doit indiquer le travail à réaliser le jour même

Tâches élémentaires (4 jours)

  • Trois tâches principales (déplacements) : un étudiant sur chaque tâche
    • aller vers la balle (caméra Pixy)
    • détecter les lignes (suivre petites lignes, s’arrêter sur ligne centrale) : capteurs de ligne => carte à faire (prototypage puis shield)
    • s’orienter : magnétomètre (MPU9250)
  • À faire globalement : câblage robot, sécurité

Livrable

  • faire des recherches pour rendre un dossier (pour le lundi qui suit) expliquant : le pont en H, schéma sécurité et chaque partie (a, b, c)
  • mini-concours à la fin des quatre jours :
    • traversée la plus rapide en ligne droite (avec magnéto)
    • aller vers la balle le plus rapidement possible
    • suivre ligne et stop ligne centrale le plus rapidement possible

Robot "joueur de tennis"

Tâches matérielles (8 jours)

  • mat pour tenir ballon : on donne un tube (32) à couper (prévoir boite à onglet et scie) avec la base et les étudiants doivent fabriquer le support ballon
  • système perçage ballon
  • système démarrage avec ficelle à tirer
  • système détection murs : choix du capteur distance avec liste donnée (ultrason, lidar ou infrarouge)
  • fabrication shield pour Arduino Uno

Tâches logicielles

(1 étudiant sur chaque étape)

  1. Localiser balle avec caméra Pixy
  2. Attraper balle (détection opto)
  3. Renvoyer balle dans le camp adverse en s’orientant avec magnétomètre
  4. Recommencer

Codage des tâches en explicitant la structure du programme

  • Ajouter transmission sans fil pour supervision/débogage (Xbee ou HF) : affichage sur terminal pc de l’étape en cours (et éventuellement état de variables)

Livrable

  • À la fin du premier jour :
    • donner une organisation (en tâches, qui fait quoi)
  • Rapport final :
    • À envoyer au format pdf par mail avant le jeudi 9 juin 12h
    • Diagramme de Gantt
    • diagramme algorithme général
    • stratégie de résolution de chaque tâche
    • Mini-concours à la fin pour sélectionner le meilleur robot (évaluation des capacités du robot, par étudiant en fonction de l'organisation prévue).
    • Chiffrage incluant le matériel ainsi que les ressources humaines.

Ressources

structure du programme

Vous pourrez utiliser la structure de programme suivante :

enum state {etapeInit,etapeChercheBalle,etapeDeplacementVersBalle};

state etapeSuivante=etapeInit;
state etapeActive=etapeInit;


void setup() {

}

void loop() {

  // lecture des capteurs

  switch (etapeActive)
  {
    case etapeInit:

            // si ... etapeSuivante=
            break;
    case etapeChercheBalle:

            // si ... etapeSuivante=
            break;
    case etapeDeplacementVersBalle:

            // si ... etapeSuivante=
            break;
  }

  // on modifie l'étape active pour la prochaine boucle
  etapeActive=etapeSuivante;
}

Programmation : comment faire

Exécuter une action une seule fois :

void loop()
{
   static bool dejaFait=false;
   if (dejaFait==false)
   {
      executerMonAction();
      dejaFait=true;
   }
}

Répéter une action régulièrement

void loop()
{
   static uint32_t triggerTime=millis();
   uint32_t currentTime=millis();

   if (currentTime>=triggerTime)
   {
       faireMonAction();
       triggerTime += 500; // prochaine exécution dans 500ms
   }
}
void loop()
{
   static uint32_t triggerTime=0;
   uint32_t currentTime=millis();

  switch (etapeActive)
  {
    ....
    case etapeX:
            if ( qqch)
            {
               etapeSuivante=etapeY;
               triggerTime=currentTime;
            }
            break;
    case etapeY:
            if ( currentTime >= (triggerTime + duree ) )
            {
               etapeSuivante=etapeZ;
            }
            break;
    case etapeZ:
            ...
            break;
  }
  etapeActive=etapeSuivante;
}

Affichage provisoire pour deboggage

#define debug   // mode debug
//ou
#undef debug // mode sans debug

void loop()
{
   #ifdef debug
       Serial.println("juste si debug");
   #endif
}

Composants/cartes

liens

Composants eagle

Type Composant/Boitier Librairie Eagle Référence eagle
Résistance CMS : 1206 rcl R-EU_R1206
Photocoupleur CNY70 CNY70 CNY70
Led 5mm ou 3mm led LED5MM ou LED3MM
Connecteur barrette femelle sécable con-lstb MA06-1
Connecteur grove carte driver moteur ... Connector TWIG-4P-2.0