Cours:SaeRobotique : Différence entre versions
(→Ressources) |
|||
Ligne 57 : | Ligne 57 : | ||
=Ressources= | =Ressources= | ||
+ | |||
+ | ==structure du programme== | ||
+ | |||
+ | Vous pourrez utiliser la structure de programme suivante : | ||
+ | |||
+ | <source lang=cpp> | ||
+ | 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; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ==liens== | ||
+ | |||
*[[Media:Coupe_GEII_-_Règlement_-_2020.pdf| règlement de la coupe de robotique]] | *[[Media:Coupe_GEII_-_Règlement_-_2020.pdf| règlement de la coupe de robotique]] |
Version du 9 mai 2022 à 10:31
Sommaire
Cahier des charges
- Fonctionnement en trinôme sur 12 jours (préparer des groupes de niveaux)
- De 9h-12h / 14h-17h, sauf jeudi 9h-12h uniquement
Tâches élémentaires (4 jours)
-> ajouter liste matériel avec liens vers doc
- Trois tâches principales (déplacements) : un étudiant sur chaque tâche
- aller vers la balle : caméra
- 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
- À 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"
Point de départ sur Arduino Uno : éventuellement switcher si besoin.
Tâches matérielles (8 jours)
(Logiciel fabrication : freecad ou openscad. Leur faire une démonstration (2 heures env.)
- 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)
- 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
- 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 :
- 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).
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;
}