Robo Sumo: Intelligente Roboterkämpfe


( c )

Jedes Jahr kämpfen ungefähr tausend Teams aus ganz Japan in einem Roboterturnier heftig. In diesem Wettbewerb werden Sie keine Kettensägen, Fackeln und elektrischen Entladungen sehen - kurz gesagt, nichts, was Ihnen in den Sinn kommt, wenn Sie den Satz „Kampf der Roboter“ hören.

Es geht nicht nur um den Kampf - es ist ein Robotersumo, das für seine besonderen Eigenschaften geschätzt wird: für Eleganz, Einfachheit und die Fähigkeit, Intelligenz in der Strategie zu zeigen. Der Wettbewerb findet auf einem runden Metallring mit einem Durchmesser von nur 1,5 m statt, entlang dessen Umfang eine 5 cm breite weiße Linie gezeichnet wird. Ein Roboter, der diese Grenze überschreitet, gilt als Verlierer. Und in dieser scheinbaren Einfachheit liegt ein Abgrund von Möglichkeiten.

Wir werden Ihnen erzählen, wie der „Kampf der Roboter“ zu einem intellektuellen Wettbewerb für Programmierer geworden ist, und detaillierte Anweisungen für die Zusammenstellung eines Robo-Sumoisten geben.

Grenz- und Feindsuchsensoren



( c ) Die

Augen des Roboters sind Infrarotsensoren. Der Grad der IR-Reflexion wird durch ein lichtempfindliches Element gemessen. Die weiße Farbe des Randes wurde nicht zufällig gewählt - sie reflektiert mehr Licht als die schwarze Oberfläche des Rings.

Der Roboter ist mit mehreren Infrarotsensoren ausgestattet, die für die "Suche" der Grenze verantwortlich sind. Frontsensoren helfen in der Regel dabei, die Bewegungsgeschwindigkeit zu kontrollieren - der Kämpfer sollte das Feld wegen übermäßigem Eifer nicht verlassen. Die hinteren Sensoren „folgen“ der Annäherung an den Ringrand: Nachdem der Roboter eine Antwort von ihnen erhalten hat, ändert er die Richtung.

Und indem Sie die Zeit messen, die erforderlich ist, um die Strahlen zu reflektieren, können Sie den Standort des Feindes verstehen. Viele Roboter (aber nicht alle) ändern angesichts dieses Parameters die Richtung.

Kampfregeln



Zusätzlich zu den oben aufgeführten Vorteilen haben IR-Sensoren auch einen Nachteil: Das Sichtfeld bleibt eng, wodurch viele tote Winkel auftreten, deren Verwendung im Angriff die Hauptstrategie hochmanövrierbarer Roboter ist.

Dies funktioniert jedoch nur mit autonomen Robotern. Wenn ein unabhängiger Robotersumoist auf einen funkgesteuerten Gegner trifft, kann er die Angriffsstrategie für die blinde Zone nicht anwenden, da der Bediener mehr als den Roboter sieht.

Anstatt blinde Flecken anzugreifen, verwenden die Autobots eine Angriffsstrategie aus den Ecken. Im Allgemeinen stehen dem Wrestler nicht viele Manöver zur Verfügung: Drehen, Schieben, Bremsen und Stoppen.

Um den Feind zu verwirren, werfen einige Kämpfer weiße Fahnen auf eine oder beide Seiten des Rumpfes. Sie locken den Feind zur Flagge, greifen seine verletzliche Seite an und schieben ihn aus dem Ring.

Natürlich gab es Möglichkeiten, sich gegen einen solchen Angriff zu verteidigen. Das Erscheinen von Flaggen links und rechts bedeutet, dass sich der Roboterkörper in der Mitte befindet. Wenn der Roboter die Flagge auf eine Seite warf, befindet sich sein Körper an der gegenüberliegenden Stelle.

Einige Bots können nicht nur den Feind anlocken, sondern sich auch vor seinen Sensoren verstecken. Dazu werden sie schwarz lackiert oder reflektierende Beschichtungen hinzugefügt.

Rüstung



