Robo Sumo: combats de robots intelligents


( c )

Chaque année, environ un millier d'équipes de tout le Japon se livrent une bataille acharnée dans un tournoi de robot. Dans ce concours, vous ne verrez pas de tronçonneuses, de torches et de décharges électriques - bref, rien qui vous vient à l'esprit lorsque vous entendez l'expression «bataille de robots».

Il ne s'agit pas seulement de la bataille - c'est un sumo robotique qui est apprécié pour ses qualités spéciales: pour l'élégance, la simplicité et la capacité de faire preuve d'intelligence dans la stratégie. La compétition se déroule sur un anneau rond en métal d'un diamètre de seulement 1,5 m, le long du périmètre duquel est tracé un trait blanc de 5 cm de large. Un robot franchissant cette frontière est considéré comme un perdant. Et dans cette apparente simplicité réside un abîme d'opportunités.

Nous vous expliquerons comment la «bataille des robots» est devenue un concours intellectuel pour les programmeurs et vous donnerons des instructions détaillées pour assembler un robot-sumoiste.

Capteurs de recherche frontaliers et ennemis



( c ) Les

yeux du robot sont des capteurs infrarouges. Le degré de réflexion IR est mesuré par un élément photosensible. La couleur blanche de la bordure n'a pas été choisie par hasard - elle reflète plus de lumière que la surface noire de l'anneau.

Le robot est équipé de plusieurs capteurs infrarouges chargés de la "recherche" de la frontière. Les capteurs avant, en règle générale, aident à contrôler la vitesse de déplacement - le combattant ne doit pas quitter le terrain en raison d'un zèle excessif. Les capteurs arrière «suivent» l'approche du bord de l'anneau: ayant reçu une réponse de leur part, le robot change de direction.

Et en mesurant le temps nécessaire pour réfléchir les rayons, vous pouvez comprendre l'emplacement de l'ennemi. De nombreux robots (mais pas tous) changent de direction, compte tenu de ce paramètre.

Règles de bataille



En plus des avantages énumérés ci-dessus, les capteurs infrarouges ont également un inconvénient - le champ de vision reste étroit, en raison duquel de nombreux angles morts apparaissent, dont l'utilisation en attaque est la stratégie principale des robots très maniables.

Cependant, cela ne fonctionne qu'avec des robots autonomes. Lorsqu'un sumoiste robotique indépendant rencontre un adversaire radiocommandé, il ne peut pas utiliser la stratégie d'attaque en zone aveugle, car l'opérateur voit plus que le robot.

Au lieu d'attaquer les angles morts, les Autobots utilisent une stratégie d'attaque depuis les coins. En général, le lutteur ne dispose pas de nombreuses manœuvres: virage, poussée, freinage et arrêt.

Cependant, pour confondre l'ennemi, certains combattants lancent des drapeaux blancs sur un ou les deux côtés de la coque. Attirant l'ennemi au drapeau, ils attaquent son côté vulnérable et le poussent hors du ring.

Bien sûr, des moyens de se défendre contre une telle attaque sont apparus. L'apparition de drapeaux à gauche et à droite signifie que le corps du robot est au centre. Si le robot a jeté le drapeau d'un côté, alors son corps est à l'endroit opposé.

Certains robots peuvent non seulement attirer l'ennemi, mais aussi se cacher de ses capteurs. Pour ce faire, ils sont peints en noir ou des revêtements réfléchissants sont ajoutés.

Armement



La bataille des robots sumoistes n'est pas seulement un problème. Beaucoup d'entre eux sont équipés d'une lame de bulldozer à arêtes vives. Il vous permet de relever votre adversaire et de l'éloigner du terrain ou même de causer de sérieux dégâts. Certes, cette arme réduit la maniabilité du combattant.

Dans un sumo humain, l'arme principale du combattant est sa masse impressionnante. Curieusement, dans les robots, la masse joue également un "rôle important".

Malgré le fait que, selon les règles, la longueur du robot (de chaque côté) ne dépasse pas 20 cm, et le poids ne doit pas dépasser 3 kg, le robot-sumoist peut «peser» plusieurs dizaines de kilogrammes. Ce "poids" est obtenu grâce à des aimants. Oui, parfois la technique peut pratiquement «coller» au sol, car l'anneau est basé sur une surface métallique.

Esprit machine


Lors de la création de robots, dont la principale tactique est une grande maniabilité, moins d'aimants sont utilisés. Dans ce cas, l'accent principal est mis sur un moteur puissant. Cependant, la victoire au combat ne dépend que rarement du fer.

