RobotiqueCoupeGEII2
Sommaire
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
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 |