Die Schlacht der sumoistischen Roboter ist nicht nur ein Hintern. Viele von ihnen sind mit einem scharfkantigen Bulldozerblatt ausgestattet. Sie können Ihren Gegner erhöhen und ihn vom Spielfeld entfernen oder sogar ernsthaften Schaden anrichten. Diese Waffe verringert zwar die Manövrierfähigkeit des Kämpfers.

In einem menschlichen Sumo ist die Hauptwaffe des Kämpfers seine beeindruckende Masse. Seltsamerweise spielt bei Robotern auch die Masse eine "bedeutende Rolle".

Trotz der Tatsache, dass die Länge des Roboters (auf beiden Seiten) gemäß den Regeln 20 cm nicht überschreitet und das Gewicht nicht mehr als 3 kg betragen sollte, kann der Robo-Sumoist mehrere zehn Kilogramm „wiegen“. Dieses "Gewicht" wird durch Magnete erreicht. Ja, manchmal kann die Technik praktisch am Boden „haften“, da der Ring auf einer Metalloberfläche basiert.

Maschinengeist


Bei der Herstellung von Robotern, deren Haupttaktik die hohe Manövrierfähigkeit ist, werden weniger Magnete verwendet. Das Hauptaugenmerk liegt in diesem Fall auf einem leistungsstarken Motor. Der Sieg im Kampf hängt jedoch selten nur von Eisen ab.

Die Hauptsache für Sumoroboter ist die Strategie, die in Form von Code geschrieben ist. Die Wahl des Eisens hängt auch davon ab. Oft bewegen sich Roboter so schnell, dass es schwierig ist, ihre Bewegungen im Auge zu behalten. Übermanövrierbares Verhalten basiert jedoch auf einer strengen Programmlogik. Betrachten Sie die Prinzipien, nach denen es erstellt wird.

Sumo Roboter Kreation



Wenden wir uns den Erfahrungen von Experten der Website hackster.io zu , die einen umfassenden Leitfaden zur Erstellung eines typischen Roboter-Sumoisten erstellt haben.

Folgende Komponenten werden im Projekt verwendet:

  • CytronTechnologies × 1 Controller ;
  • Infrarotsensor (3-80 cm) × 5;
  • Satz Silikonräder JSumo (52 x 30 mm) × 2;
  • Infrarot-Tracking-Modul × 2;
  • Gleichstrommotor (12 V, 380 U / min) × 4;
  • LiPo-Akku (11,1 V, 1300 mAh) × 1.


1. Controller


Sie können Arduino Uno, Mega oder Nano verwenden. Sie benötigen außerdem eine Platine, um alle Sensoren anzuschließen. Sie können natürlich Ihre eigene Erweiterungskarte erstellen und alle Kontakte mit dem Arduino verbinden oder eine fertige Karte kaufen und alle elektronischen Komponenten anschließen.


2. Der Motor


Dies ist einer der wichtigsten Teile, von denen die Leistung des Roboters abhängt. Idealerweise benötigen Sie einen Motor mit hoher Drehzahl und hohem Drehmoment. In diesem Fall ist er jedoch groß. Sie sollten sicherstellen, dass alle Motoren und Räder in eine 20 x 20 cm große Box passen.

Es gibt verschiedene Motortypen, die Sie in Ihrem Projekt verwenden können.

Ein Motor mit einem zylindrischen Zahnrad und einem Planetengetriebe , bei dem die Abtriebswelle parallel zum Motor ist.


Schneckengetriebemotor . Die Abtriebswelle ist hier senkrecht. Diese Option kann vorzuziehen sein, da im Roboter mehr Platz für andere Komponenten vorhanden ist.


Zweirad gegen Allrad


Ein Allradantrieb bietet definitiv mehr Möglichkeiten, einen gegnerischen Roboter zu schieben. Seine Mobilität ist jedoch geringer als die eines Zweirads. In diesem Demo-Projekt wurde jedoch Allradantrieb verwendet.

3. Räder



Es gibt nicht viele Optionen für gutes Gummi für einen Sumoroboter auf dem Markt. Ingenieure entschieden sich für Silikonräder von Jsumo. Sie können jedoch Räder aus einem Spielzeugauto verwenden.

