Cours:SaeRobotiqueTennis : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « =Evaluations= ==1ère évaluation== *Travail sur suivi de ligne : **on pose le robot au départ **il doit suivre cette ligne **bonus : s'arrêter lorsqu'il n'y a plus de... »)
 
(Tâches matérielles (8 jours))
 
(25 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
  
 
*Travail sur suivi de ligne :
 
*Travail sur suivi de ligne :
**on pose le robot au départ
+
**on pose le robot sur une ligne
 
**il doit suivre cette ligne
 
**il doit suivre cette ligne
**bonus : s'arrêter lorsqu'il n'y a plus de ligne
+
**et s'arrêter sur la zone centrale
*travail évitement d'obstacles
+
*travail sur détection de balle par caméra
**on pose le robot le long d'une bordure
+
**on pose le robot avec une balle visible
**il doit suivre la bordure à 10cm du bord
+
**il doit se déplacer vers la balle
**bonus : s'arrêter lorsqu'il y a un obstacle
+
**et la saisir
*travail suivi de ligne par caméra
+
**s'il n'y a pas de balle visible il doit en chercher une
**on pose le robot au départ
+
*travail suivi de cap
**le robot doit suivre la ligne
+
**on pose le robot dans une direction
**bonus :
+
**le robot doit avancer en suivi ce cap
 +
**si on le déplace il doit reprendre sa direction
  
 
==2ème évaluation==
 
==2ème évaluation==
Ligne 25 : Ligne 26 :
 
***câblage
 
***câblage
 
*la "fusion" de l'étude de la 1ère semaine avec un robot qui devra
 
*la "fusion" de l'étude de la 1ère semaine avec un robot qui devra
 +
<!-- Commentaire caché
 
**{{Rouge|au strict minimum}}
 
**{{Rouge|au strict minimum}}
 
***se déplacer(suivre) vers une balle pendant un certain temps
 
***se déplacer(suivre) vers une balle pendant un certain temps
 
***ensuite se tourner vers le terrain adverse
 
***ensuite se tourner vers le terrain adverse
 
***avancer en direction du terrain adverse jusqu'à la ligne du milieu
 
***avancer en direction du terrain adverse jusqu'à la ligne du milieu
***s'arrêter sur la ligne du milieu
+
***s'arrêter sur la ligne du milieu-->
 
**{{Rouge|pour obtenir la note maximum}}
 
**{{Rouge|pour obtenir la note maximum}}
 
***attendre l'appui sur un bouton pour que le robot démarre
 
***attendre l'appui sur un bouton pour que le robot démarre
Ligne 39 : Ligne 41 :
 
***avancer jusqu'à la ligne centrale
 
***avancer jusqu'à la ligne centrale
 
***s'arrêter
 
***s'arrêter
 
  
 
=Robot "joueur de tennis"=
 
=Robot "joueur de tennis"=
Ligne 47 : Ligne 48 :
  
  
 
+
<!--
 
* 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
 
* 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 perçage ballon
* système démarrage avec ficelle à tirer
+
* système démarrage avec ficelle à tirer -->
 +
* switch pour détection balle dans le robot
 
* système détection murs : choix du capteur distance avec liste donnée (ultrason, lidar ou infrarouge)
 
* système détection murs : choix du capteur distance avec liste donnée (ultrason, lidar ou infrarouge)
* fabrication shield pour Arduino Uno
+
* fabrication shield pour Arduino MEGA
 +
<h2>Répartition des segments du shield</h2>
 +
 
 +
<p>Le shield est divisé en <strong>trois segments</strong> (trois circuits imprimés), un par étudiant, chacun alimenté différemment et dédié à des fonctions spécifiques.</p>
 +
 
 +
<h3>Segment 1 : Du port USB jusqu'au milieu de D9</h3>
 +
<ul>
 +
  <li><strong>Alimentation :</strong> +5 V disponible sur ce segment.</li>
 +
  <li><strong>Broche D9 :</strong> non utilisée.</li>
 +
</ul>
 +
 
 +
<h4>Composants :</h4>
 +
<ul>
 +
  <li>1 × connecteur Molex horizontal pour le <strong>magnétomètre</strong></li>
 +
  <li>3 × connecteurs Molex horizontaux pour les <strong>LIDARs</strong></li>
 +
  <li>3 × LEDs d’état pour les LIDARs (boîtier 1206, handsolder)</li>
 +
  <li>
 +
    1 × LED <strong>Power</strong> pour indiquer l’état de la batterie :
 +
    <ul>
 +
      <li>Tension &gt; 12 V : LED <strong>allumée</strong></li>
 +
      <li>Tension entre 12 V et 9 V : LED <strong>clignote</strong> de 10 Hz à 0,5 Hz</li>
 +
      <li>Tension &lt; 9 V : LED <strong>éteinte</strong></li>
 +
    </ul>
 +
  </li>
 +
</ul>
 +
 
 +
<h3>Segment 2 : Du milieu de D9 jusqu'au milieu de D14/A7</h3>
 +
<ul>
 +
  <li><strong>Alimentation :</strong> +5 V et GND prélevés sur le <strong>connecteur ISP</strong> de la Pixy.</li>
 +
  <li><strong>Broches D14 et A7 :</strong> non utilisées.</li>
 +
</ul>
 +
 
 +
<h4>Composants :</h4>
 +
<ul>
 +
  <li>3 × connecteurs Grove horizontaux pour les <strong>drivers moteur (Cytron)</strong></li>
 +
  <li>1 × <strong>bouton-poussoir</strong> pour le démarrage du robot</li>
 +
  <li>1 × connecteur Molex pour le <strong>servomoteur perce-ballon</strong></li>
 +
  <li>1 × connecteur <strong> ISP – double rangée 2x3 – broches longues (stackable)</strong></li>
 +
</ul>
 +
 
 +
<h3>Segment 3 : Du milieu de D14/A7 à l'extrémité de la carte</h3>
 +
<ul>
 +
  <li><strong>Alimentation :</strong> +5 V et GND pris en haut et en bas du <strong>gros connecteur double</strong>.</li>
 +
</ul>
 +
 
 +
<h4>Composants :</h4>
 +
<ul>
 +
  <li>1 × connecteur Molex horizontal pour la <strong>détection de balle</strong> (switch)</li>
 +
  <li>2 × connecteurs Molex horizontaux pour la <strong>détection de ligne</strong> (gauche / droite)</li>
 +
  <li>2 × <strong>potentiomètres</strong> pour ajuster l’intensité des LEDs des <strong>CNY70</strong></li>
 +
  <li>Résistances associées pour les CNY70 (sur le PCB de détection de ligne on soudera uniquement le support du CNY70)</li>
 +
  <li>
 +
    1 × <strong>connecteur à vis</strong> pour l’entrée <strong>+12 V / GND</strong> de la batterie<br>
 +
    <em>Prévoir un <strong>pont diviseur de tension</strong> pour abaisser la tension de 15 V à 5 V.</em>
 +
  </li>
 +
</ul>
 +
<br><br>
 +
<p style="color: red; font-weight: bold; font-size: 1.5em;">
 +
  ⚠️ On n’utilisera pas le Timer0, car il est utilisé par Arduino pour générer les fonctions <code>millis()</code> et <code>delay()</code>.
 +
</p>
  
 
== Tâches logicielles==
 
== Tâches logicielles==
Ligne 67 : Ligne 128 :
  
 
* Rapport final :
 
* Rapport final :
** '''À envoyer au format pdf par mail avant le 27 juin 23h59'''
+
** '''À envoyer au format pdf par mail avant le 22 juin 23h59'''
 
** Description du problème posé en introduction
 
** Description du problème posé en introduction
 
** Diagramme de Gantt
 
** Diagramme de Gantt
Ligne 90 : Ligne 151 :
 
=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>
 
 
==Programmation : comment faire==
 
 
===Exécuter une action une seule fois :===
 
<source lang=cpp>
 
void loop()
 
{
 
  static bool dejaFait=false;
 
  if (dejaFait==false)
 
  {
 
      executerMonAction();
 
      dejaFait=true;
 
  }
 
}
 
</source>
 
 
===Répéter une action régulièrement===
 
{| class="wikitable"
 
|-
 
|
 
<source lang=cpp>
 
void loop()
 
{
 
  static uint32_t triggerTime=millis();
 
  uint32_t currentTime=millis();
 
 
  if (currentTime>=triggerTime)
 
  {
 
      faireMonAction();
 
      triggerTime += 500; // prochaine exécution dans 500ms
 
  }
 
}
 
</source>
 
||
 
<source lang=cpp>
 
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;
 
}
 
</source>
 
|}
 
 
===Affichage provisoire pour deboggage===
 
 
<source lang=cpp>
 