L'essentiel pour les robots sumo est la stratégie, écrite sous forme de code. Le choix du fer en dépend également. Souvent, les robots se déplacent si vite qu'il est difficile de suivre leurs mouvements. Cependant, le comportement super manœuvrable est basé sur une logique de programme stricte. Considérez les principes par lesquels il est créé.

Création de robots Sumo



Tournons-nous vers l' expérience des experts du site hackster.io , qui ont préparé un guide exhaustif sur la création d'un robot-sumoiste typique.

Les composants suivants sont utilisés dans le projet:

  • Contrôleur CytronTechnologies × 1;
  • capteur infrarouge (3-80 cm) × 5;
  • jeu de roues en silicone JSumo (52 x 30 mm) × 2;
  • module de suivi infrarouge × 2;
  • Motoréducteur à courant continu (12 V, 380 tr / min) × 4;
  • Batterie LiPo (11,1 V, 1300 mAh) × 1.


1. Contrôleur


Vous pouvez utiliser Arduino Uno, Mega ou Nano. Vous aurez également besoin d'une carte pour connecter tous les capteurs. Vous pouvez bien sûr créer votre propre carte d'extension et connecter tous les contacts à l'Arduino, ou acheter une carte prête à l'emploi et connecter tous les composants électroniques.


2. Le moteur


C'est l'une des parties les plus importantes dont dépendent les performances du robot. Idéalement, vous avez besoin d'un moteur à haute vitesse et couple, mais dans ce cas, sa taille sera grande. Vous devez vous assurer que tous les moteurs et roues tiennent dans une boîte de 20 x 20 cm.

Il existe plusieurs types de moteurs que vous pouvez utiliser dans votre projet.

Un moteur à engrenage cylindrique et à engrenage planétaire , dans lequel l'arbre de sortie est parallèle au moteur.


Engrenage à vis sans fin moteur . L'arbre de sortie est ici perpendiculaire. Cette option peut être préférable, car il y aura plus d'espace dans le robot pour d'autres composants.


Deux roues vs quatre roues


Une transmission intégrale donnera certainement plus d'occasions de pousser un robot adverse. Cependant, sa mobilité est inférieure à celle d'un deux-roues. Pourtant, la traction intégrale a été utilisée dans ce projet de démonstration.

3. Roues



Il n'y a pas beaucoup d'options pour un bon caoutchouc pour un robot de sumo sur le marché. Les ingénieurs ont opté pour des roues en silicone fabriquées par Jsumo. Cependant, vous pouvez utiliser les roues d'une petite voiture.

Faites attention au montage - assurez-vous que la roue sélectionnée correspond à la taille du trou correspondant à l'arbre de sortie du moteur. Ce projet utilise un arbre de 6 mm, respectivement, la roue a un trou de 6 mm.

4. Capteurs



Pour détecter des objets, vous pouvez utiliser à la fois des capteurs infrarouges et, par exemple, des ultrasons.

Les experts recommandent de lancer une attaque lorsque la distance par rapport à l'ennemi ne dépasse pas 60 cm, ce qui permet de placer un capteur avec une plage de sensibilité allant jusqu'à 1 m.


Pour ce robot, trois capteurs infrarouges ont été installés - un de chaque côté.


Un capteur infrarouge doit également être installé au bas du robot, ce qui aidera à détecter une ligne blanche au bord de l'anneau. Vous pouvez installer plusieurs ensembles de capteurs de bord à l'avant et à l'arrière, selon votre stratégie de conduite.

5. Batterie



Une batterie au lithium polymère est généralement utilisée car elle fournit plus de puissance que d'autres types de batteries de même taille.

6. Le châssis du robot


Vous pouvez utiliser la base prête à l' emploi de Cytron, qui s'adapte à la taille autorisée du robot (20 x 20 cm), ou la fabriquer vous-même à partir de zéro.


L'impression 3D étant plus économique, le plongeur a partagé des fichiers pour l'impression à domicile.


7. Assemblée


Le schéma et le tableau ci-dessous donnent un aperçu des connexions câblées du robot Sumo.



Vous devez d'abord souder deux fils (la taille recommandée est de 16-18 AWG) à la borne du moteur, puis le connecter au contrôleur.


De plus, tous les moteurs et capteurs doivent être soudés avec des fils.


Nous passons maintenant à l'assemblage à l'intérieur du boîtier. Utilisez les boulons M3x10 pour monter les moteurs sur le boîtier inférieur.


Installez des capteurs infrarouges sur les côtés droit et gauche.


Fixez la jante avec la vis M4, puis mettez le ruban de silicone.