Achten Sie auf die Montage - stellen Sie sicher, dass das ausgewählte Rad der Größe des Lochs entspricht, das der Abtriebswelle des Motors entspricht. Dieses Projekt verwendet eine 6 mm Welle, das Rad hat ein 6 mm Loch.

4. Sensoren



Zur Erkennung von Objekten können Sie sowohl Infrarotsensoren als auch beispielsweise Ultraschall verwenden.

Experten empfehlen, einen Angriff zu starten, wenn die Entfernung zum Feind nicht mehr als 60 cm beträgt. Somit ist es möglich, einen Sensor mit einem Empfindlichkeitsbereich von bis zu 1 m zu platzieren.


Für diesen Roboter wurden drei Infrarotsensoren installiert - einer pro Seite.


Ein Infrarotsensor sollte auch an der Unterseite des Roboters installiert werden, um eine weiße Linie am Rand des Rings zu erkennen. Abhängig von Ihrer Fahrstrategie können Sie vorne und hinten mehrere Sätze von Kantensensoren installieren.

5. Batterie



Eine Lithium-Polymer-Batterie wird normalerweise verwendet, da sie mehr Leistung liefert als andere Batterietypen mit derselben Größe.

6. Das Chassis des Roboters


Sie können die vorgefertigte Basis von Cytron verwenden, die der zulässigen Größe des Roboters (20 x 20 cm) entspricht, oder sie selbst von Grund auf neu erstellen.


Da der 3D-Druck wirtschaftlicher ist, hat der Taucher Dateien für den Heimdruck freigegeben .


7. Montage


Das folgende Diagramm und die folgende Tabelle geben einen Überblick über die Kabelverbindungen für den Sumo-Roboter.



Zuerst müssen Sie zwei Drähte (die empfohlene Größe beträgt 16-18 AWG) an die Motorklemme anlöten und dann an die Steuerung anschließen.


Außerdem müssen alle Motoren und Sensoren mit Drähten verlötet werden.


Nun wenden wir uns der Baugruppe im Gehäuse zu. Befestigen Sie die Motoren mit den Schrauben M3x10 am unteren Gehäuse.


Installieren Sie Infrarotsensoren auf der rechten und linken Seite.


Befestigen Sie die Felge mit der M4-Schraube und kleben Sie das Silikonband an.

Die Stellschraube muss am flachen Teil der runden Motorwelle befestigt sein.


Installieren Sie dann mit einer selbstschneidenden Schraube den Kantensensor an der Unterseite der Klinge.


Im vorderen Teil des unteren Gehäuses sehen Sie zwei Löcher zum Verlegen der Drähte der Kantensensoren.


Montieren Sie die Klinge mit den Schrauben und Muttern M6x20 mit dem unteren Gehäuse.


Installieren Sie Infrarotsensoren am vorderen Halter, bevor Sie ihn am Kleinbuchstaben befestigen.


Nach der Montage aller Sensoren und Motoren empfehlen wir, jedes Kabel zu markieren, damit die Fehlerbehebung in Zukunft einfacher ist.


Befestigen Sie die Stützhalterung für die Leiterplatte.


Überprüfen Sie die Polarität der Batterie und der Sensoren, bevor Sie sie an die Platine anschließen. Denken Sie dann daran, die Batterie zu entfernen, bevor Sie andere Komponenten an die Platine anschließen.


Da es sich um einen Allradroboter handelt, müssen zwei Motoren auf einer Seite angeschlossen werden, um sie gleichzeitig zu steuern.


Wenn Sie ein vorgefertigtes Codebeispiel verwenden , ist es besser, alle Motoren und Sensoren an dieselben Anschlüsse anzuschließen, die in den Abbildungen dargestellt sind.


Schließen Sie zum Schluss den Akku an.


Sumoroboter ist fertig!

8. Sensorkalibrierung


Ein wichtiger Schritt ist die Kalibrierung vor dem Programmieren. Leider achten die meisten Neulinge beim Einrichten des Roboters nicht gebührend darauf.

Stellen Sie sicher, dass die Sensoren innerhalb des erforderlichen Empfindlichkeitsbereichs arbeiten.