#define debug  // mode debug
 
//ou
 
#undef debug // mode sans debug
 
 
void loop()
 
{
 
  #ifdef debug
 
      Serial.println("juste si debug");
 
  #endif
 
}
 
 
</source>
 
  
 
==Composants/cartes==
 
==Composants/cartes==
Ligne 259 : Ligne 201 :
 
==liens (dont règlement concours) ==
 
==liens (dont règlement concours) ==
 
* concours robotique Cachan, lien vers le règlement en pdf : https://robotique-iut-2023.sciencesconf.org/data/pages/Reglement_rencontres_de_robotique_GEII_8_9_10_juin_2023_BUT1.pdf
 
* concours robotique Cachan, lien vers le règlement en pdf : https://robotique-iut-2023.sciencesconf.org/data/pages/Reglement_rencontres_de_robotique_GEII_8_9_10_juin_2023_BUT1.pdf
 +
* concours robotique Cachan, lien vers le règlement en pdf : https://wikigeii.iut-troyes.univ-reims.fr/images/a/a5/Coupe_GEII_-_R%C3%A8glement_-_2020.pdf
 
*[[Cours:archive SAÉ robot joueur de tennis]]
 
*[[Cours:archive SAÉ robot joueur de tennis]]
 
*[[Cours:archive SAÉ suivi de ligne]]
 