La vis de réglage doit être fixée sur la partie plate de l'arbre moteur rond.


Ensuite, à l'aide d'une vis autotaraudeuse, installez le capteur de bord au bas de la lame.


Dans la partie avant du boîtier inférieur, vous verrez deux trous destinés à poser les fils des capteurs de bord.


Assemblez la lame avec le boîtier inférieur à l'aide des boulons et écrous M6x20.


Installez des capteurs infrarouges sur le support avant avant de le fixer au boîtier inférieur.


Après avoir monté tous les capteurs et moteurs, nous vous recommandons de marquer chaque fil afin qu'il soit plus facile à dépanner à l'avenir.


Fixez le support de support pour la carte de circuit imprimé.


Vérifiez la polarité de la batterie et des capteurs avant de vous connecter à la carte, puis n'oubliez pas de retirer la batterie avant de connecter d'autres composants à la carte.


Puisqu'il s'agit d'un robot à traction intégrale, deux moteurs d'un côté doivent être connectés pour les contrôler simultanément.


Lorsque vous utilisez un exemple de code prêt à l'emploi , il est préférable de connecter tous les moteurs et capteurs aux mêmes ports, comme indiqué dans les illustrations.


Enfin, connectez la batterie.


Le robot Sumo est prêt!

8. Étalonnage du capteur


Une étape importante est l'étalonnage avant la programmation. Malheureusement, la plupart des nouveaux arrivants n'y prêtent pas attention lors de la configuration du robot.

Assurez-vous que les capteurs fonctionnent dans la plage de sensibilité requise.

La plage de sensibilité maximale du capteur de recherche ennemi est de 80 cm. Dans ce projet, le robot ne doit pas répondre à un objet situé à une distance de 60 à 80 cm, donc la plage de sensibilité est réduite de 20 cm.


Pour ce faire, placez le robot «face» sur une surface plane et blanche à une distance de 60 cm et ajustez le capteur jusqu'à ce que le voyant LED s'éteigne. La procédure est présentée plus en détail dans la vidéo.


Les capteurs de bord sont ajustés à l'aide d'un tournevis à travers le trou dans la lame.

À l'aide d'un logiciel, vous pouvez afficher les signaux de deux capteurs de bord sur les LED D0 et D1.


Ceci est nécessaire afin de s'assurer que le capteur émet un signal de sortie élevé lorsqu'il détecte une surface blanche et un faible sur une surface noire (faites attention aux LED sur D0 et D1 dans la vidéo ci-dessus).

9. Programmation


Étant donné que le contrôleur de robot URC10 est compatible avec Arduino UNO, l'IDE Arduino est utilisé pour la programmation. Vous pouvez prendre un exemple de code prêt à l'emploi .

La seule bibliothèque utilisée dans le projet est CytronMotorDrivers .

Si vous ne savez pas comment activer la bibliothèque ou télécharger un exemple de code, reportez-vous au manuel URC10 .

Le programme de robot sumo peut être divisé en quatre parties:

  • début de la représentation;
  • Chercher;
  • attaque;
  • battre en retraite.

void loop() {
  //   .
  if (!digitalRead(EDGE_L)) {
    //     .
    backoff(RIGHT);
 
    //   .
    searchDir ^= 1;
  }
 
  //   .
  else if (!digitalRead(EDGE_R)) {
    //     .
    backoff(LEFT);
 
    //   .
    searchDir ^= 1;
  }
 
  //   .
  else {
    //  ,    .
    if ( digitalRead(OPPONENT_FC) &&
         digitalRead(OPPONENT_FL) &&
         digitalRead(OPPONENT_FR) &&
         digitalRead(OPPONENT_L) &&
         digitalRead(OPPONENT_R) ) {
      search();
    }
 
    // ,      .
    else {
      attack();
    }
  }
 
 
  //     .
  if (!digitalRead(BUTTON)) {
    //  .
    motorL.setSpeed(0);
    motorR.setSpeed(0);
 
    // .
    while (1);
  }
}

Début de la représentation


La stratégie de départ dépend des règles de la compétition. Un robot ne peut commencer à se déplacer qu'après 5 secondes, et parfois en 1 seconde.

Il arrive que les règles vous permettent de placer le robot n'importe où dans le ring. Dans d'autres cas, le robot doit se trouver dans une certaine «zone de départ».

Dans cet exemple, le robot est programmé pour se déplacer et attaquer l'adversaire par le côté dès le début du jeu.

