Cours:SaeRobotique : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(liens (dont règlement concours))
Ligne 1 : Ligne 1 :
  
 
[[Cours:SaeRobotique correction|{{Vert|<big><big>Corrections enseignants</big></big>}}]]
 
[[Cours:SaeRobotique correction|{{Vert|<big><big>Corrections enseignants</big></big>}}]]
 +
=Robot "joueur de tennis"=
  
=Organisation=
 
 
*Fonctionnement en trinôme sur 12 jours
 
**9h-12h
 
**13h30-16h30
 
*{{Rouge|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
 
 
= Séquence 1 : tâches élémentaires individuelles =
 
  
* Tâches de suivi de ligne (un étudiant sur chaque tâche) :
+
==Tâches matérielles (8 jours)==
** suivi avec caméra Pixy
 
** suivi avec capteurs photorélectifs (nombre de capteurs à choisir)
 
** suivi avec Lidar, en suivant un mur sur le côté
 
  
* s'arrêter à la fin du parcours
 
  
* À faire globalement : câblage robot, sécurité
 
  
==Livrable 1==
+
* 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
* faire des recherches pour rendre un dossier par groupe (pour mardi 30/05) expliquant : le pont en H, schéma sécurité et chaque partie (a, b, c)
+
* système perçage ballon
* évaluation le 26/05 (code + questions + fonctionnement)
+
* 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
  
= Séquence 2 : tâches complexes individuelles + réalisation shield =
+
== Tâches logicielles==
 +
(1 étudiant sur chaque étape)
 +
# Localiser balle avec caméra Pixy
 +
# Attraper balle (détection opto)
 +
# Renvoyer balle dans le camp adverse en s’orientant avec magnétomètre
 +
# Recommencer
 +
Codage des tâches en explicitant la structure du programme
  
* Tâches de suivi
+
* 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)
** Caméra Pixy : gestion des intersections (comportement programmé, par ex : droite puis gauche puis tout droit)
 
** Capteurs photoréflectifs : détection de marques à droite (si marque : on tourne à droite à l'intersection, sinon tout droit). Détection des marques à gauche : stop et recul pendant 1 seconde (environ) et on repart (pas d'arrêt sur le second passage)
 
** Lidar : suivi de mur à gauche ET à droite (priorité en suivi à droite). Faire tomber une première barre, pas la seconde.
 
  
* Trois cartes à réaliser (une par étudiant)
+
== Livrable ==
** carte avec capteurs photoreflectifs
 
** carte pour détection marques gauches et droites
 
** carte shield arduino nano
 
 
 
Note : penser à laisser libres PB3, PB4, PB5 et PB6 pour la Pixy (connecteur ICSP, cf https://commons.wikimedia.org/wiki/File:Arduino-nano-pinout.png )
 
 
 
==Livrable 2==
 
 
 
* évaluation le 05/06 (code + questions + fonctionnement)
 
 
 
= Séquence 3 : Fusion des trois tâches et programmation globale=
 
 
 
==Livrable 3 ==
 
 
 
= Rapport final =
 
  
 +
* À la fin du premier jour :
 +
** donner une organisation (en tâches, qui fait quoi)
 
* Rapport final :
 
* Rapport final :
** '''À envoyer au format pdf par mail avant le DD/MM/YY à HH'''
+
** '''À envoyer au format pdf par mail avant le jeudi 9 juin 12h'''
 
** Diagramme de Gantt
 
** Diagramme de Gantt
 
** diagramme algorithme général
 
** diagramme algorithme général
Ligne 58 : Ligne 35 :
 
** 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).
 
** 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.
 
** Chiffrage incluant le matériel ainsi que les ressources humaines.
 +
=Organisation=
 +
 +
*Fonctionnement en trinôme sur 12 jours
 +
**9h-12h
 +
**13h30-16h30
 +
*{{Rouge|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
 +
 +
  
 
=Ressources=
 
=Ressources=

Version du 12 juin 2023 à 09:14

Corrections enseignants

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.

Organisation

  • Fonctionnement en trinôme sur 12 jours
    • 9h-12h
    • 13h30-16h30
  • 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


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 (dont règlement concours)

Composants Kicad

  • Résistances :
    • symbole R
    • boitier suivant la valeur : 1206(CMS)/Axial DIN0309 (traversant)
  • Condensateur
    • symbole C
    • boitier suivant la valeur 1206(CMS)
  • Arduino Nano
    • symbole Arduino_Nano_v2.x
    • modèle 3d
      • télécharger et décompresser : Media:Arduino_nano.STEP.zip
      • dans les propriétés de la carte (éditeur de pcb), onglet modèle 3d
        • ajouter le fichier téléchargé
        • rotation X -90
        • rotation Z 90
        • décalage Z 2,5mm

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