|
|
(52 révisions intermédiaires par 2 utilisateurs non affichées) |
Ligne 1 : |
Ligne 1 : |
− | https://www.youtube.com/watch?v=xH8EIqh-2_Y
| |
| | | |
| [[Cours:SaeRobotique correction|{{Vert|<big><big>Corrections enseignants</big></big>}}]] | | [[Cours:SaeRobotique correction|{{Vert|<big><big>Corrections enseignants</big></big>}}]] |
| | | |
− | =Organisation=
| |
| | | |
− | *Fonctionnement en trinôme sur 12 jours
| + | [[Cours:SaeRobotiqueSuiviLigne]] |
− | *{{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
| |
| | | |
− | =Tâches élémentaires (4 jours)=
| |
| | | |
| + | [[Cours:SaeRobotiqueTennis]] |
| | | |
− | * 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"=
| |
| | | |
| + | ==Composants Kicad== |
| | | |
− | ==Tâches matérielles (8 jours)==
| + | *Résistances : |
− | | + | **symbole R |
− | | + | **boitier suivant la valeur : 1206(CMS)/Axial DIN0309 (traversant) |
− | | + | *Condensateur |
− | * 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 | + | **symbole C |
− | * système perçage ballon | + | **boitier suivant la valeur 1206(CMS) |
− | * système démarrage avec ficelle à tirer | + | *Arduino Nano |
− | * système détection murs : choix du capteur distance avec liste donnée (ultrason, lidar ou infrarouge) | + | **symbole Arduino_Nano_v2.x |
− | * fabrication shield pour Arduino Uno | + | **modèle 3d |
− | | + | ***télécharger et décompresser : [[Media:Arduino_nano.STEP.zip]] |
− | == Tâches logicielles==
| + | ***dans les propriétés de la carte (éditeur de pcb), onglet modèle 3d |
− | (1 étudiant sur chaque étape)
| + | ****ajouter le fichier téléchargé |
− | # Localiser balle avec caméra Pixy
| + | ****rotation X -90 |
− | # Attraper balle (détection opto)
| + | ****rotation Z 90 |
− | # Renvoyer balle dans le camp adverse en s’orientant avec magnétomètre
| + | ****décalage Z 2,5mm |
− | # 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 :
| |
− | | |
− | <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>
| |
− | | |
− | ==Programmation : comment faire==
| |
− | | |
− | ===Exécuter une action une seule fois :===
| |
− | <source lang=cpp>
| |
− | bool dejaFait=false;
| |
− | | |
− | if (dejaFait==false)
| |
− | {
| |
− | executerMonAction();
| |
− | dejaFait=true;
| |
− | }
| |
− | </source>
| |
− | | |
− | | |
− | ===Répéter une action régulièrement===
| |
− | <source lang=cpp>
| |
− | void loop()
| |
− | {
| |
− | static uint32 triggerTime=millis();
| |
− | uint32_t currentTime=millis();
| |
− | | |
− | if (currentTime>=triggerTime)
| |
− | {
| |
− | faireMonAction();
| |
− | triggerTime += 500; // prochaine exécution dans 500ms
| |
− | }
| |
− | }
| |
− | </source>
| |
− | | |
− | ==Composants/cartes==
| |
− | *divers
| |
− | **Commutateur d'arrêt d'urgence https://fr.farnell.com/idec/yw1b-v4e01r/commut-bp-e-stop-spst-nc-10a-120v/dp/2833849?ost=2833849 | |
− | **Régulateur ajustable 1,25 à 30 Vcc https://www.gotronic.fr/art-regulateur-ajustable-1-25-a-30-vcc-gt134-26094.htm | |
− | *driver de moteur | |
− | **https://www.cytron.io/p-13amp-6v-30v-dc-motor-driver | |
− | *capteurs de distance/contact
| |
− | **HC-SR04 cf fiche technique sur la page : https://www.gotronic.fr/art-module-de-detection-us-hc-sr04-20912.htm
| |
− | **VL53L1X
| |
− | ***https://www.robotshop.com/eu/fr/platine-deploiement-capteur-distance-tof-regulateur-tension-vl53l1x.html
| |
− | ***https://github.com/pololu/vl53l1x-arduino
| |
− | **Mini Microrupteur - SPDT https://www.robotshop.com/eu/fr/mini-microrupteur-spdt-levier-rouleau.html
| |
− | **CNY70
| |
− | ***http://pierrecaulet.free.fr/Stage_BEN_02-20020/_%20Stage_02_2020_Seance-04/Detection_IR/index_IR.html
| |
− | ***http://electro.patgue.com/Ressources_isi2/Robot%20ISI2%20Etude%20du%20capteur.pdf
| |
− | **GP2Yxxxx https://www.gotronic.fr/art-capteur-de-mesure-sharp-gp2y0a41sk0f-18338.htm
| |
− | **lidar tfmini-s
| |
− | ***https://www.robotshop.com/eu/fr/module-micro-lidar-tfmini-s-benewake-i2c-12m.html
| |
− | ***https://www.arduino.cc/reference/en/libraries/tfmpi2c/
| |
− | **lidar Lite 3
| |
− | ***https://www.robotshop.com/eu/fr/capteur-distance-laser-haute-performance-lidar-lite-3-llv3hp.html
| |
− | ***https://github.com/RobotShop/LIDARLite_v3_Arduino_Library
| |
− | *caméra
| |
− | **pixyv2
| |
− | ***https://pixycam.com/pixy2/
| |
− | ***[[Cours:TPS_2103_tp_pixy|TP caméra pixy]]
| |
− | *IMU | |
− | **Explications du principe du capteur mpu9250 : https://learn.sparkfun.com/tutorials/mpu-9250-hookup-guide/all | |
− | **Bibliothèque à utiliser : dans le gestionnaire de bibliothèque => ''by hideakitai'' (v 0.4.8) ou https://github.com/hideakitai/MPU9250
| |
− | **Étapes :
| |
− | ***Réaliser la calibration et noter les valeurs affichées,
| |
− | ***les entrer dans votre programme (fonctions setMagBias() et setMagScale() | |
− | ***Pour réaliser une mesure : | |
− | **** attendre que la fonction mpu.available() renvoie ''true'' | |
− | **** appel de la fonction update_mag() | |
− | **** puis appel des fonctions getMagX() et getMagY() pour récupérer les composantes x et y. L'angle vers le nord magnétique est obtenu avec l'inverse de la tangente (attention au signe) | |
− | *Robot Arrex :
| |
− | ** [[Cours:RobotArrex]] (section documents)
| |
− | ** avec shield moteur
| |
− | | |
− | ==liens==
| |
− | | |
− | *[[Media:Coupe_GEII_-_Règlement_-_2020.pdf| règlement de la coupe de robotique]]
| |
| | | |
| ==Composants eagle== | | ==Composants eagle== |