RobotiqueCoupeGEII2 : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m (F.sisternas a déplacé la page Machine Vachette vers RobotiqueCoupeGEII2 : rétablir)
 
(4 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
 
=Présentation du projet=
 
=Présentation du projet=
  
Un fil pilote est un conducteur utilisé pour transmettre des commandes à des appareils raccordés sur le secteur.<br />
+
Le but du robot est d’envoyer un maximum de balle dans le camp adverse sans jamais y entrer et sans contrôler plus d’une balle à la fois. <br>
  
Les commandes envoyées sur le fil pilote permettent de définir le mode de fonctionnement des appareils qui les reçoivent.<br />
+
Les parties se dérouleront sur un terrain de 8 mètres par 4, divisé en deux parties par une ligne blanche centrale de 67cm de large donc notre robot aura une surface de 4 mètres par 4, soit 16m²  pour se déplacer.<br>
  
L'avantage du fil pilote est que l'information n'est transmise que sur un seul fil, le retour étant assuré par le conducteur "Neutre" qui est aussi utilisé pour alimenter l'appareil.<br />
+
Les parties auront une durée de 90 secondes à l’issu desquelles notre robot devra se déplacer jusqu'à la ligne blanche centrale, sans pour autant la dépasser, puis arrêter ses moteurs et crever le ballon qui sera accroché à son socle, à 30cm du sol minimum.<br>
  
Le signal envoyé sur le fil pilote est généré par un appareil spécifique. Les signaux de commande ont la particularité d'être "fabriqués" directement à partir de la tension 230V du réseau.<br />
+
Notre robot devra être totalement autonome et en aucun cas ne pourra être téléopéré. <br>
  
 +
Nous devons toutefois faire face à quelques obligations :<br>
  
 +
 +
Aucune tension ne doit dépasser 24V. <br>
  
[[Fichier:Fil-pilote.gif|500px||signaux de commande]]
+
Le robot ne peut avoir que 2 roues motrices. <br>
[[Fichier:Fil pilote principe.jpg|500px||principe d'une commande par fil pilote]]
 
  
Par exemple, les radiateurs électriques raccordés à un même fil pilote, pourront basculer simultanément du mode "Hors gel" au mode "Eco".
+
La distance entre ces 2 roues doit être inférieure à 30 cm.<br>
 +
 
 +
La batterie ne doit être ni au lithium-polymère, ni au lithium-cobalts.  <br>
 +
 
 +
Le propulseur de balle ne doit sortir du robot uniquement pour un tir, et doit revenir se ranger lorsque son tir est terminé. <br>
 +
 
 +
 
 +
Pour se faire, nous avons séparer les différentes parties sous la forme suivante :<br>
 +
Lachiri Iyad : Caméra Pixy2, Boussole & création physique. <br>
 +
Sciré Morgane : Crève-ballon.<br>
 +
Mathieu Anthony : Fonction frapper la balle & la retenir <br>
 +
Garnier Clément : Détecter les lignes & créer un compte à rebours<br>
 +
Lescasse Enzo : Fonction se déplacer & mise en commun des différents programmes<br>
 +
 
 +
 
    
 
    
  
  
=={{Bleu|Objectif}}==
+
=={{Bleu|Fonctionnement du robot}}==
 +
 
 +
[[Fichier:Capture d’écran 2021-03-09 10-21-10.png|vignette]]
 +
 
 +
 
 +
Le fonctionnement du robot devra se dérouler comme ci-contre exactement, lors de ce compte-rendu, nous détaillerons donc les actions dans l'ordre où elles interviendront sur le fonctionnement du robot.<br>
 +
 
 +
 
 +
=={{Bleu|Caméra Pixy2}}==
  
Le projet consiste à fabriquer une carte électronique capable de décoder les signaux de commande et d'afficher le signal transmis à l'aide d'une led.
+
La caméra Pixy2 se branche seulement sur le port ICSP d'une carte Arduino Uno en l'occurence.<br>
 +
Peu de montage physique entraîne beaucoup de programmation, nous avons donc conçu ce programme afin de faire fonctionner la caméra : <br>
  
  
=={{Bleu|Découpage fonctionnel}}==
+
#include <Pixy2.h><br>
 +
Pixy2 pixy;<br>
 +
void setup()<br>
 +
{<br>
 +
  Serial.begin(115200);<br>
 +
  Serial.print("Starting...\n");<br>
 +
  pixy.init();<br>
 +
}<br>
 +
void loop()<br>
 +
{<br>
 +
  int i;<br>
 +
  int x;<br>
 +
  int y;<br>
 +
  pixy.ccc.getBlocks();<br>
 +
  if (pixy.ccc.numBlocks) // si on détecte la balle
 +
  {<br>
 +
    Serial.print("position x de la balle ");<br>
 +
    Serial.print(i);<br>
 +
    Serial.print(": ");<br>
 +
    Serial.println(pixy.ccc.blocks[i].m_x); // on indique la position de la balle sur l'axe x (entre 316 et 0)<br>
 +
    if (pixy.ccc.blocks[i].m_x < 103) { // si la balle est plus à gauche par rapport au milieu de l'axe, on tourne à gauche<br>
 +
      Serial.println("tourner à gauche");  <br> 
 +
    }<br>
 +
    if (pixy.ccc.blocks[i].m_x > 206) {<br>
 +
      Serial.println("tourner à droite"); // si la balle est plus à droite par rapport au milieu de l'axe, on tourne à droite<br>
 +
    }<br>
 +
    Serial.print("position y de la balle ");<br>
 +
    Serial.print(i);<br>
 +
    Serial.print(": ");<br>
 +
    Serial.println(pixy.ccc.blocks[i].m_y);<br>
 +
    if (pixy.ccc.blocks[i].m_y > 105 && pixy.ccc.blocks[i].m_x < 206 && pixy.ccc.blocks[i].m_x > 103) { // si la balle est en face du robot, et proche<br>
 +
      Serial.println("avancer doucement");<br>
 +
    }<br>
 +
    if (pixy.ccc.blocks[i].m_y < 105 && pixy.ccc.blocks[i].m_x < 206 && pixy.ccc.blocks[i].m_x > 103) {// si la balle au centre de l’axe X, et loin du robot<br>
 +
      Serial.println("avancer rapidement"); <br>     
 +
    }<br>
 +
  }<br>
 +
  //si on ne détecte pas la balle<br>
 +
  else {<br>
 +
    Serial.println("chercher la balle");<br>
 +
  }<br>
 +
  delay(1000);<br>
 +
}<br>
  
[[Fichier:Decodeur fil pilote fonctions.jpg|800px||découpage fonctionnel]]
+
Afin de pouvoir régler la caméra Pixy lors de sa programmation, nous avons eu recours au logiciel "PixyMon" qui nous permet d'afficher sur l'écran d'ordinateur ce que la caméra voit en temps réel :  
  
=={{Bleu|Contraintes de fabrication}}==
+
<gallery>
 +
Pixy2.jpg|Caméra Pixy2
 +
VisuelPixy2.jpg|PixyMon
  
La carte utilisera un microcontrôleur ATtiny2313.<br />
+
</gallery>
  
Le signal issu du fil pilote sera isolé par un optocoupleur.<br />
+
=={{Bleu|Fonction se déplacer}}==
  
Les six modes de fonctionnement seront matérialisés par six LED.<br />
+
Pour créer cette fonction, nous avons pris deux moteurs en courant continu, un shield moteur L298P ainsi qu'une batterie de 12V.
  
 +
ShieldMoteur.png|Shield Moteur
 +
</gallery>
 
={{Rouge|Travail attendu}}=
 
={{Rouge|Travail attendu}}=
 +
 +
 +
{| class="wikitable"
 +
|-
 +
! A !! Ze !! E
 +
|-
 +
| Ta || Tzle || Texte de la cellule
 +
|-
 +
| Texte de la cellule || Texte de la cellule || Texte de la cellule
 +
|-
 +
| Texte de la cellule || Texte de la cellule || Texte de la cellule
 +
|}

Version actuelle datée du 9 mars 2021 à 14:43


Présentation du projet

Le but du robot est d’envoyer un maximum de balle dans le camp adverse sans jamais y entrer et sans contrôler plus d’une balle à la fois.

Les parties se dérouleront sur un terrain de 8 mètres par 4, divisé en deux parties par une ligne blanche centrale de 67cm de large donc notre robot aura une surface de 4 mètres par 4, soit 16m² pour se déplacer.

Les parties auront une durée de 90 secondes à l’issu desquelles notre robot devra se déplacer jusqu'à la ligne blanche centrale, sans pour autant la dépasser, puis arrêter ses moteurs et crever le ballon qui sera accroché à son socle, à 30cm du sol minimum.

Notre robot devra être totalement autonome et en aucun cas ne pourra être téléopéré.

Nous devons toutefois faire face à quelques obligations :


Aucune tension ne doit dépasser 24V.

Le robot ne peut avoir que 2 roues motrices.

La distance entre ces 2 roues doit être inférieure à 30 cm.

La batterie ne doit être ni au lithium-polymère, ni au lithium-cobalts.

Le propulseur de balle ne doit sortir du robot uniquement pour un tir, et doit revenir se ranger lorsque son tir est terminé.


Pour se faire, nous avons séparer les différentes parties sous la forme suivante :

Lachiri Iyad : Caméra Pixy2, Boussole & création physique. 
Sciré Morgane : Crève-ballon.
Mathieu Anthony : Fonction frapper la balle & la retenir
Garnier Clément : Détecter les lignes & créer un compte à rebours
Lescasse Enzo : Fonction se déplacer & mise en commun des différents programmes



Fonctionnement du robot

Capture d’écran 2021-03-09 10-21-10.png


Le fonctionnement du robot devra se dérouler comme ci-contre exactement, lors de ce compte-rendu, nous détaillerons donc les actions dans l'ordre où elles interviendront sur le fonctionnement du robot.


Caméra Pixy2

La caméra Pixy2 se branche seulement sur le port ICSP d'une carte Arduino Uno en l'occurence.
Peu de montage physique entraîne beaucoup de programmation, nous avons donc conçu ce programme afin de faire fonctionner la caméra :


#include <Pixy2.h>
Pixy2 pixy;
void setup()
{
Serial.begin(115200);
Serial.print("Starting...\n");
pixy.init();
}
void loop()
{
int i;
int x;
int y;
pixy.ccc.getBlocks();
if (pixy.ccc.numBlocks) // si on détecte la balle {
Serial.print("position x de la balle ");
Serial.print(i);
Serial.print(": ");
Serial.println(pixy.ccc.blocks[i].m_x); // on indique la position de la balle sur l'axe x (entre 316 et 0)
if (pixy.ccc.blocks[i].m_x < 103) { // si la balle est plus à gauche par rapport au milieu de l'axe, on tourne à gauche
Serial.println("tourner à gauche");
}
if (pixy.ccc.blocks[i].m_x > 206) {
Serial.println("tourner à droite"); // si la balle est plus à droite par rapport au milieu de l'axe, on tourne à droite
}
Serial.print("position y de la balle ");
Serial.print(i);
Serial.print(": ");
Serial.println(pixy.ccc.blocks[i].m_y);
if (pixy.ccc.blocks[i].m_y > 105 && pixy.ccc.blocks[i].m_x < 206 && pixy.ccc.blocks[i].m_x > 103) { // si la balle est en face du robot, et proche
Serial.println("avancer doucement");
}
if (pixy.ccc.blocks[i].m_y < 105 && pixy.ccc.blocks[i].m_x < 206 && pixy.ccc.blocks[i].m_x > 103) {// si la balle au centre de l’axe X, et loin du robot
Serial.println("avancer rapidement");
}
}
//si on ne détecte pas la balle
else {
Serial.println("chercher la balle");
}
delay(1000);
}

Afin de pouvoir régler la caméra Pixy lors de sa programmation, nous avons eu recours au logiciel "PixyMon" qui nous permet d'afficher sur l'écran d'ordinateur ce que la caméra voit en temps réel :

Fonction se déplacer

Pour créer cette fonction, nous avons pris deux moteurs en courant continu, un shield moteur L298P ainsi qu'une batterie de 12V.

ShieldMoteur.png|Shield Moteur </gallery>

Travail attendu

A Ze E
Ta Tzle Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule