Robot footballeur
Le Robot Footballeur
Les règles du Robot foot
Le terrain
Le terrain de robots footballer
Matière autorisées | Carton, mousse, gomme |
Avec bord | non |
Largeur max | 120 cm |
Longueur max | 400 cm |
Largeur des cages | 20 à 50 cm taille supérieur aux robot d’au moins un tier. |
Spécifications particulières | Surface plane et horizontale. Si en deux parties, raccord sur la partie médiane. |
La balle
Pour la balle, il est réglementaire d’utiliser une bille de 16 à 45 mm
tétine, mini, bélier, normale (16 mm) , « boulets » ou berlons, « maxi boulets », « bisquaillin », calot ou tacot (25 mm), boulard (35 mm), « maxi boulard » (45 mm), mammouth, aigle, caille, bigaro
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ées | Non | |
Degré d’intervention humaine autorisées dans l’arène | Aucune | |
Longueur du fil min/max | 80 cm à 220 cm selon de terrain et la discipline | |
Alimentation autorisée | Pile 9v | |
Poids max | 1200 g | |
Taille max | 50 cm3 | |
Matériaux autorisées | carton, bois, métal, plastique | |
Age max de l’opérateur | 16 ans |
La Mannette
Formats autorisés | Tous |
Nombres de boutons maximum | 4 |
Matières autorisées | carton, 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-temps | 2 minutes |
Durée entre les mi-temps | 1m30 |
Nombre de mi-temps | 2 à 4 |
La fabrication
Robots sportifs test
Matériel
- 1 boite servomoteur
- 2 unités attache parisienne
Etapes de fabrication
- sortez le matériel
- branchez le servo
le montage
- bgy
Video
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
}