void startRoutine() {
  // .
  delay(1000);
 
  //    45 .
  motorL.setSpeed(255);
  motorR.setSpeed(0);
  delay(180);
 
  //  .
  motorL.setSpeed(255);
  motorR.setSpeed(255);
  delay(450);
 
  //  ,     .
  motorL.setSpeed(-0);
  motorR.setSpeed(255);
  uint32_t startTimestamp = millis();
  while (digitalRead(OPPONENT_FC)) {
    // ,        .
    if (millis() - startTimestamp > 400) {
      break;
    }
  }
 
}


Chercher


Si, immédiatement après le départ, il n'a pas été possible d'attaquer l'ennemi, le robot contournera l'anneau en cercle pour trouver l'adversaire. Une fois détecté, le mode de recherche sera arrêté et le robot procédera à l'attaque.

void search() {
  //   .
  if (searchDir == LEFT) {
    motorL.setSpeed(100);
    motorR.setSpeed(255);
  } else {
    motorL.setSpeed(255);
    motorR.setSpeed(100);
  }
}


Attaque


Lorsqu'un ennemi est détecté par l'un des cinq capteurs, le robot tourne dans sa direction et attaque à pleine vitesse.

La précision de l'attaque dépend de la précision avec laquelle votre robot peut suivre l'ennemi lorsqu'il avance à pleine vitesse. Si l'ennemi parvient à s'échapper, le programme reprendra son travail en mode recherche.

void attack() {
  uint32_t attackTimestamp = millis();
  //    .
  //     .
  if (!digitalRead(OPPONENT_FC)) {
    motorL.setSpeed(255);
    motorR.setSpeed(255);
  }
 
  //   .
  //  .
  else if (!digitalRead(OPPONENT_FL)) {
    motorL.setSpeed(0);
    motorR.setSpeed(255);
  }
 
  //   .
  //  .
  else if (!digitalRead(OPPONENT_FR)) {
    motorL.setSpeed(255);
    motorR.setSpeed(0);
  }
 
  //   .
  //     ,     .
  else if (!digitalRead(OPPONENT_L)) {
    motorL.setSpeed(-150);
    motorR.setSpeed(150);
    while (digitalRead(OPPONENT_FC)) {
      // ,    .
      if (millis() - attackTimestamp > 400) {
        break;
      }
    }
  }
 
  //   .
  //     ,     .
  else if (digitalRead(OPPONENT_R) == 0) {
    motorL.setSpeed(150);
    motorR.setSpeed(-150);
    while (digitalRead(OPPONENT_FC)) {
      // ,    .
      if (millis() - attackTimestamp > 400) {
        break;
      }
    }
  }
}


Battre en retraite


Lorsqu'un des capteurs de bord détecte une ligne blanche, le robot doit prendre du recul et faire demi-tour. Pendant la rotation, le robot continuera de rechercher l'ennemi. S'il apparaît, il sera attaqué.

void backoff(uint8_t dir) {
  //  .
  motorL.setSpeed(0);
  motorR.setSpeed(0);
  delay(100);
 
  // .
  motorL.setSpeed(-255);
  motorR.setSpeed(-255);
  delay(200);
 
  //  .
  motorL.setSpeed(0);
  motorR.setSpeed(0);
  delay(100);
 
  // .
  if (dir == LEFT) {
    motorL.setSpeed(-150);
    motorR.setSpeed(150);
  } else {
    motorL.setSpeed(150);
    motorR.setSpeed(-150);
  }
  delay(100);
 
  //   
  //  -   .
  uint32_t uTurnTimestamp = millis();
  while (millis() - uTurnTimestamp < 300) {
    //   ,     .
    if ( !digitalRead(OPPONENT_FC) ||
         !digitalRead(OPPONENT_FL) ||
         !digitalRead(OPPONENT_FR) ||
         !digitalRead(OPPONENT_L) ||
         !digitalRead(OPPONENT_R) ) {
      //  .
      motorL.setSpeed(0);
      motorR.setSpeed(0);
      delay(100);
 
      //    .
      return;
    }
  }
 
  //    ,         .
  motorL.setSpeed(255);
  motorR.setSpeed(255);
  delay(200);
}


C'est tout. Vous pouvez maintenant regarder une vidéo qui montre comment le robot se déplace à partir de cette leçon.


Avez-vous déjà de l'expérience dans la construction d'un robot pour des compétitions similaires? Partagez les stratégies gagnantes dans les commentaires.

Sources


Assemblage de robot de bricolage: https://www.hackster.io/cytron-technologies/building-a-sumo-robot-45d703

Concours national de robot de sumo du Japon: http://www.fsi.co.jp/sumo/en /index.html Ensemble de règles

illustré: http://www.robotroom.com/SumoRules.html

All Articles