*[[Cours:archive SAÉ suivi de ligne]]
 
*https://www.youtube.com/watch?v=xH8EIqh-2_Y
 
*https://www.youtube.com/watch?v=xH8EIqh-2_Y

Version actuelle datée du 5 juillet 2025 à 06:26

Evaluations

1ère évaluation

  • Travail sur suivi de ligne :
    • on pose le robot sur une ligne
    • il doit suivre cette ligne
    • et s'arrêter sur la zone centrale
  • travail sur détection de balle par caméra
    • on pose le robot avec une balle visible
    • il doit se déplacer vers la balle
    • et la saisir
    • s'il n'y a pas de balle visible il doit en chercher une
  • travail suivi de cap
    • on pose le robot dans une direction
    • le robot doit avancer en suivi ce cap
    • si on le déplace il doit reprendre sa direction

2ème évaluation

La 2ème évaluation portera sur :

  • l'assemblage de votre robot :
    • aspect mécanique (propulseur principalement)
    • aspect électrique
      • cartes fabriquées
      • câblage
  • la "fusion" de l'étude de la 1ère semaine avec un robot qui devra
    • pour obtenir la note maximum
      • attendre l'appui sur un bouton pour que le robot démarre
      • chercher une balle
      • se déplacer(suivre) vers la balle
      • attraper la balle
      • s'orienter vers le terrain adverse
      • propulser la balle dans le terrain adverse
      • avancer jusqu'à la ligne centrale
      • s'arrêter

Robot "joueur de tennis"

Tâches matérielles (8 jours)

  • switch pour détection balle dans le robot
  • système détection murs : choix du capteur distance avec liste donnée (ultrason, lidar ou infrarouge)
  • fabrication shield pour Arduino MEGA

Répartition des segments du shield

Le shield est divisé en trois segments (trois circuits imprimés), un par étudiant, chacun alimenté différemment et dédié à des fonctions spécifiques.

Segment 1 : Du port USB jusqu'au milieu de D9

  • Alimentation : +5 V disponible sur ce segment.
  • Broche D9 : non utilisée.

Composants :

  • 1 × connecteur Molex horizontal pour le magnétomètre
  • 3 × connecteurs Molex horizontaux pour les LIDARs
  • 3 × LEDs d’état pour les LIDARs (boîtier 1206, handsolder)
  • 1 × LED Power pour indiquer l’état de la batterie :
    • Tension > 12 V : LED allumée
    • Tension entre 12 V et 9 V : LED clignote de 10 Hz à 0,5 Hz
    • Tension < 9 V : LED éteinte

Segment 2 : Du milieu de D9 jusqu'au milieu de D14/A7

  • Alimentation : +5 V et GND prélevés sur le connecteur ISP de la Pixy.
  • Broches D14 et A7 : non utilisées.

Composants :

  • 3 × connecteurs Grove horizontaux pour les drivers moteur (Cytron)
  • 1 × bouton-poussoir pour le démarrage du robot
  • 1 × connecteur Molex pour le servomoteur perce-ballon
  • 1 × connecteur ISP – double rangée 2x3 – broches longues (stackable)

Segment 3 : Du milieu de D14/A7 à l'extrémité de la carte

  • Alimentation : +5 V et GND pris en haut et en bas du gros connecteur double.

Composants :

  • 1 × connecteur Molex horizontal pour la détection de balle (switch)
  • 2 × connecteurs Molex horizontaux pour la détection de ligne (gauche / droite)
  • 2 × potentiomètres pour ajuster l’intensité des LEDs des CNY70
  • Résistances associées pour les CNY70 (sur le PCB de détection de ligne on soudera uniquement le support du CNY70)
  • 1 × connecteur à vis pour l’entrée +12 V / GND de la batterie
    Prévoir un pont diviseur de tension pour abaisser la tension de 15 V à 5 V.



⚠️ On n’utilisera pas le Timer0, car il est utilisé par Arduino pour générer les fonctions millis() et delay().

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

  • Rapport final :
    • À envoyer au format pdf par mail avant le 22 juin 23h59
    • Description du problème posé en introduction
    • Diagramme de Gantt
    • diagramme algorithme général
    • stratégie de résolution et description de chaque tâche :
    • Chiffrage incluant le matériel ainsi que les ressources humaines.
    • Évolution possible
    • Conclusion

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

Composants/cartes

liens (dont règlement concours)