Der maximale Empfindlichkeitsbereich des feindlichen Suchsensors beträgt 80 cm. In diesem Projekt sollte der Roboter nicht auf ein Objekt reagieren, das sich in einer Entfernung von 60 bis 80 cm befindet. Daher wird der Empfindlichkeitsbereich um 20 cm verringert.


Legen Sie dazu den Roboter in einem Abstand von 60 cm auf eine flache weiße Oberfläche und stellen Sie den Sensor so ein, dass die LED-Anzeige erlischt. Die Vorgehensweise wird im Video detaillierter dargestellt.


Die Kantensensoren werden mit einem Schraubendreher durch das Loch in der Klinge eingestellt.

Mit Hilfe der Software können Sie die Signale zweier Kantensensoren auf den LEDs D0 und D1 anzeigen.


Dies ist erforderlich, um sicherzustellen, dass der Sensor ein hohes Ausgangssignal liefert, wenn er eine weiße Oberfläche erkennt, und ein niedriges auf einer schwarzen Oberfläche (beachten Sie die LEDs an D0 und D1 im obigen Video).

9. Programmierung


Da die URC10-Robotersteuerung mit Arduino UNO kompatibel ist, wird die Arduino IDE zur Programmierung verwendet. Sie können ein vorgefertigtes Codebeispiel nehmen .

Die einzige im Projekt verwendete Bibliothek ist CytronMotorDrivers .

Wenn Sie nicht wissen, wie Sie die Bibliothek aktivieren oder Beispielcode herunterladen können, lesen Sie das URC10- Handbuch.

Das Sumoroboterprogramm kann grundsätzlich in vier Teile unterteilt werden:

  • Beginn der Aufführung;
  • Suche;
  • Attacke;
  • Rückzug.

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);
  }
}

Beginn der Aufführung


Die Startstrategie hängt von den Wettbewerbsregeln ab. Ein Roboter kann erst nach 5 Sekunden und manchmal in 1 Sekunde in Bewegung treten.

Es kommt vor, dass Sie nach den Regeln den Roboter an einer beliebigen Stelle im Ring platzieren können. In anderen Fällen muss sich der Roboter in einer bestimmten „Startzone“ befinden.

In diesem Beispiel ist der Roboter so programmiert, dass er sich bewegt und den Gegner von der Seite angreift, sobald das Spiel beginnt.

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;
    }
  }
 
}


Suche


Wenn es unmittelbar nach dem Start nicht möglich war, den Feind anzugreifen, umrundet der Roboter den Ring im Kreis, um den Gegner zu finden. Sobald es erkannt wird, wird der Suchmodus gestoppt und der Roboter greift an.

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


Attacke


Wenn ein Feind von einem von fünf Sensoren erkannt wird, dreht sich der Roboter in seine Richtung und greift mit voller Geschwindigkeit an.

Die Genauigkeit des Angriffs hängt davon ab, wie klar Ihr Roboter den Feind verfolgen kann, wenn er sich mit voller Geschwindigkeit vorwärts bewegt. Wenn der Feind entkommen kann, nimmt das Programm die Arbeit im Suchmodus wieder auf.

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;
      }
    }
  }
}


Rückzug


Wenn einer der Kantensensoren eine weiße Linie erkennt, muss der Roboter zurücktreten und sich umdrehen. Während der Rotation sucht der Roboter weiter nach dem Feind. Wenn es in Sicht kommt, wird es angegriffen.

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);
}


Das ist alles. Jetzt können Sie ein Video ansehen, das zeigt, wie sich der Roboter aus dieser Lektion bewegt.


Haben Sie bereits Erfahrung mit dem Bau eines Roboters für ähnliche Wettbewerbe? Teilen Sie Gewinnstrategien in den Kommentaren.

Quellen


DIY-Robotermontage: https://www.hackster.io/cytron-technologies/building-a-sumo-robot-45d703

Nationaler Sumo-Roboterwettbewerb für ganz Japan: http://www.fsi.co.jp/sumo/en /index.html

Illustrierter Regelsatz : http://www.robotroom.com/SumoRules.html

All Articles