Robot footballeur

Le Robot Footballeur

Les règles du Robot foot

Le terrain

Le terrain de robots footballer

Matière autoriséesCarton, mousse, gomme
Avec bordnon
Largeur max120 cm
Longueur max400 cm
Largeur des cages20 à 50 cm taille supérieur aux robot d’au moins un tier.
Spécifications particulièresSurface plane et horizontale. Si en deux parties, raccord sur la partie médiane.
Exemple de terrain

La balle

Pour la balle, il est réglementaire d’utiliser une bille de 16 à 45 mm
tétineminibéliernormale (16 mm) , « boulets » ou berlons« maxi boulets »« bisquaillin »calot ou tacot (25 mm), boulard (35 mm), « maxi boulard » (45 mm), mammouthaiglecaillebigaro
Attention, toute balle de type ballon ou balle rebondissante ne correspond pas à la même discipline de robots sportifs.

Les joueurs

Le robot et ses opérateurs

Automatisation autoriséesNon
Degré d’intervention humaine autorisées dans l’arèneAucune
Longueur du fil min/max80 cm à 220 cm selon de terrain et la discipline
Alimentation autoriséePile 9v
Poids max1200 g
Taille max50 cm3
Matériaux autoriséescarton, bois, métal, plastique
Age max de l’opérateur16 ans

La Mannette

Formats autorisés Tous
Nombres de boutons maximum4
Matières autoriséescarton, bois, aluminium

Les Règles du sport robotique

Les points
Le point est compté au moment ou la balle entre en contact avec les cages. Le jury peut attribuer des points en fonction d’un barème défini.

L’arbitre
Doit décider de la validité d’un point, vérifier la conformité des robots avant le démarrage , vérifier les fautes et appliquer les sanctions.

Les fautes carton jaune
Il est interdit de :
– Attaquer les robots ou les opérateurs de robots
– Obtenir l’aide d’un adulte durant tout le déroulé du match (mi-temps comprise)

Les fautes carton rouge (exclusion du terrain)
– Mauvais comportement entre les opérateur

Le jury
Est constitué de membres externes aux équipes compétitrices, peut comporter de 3 à 5 membres et peut attribuer des points selon un barème en cas d’égalité en fin de match.

  • Point de style (l’action qui se déroule est belle)
  • Point d’esthétique (le robot compétiteur a la classe)
  • Point d’équipe (les robots d’une même équipe font des stratégies gagnantes)
  • Point de Fair-Play (les robots et opérateurs ont une conduite exemplaire sur le terrain.

Discipline sportive

Le 1 contre 1

Durée de la mi-temps2 minutes
Durée entre les mi-temps1m30
Nombre de mi-temps2 à 4

La fabrication

Robots sportifs test

Ro-Bots
Comment réaliser un robot footballeur
Temps de Fabrication15 minutes
Type de sport Athletisme
Kit robotique Filaire

Matériel
  

  • 1 boite servomoteur
  • 2 unités attache parisienne

Etapes de fabrication
 

  • sortez le matériel
  • branchez le servo

le montage

  • bgy
Style de sport Sport collectif

Le code

  /* 
Controle de deux servo 360 avec quatre boutons.
La déclaration en tant que pullup des boutons ne rend pas indispensable résistance sur le bouton car elle en active une intégrée dans l'arduino.
CW = Clockwise = Sens horaire
CCW = Counter clockwise = Sens Anti-horaire
CC-BY-NC-SA Pouvoir Faire
 */
 
#include <Servo.h>

Servo myservoG;  // Créé le servo Gauche
Servo myservoD;  // Crée le servo Droit
Servo myservoA;  // Crée le servo Droit

int servoPinG = 9;// Branchement du servo gauche sur la pin 9
int servoPinD = 10;// Branchement du servo droit sur la pin 10
int servoPinA = 11;

int AvancePin = 2; //  Bouton pour avancer sur la pin 2
int ReculePin = 3; // Bouton pour reculer sur la pin 3
int GauchePin = 4; // Bouton pour aller à gauche sur la pin 4
int DroitePin = 5; // Bouton pour aller à droite sur la pin 5
int ArmePin = 6;
        
int CCW = 120; // Valeur du servo pour le Sens anti horaire
int CW = 60; // Valeur du servo pour le Sens horaire
int Sstop = 93; // Valeur du servo pour le Stop, il se peut que le servo ne s'arrete pas complètement, cela est du à une impressision de fabrication
int pos = 0 ;


void setup() {
  Serial.begin(9600);
  
  pinMode(AvancePin,INPUT_PULLUP);// declare la pin du bouton avance comme un bouton, ne rend pas indispensable résistance sur le bouton
  pinMode(ReculePin,INPUT_PULLUP);//  declare la pin du bouton recule comme un bouton
  pinMode(GauchePin,INPUT_PULLUP);//  declare la pin du bouton gauche comme un bouton
  pinMode(DroitePin,INPUT_PULLUP);//  declare la pin du bouton droite comme un bouton
  pinMode(ArmePin,INPUT_PULLUP);//  declare la pin du bouton droite comme un bouton

  myservoG.write(Sstop);// Initialise avec les moteur arrétés
  
}



void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservoA.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservoA.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);       
bool    Avance = digitalRead(AvancePin);// Lit le statut du bouton avance et le met dans la variable Avance
bool    Recule = digitalRead(ReculePin);// Lit le statut du bouton recule et le met dans la variable Recule
bool    Gauche = digitalRead(GauchePin);// lit le statut du bouton gauche et le met dans la variable Gauche
bool    Droite = digitalRead(DroitePin); // Lit le statut du bouton droit et le met dans la variable Droite
    

if (Avance == LOW){ // Si le bouton avancer est appuyé, envoi la fonction avancer
      Favancer();
  }
else if (Recule == LOW){ // Si le bouton reculer est appuyé, envoi la fonction reculer
   Freculer();
  }
else if (Gauche == LOW){ // Si le bouton gauche est appuyé, envoi la fonction Aller a gauche
    Fgauche();
  }
else if (Droite == LOW){ // Si le bouton Droite est appuyé, envoi la fonction Aller a droite
     Fdroit();
}
else 
  {
    Fstop();  //Si rien n'est appuyé, envoi la fonction stop
  }
  
}

void Favancer(){ //Fonction Avancer
 myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
  
  
  myservoG.write(CW); // Fait tourner le moteur dans le sens horaire
  myservoD.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire
}

void Freculer(){  //Fonction Reculer
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
  
  myservoG.write(CCW); // Fait tourner le moteur dans le sens Anti-horaire
  myservoD.write(CW); // Fait tourner le moteur dans le sens horaire

}

void Fdroit(){ //fonction Aller à droite
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
     
  myservoG.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire
  myservoD.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire

}

void Fgauche(){  //fonction Aller à gauche
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
     
  myservoG.write(CW); // Fait tourner le moteur dans le sens horaire
  myservoD.write(CW); // Fait tourner le moteur dans le sens horaire
    
}

void Fstop(){    //Fonction Stop
    myservoG.detach(); // ces deux commandes ont été rajouté car parfois les roues du bot continuaient à trouver même en ayant envoyé le signal STOP
    myservoD.detach(); // ces deux commandes ont été rajouté car parfois les roues du bot continuaient à trouver même en ayant envoyé le signal STOP

}