Erstellen eines Roborace-Wettbewerbsroboters

Roborace-Besonderheiten


Bild

Roborace ist ein Wettbewerb, bei dem Roboterautos auf einer speziellen Ringbahn gegeneinander antreten. Sie können eine Analogie zwischen Roborace und Formel-1-Rennen ziehen, mit Ausnahme von zwei Punkten.
  • Erstens handelt es sich anstelle von Rennwagen im Originalmaßstab um kleinere Automodelle und Originaldesigns mit Gesamt- und Gewichtsbeschränkungen (maximales BxT = 25x50 cm und Gewicht bis zu 3 kg).
  • Zweitens wird das Auto anstelle von Piloten von einem Bordcomputer gesteuert, der die Messwerte verschiedener Sensoren analysiert und das Auto auf der Strecke ausrichtet, die Bewegungsgeschwindigkeit auswählt und Kollisionen mit Hindernissen und Rivalen verhindert. Tatsächlich wird das „Verhalten“ des Autos auf der Strecke durch das Bordcomputersteuerungsprogramm bestimmt.

Roborace findet in Form einer Meisterschaft statt, die aus Etappen besteht, die in verschiedenen Städten Weißrusslands und im Ausland organisiert werden. An der Meisterschaft nehmen sowohl Einstiegskonstruktionen (zum Beispiel basierend auf einem Konstruktor vom Typ LEGO) als auch komplexe Robotergeräte teil. Wettbewerbsbestimmungen sind so gestaltet, dass sie ein möglichst breites Spektrum an Eigenschaften und Fähigkeiten von Roboterstrukturen abdecken.

Abbildung 1 - Spur für Rennroboter:

Bild

Betrachten Sie die in Abbildung 1 gezeigte Spur, auf der sich der Roboter bewegt. Obligatorische Elemente sind schwarze Linien und Wände. Auf dieser Grundlage können Sie eine Strategie für die Bewegung des Roboters entlang der Strecke erstellen: Rüsten Sie den Roboter beispielsweise mit schwarzen Liniensensoren aus und verwenden Sie die Spurlinien für die Navigation, oder installieren Sie Entfernungsmesser, um Hindernisse zu erkennen und sich entlang der Wände zu bewegen.

Dieser Artikel stellt einen der Roboter vor, die ich für Roborace gemäß der zweiten Strategie entwickelt habe (Bewegung basierend auf den Messwerten von Entfernungsmessern).

Phasen der Erstellung eines Roboters


Die Erstellung eines Roboters für Roborace beginnt mit der Auswahl des Chassis. Jetzt bieten die Geschäfte eine große Auswahl an Ketten- und Radplattformen. Ich empfehle, sich auf das klassische Design zu konzentrieren, wenn die Hinterräder von einem Elektromotor und die Vorderräder von einem Servoantrieb angetrieben werden . Abbildung 2 zeigt einen Roboter für Roborace, der nach einem ähnlichen Schema gebaut wurde.

Abbildung 2 - Roboter:

Bild

Ich hatte das Glück, ein Modell bei einem örtlichen Club von Radiomodellierern für wenig Geld zu kaufen (Leser können versuchen, dasselbe in ihrer Region zu tun: Sie haben normalerweise viele veraltete Modelle). Da das gekaufte Modell keinen Traktionsmotor hatte, wurde ein gekaufter 12-Volt-Motor darauf installiert. Sie können auch ein normales Spielzeug verwenden: Sie sind normalerweise recht zäh und Sie müssen nur die Lenkung modifizieren.

Da in meinem Fall das Servo bereits installiert war, gab es keine Probleme damit.

Der nächste Schritt ist die Wahl der Steuerkarte. Es gibt viele Möglichkeiten. Ich habe Arduino als einfachste Option gewählt. Das Gleiche kann dem Leser empfohlen werden, insbesondere bei mangelnder Erfahrung. Aufgrund meiner ziemlich umfangreichen Erfahrung reichen für solche Roboter die üblichen 8-Bit-Mikrocontroller aus. Wenn Sie nicht vorhaben, die Bewegungen des Roboters mit einer Kamera zu verfolgen, sollten Sie ihn daher nicht mit einem leistungsstärkeren Prozessor komplizieren.

Der Servoantrieb kann direkt mit dem Arduino verbunden werden - beispielsweise über die in Abbildung 3 gezeigte Sensorabschirmung. Es ist auch praktisch, Sensoren daran anzuschließen.

Abbildung 3 - Sensorschild v4:

Bild

Der Motor kann nicht direkt an den Arduino angeschlossen werden. Sie müssen einen speziellen Motortreiber verwenden. Jetzt sind viele verfügbar, und es gibt Anweisungen zum Anschließen. Ich habe den in unserem Labor entwickelten Motortreiber verwendet (Abb. 4).

Abbildung 4 - Motortreiber:

Bild

Bei Roboterwettbewerben muss den Batterien viel Aufmerksamkeit geschenkt werden. Ich benutze Lithium-Polymer-Batterien. Sie haben sich sehr gut bewährt. Einer der Hacks, die ich in meinem Roboter verwende, betrifft einen Spannungswandler. Der native Arduino-Konverter ist nicht sehr gut, daher ist es gut, einen Abwärtsregler zu verwenden , um Batteriestrom zu sparen . Natürlich können Sie einen herkömmlichen Linearwandler verwenden.

Der wichtigste Teil des Roboters sind die Sensoren - was ihn mit Informationen über die Welt, über Hindernisse und über andere Roboter versorgt. In der mittleren Preiskategorie können wir zwischen Ultraschall- und Infrarotsensoren wählen. In meinem Roboter verwende ich Infrarotsensoren GP2Y0A02YK0F. Ich mag Ultraschallsensoren nicht, weil ein Sensor mit einem anderen verrauscht sein kann. Zum Beispiel hatte ich solche Situationen: Der rechte Sensor hat ein Signal gesendet und der linke hat es empfangen. Ich arbeite immer noch an der richtigen Platzierung und Verwaltung von Ultraschallsensoren. Die Hoffnung auf ihren Start wird ständig von ihrem Preis angetrieben.

Das hier vorgestellte Robotermodell verfügt über drei Infrarotsensoren. Die Sensoren sind in Abbildung 2 zu sehen. Sie sind aus zwei Gründen tief im Gehäuse installiert:
  1. um die Totzone des Sensors zu verringern, die in diesem Modell 20 cm beträgt;
  2. Der Roboterkörper schützt die Sensoren vor mechanischen Beschädigungen bei Kollisionen mit anderen Robotern.

Seitensensoren werden in einem Winkel von 45 Grad installiert. Nun, wenn das Design des Roboters die Einstellung des Installationswinkels vorsieht.

Das allgemeine Schema des Roboters ist in Abbildung 5 zu sehen.

Abbildung 5 - Das allgemeine Schema des Roboters:

Bild

Roboterprogrammierung


Da der Roboter Arduino verwendet, wird die Programmierung mit der Arduino IDE durchgeführt. Das Roboterprogramm ist eine geschlossene Schleife, die aus folgenden Blöcken besteht:
  1. Sensorwerte filtern;
  2. Berechnung des Winkels und der Geschwindigkeit des Roboters;
  3. Übertragung von Steuersignalen an Mechanismen.

In dieser Struktur gibt es keinen Block zum Empfangen von Informationen von Sensoren. Da die Sensoren ein analoges Signal zurückgeben, verfügt die Arduino IDE über eine analogWrite () -Funktion. Diese Funktion funktioniert hervorragend, wenn die Messgeschwindigkeit nicht wichtig ist. Da der Roboter jedoch für den Wettbewerb ausgelegt war, wurde beschlossen, die Verarbeitung von Sensoren zu unterbrechen.

Alle auf dem ATmega-Mikrocontroller aufgebauten Arduino-Karten können ADC-Messungen im automatischen Modus durchführen. Sie müssen diesen Modus einmal konfigurieren und dann die erhaltenen Werte verwenden. Infolgedessen überprüft der Controller ständig die Sensoren, ohne CPU-Zeit zu verschwenden. Die Filterung der Sensorwerte erfolgt durch einen Medianfilter mit einem Fenster aus drei Elementen.

Um sich entlang der Autobahn zu bewegen, wurde der folgende Algorithmus entwickelt. Der Roboter vergleicht die Abstände zur rechten und linken Wand und dreht dementsprechend die Räder in die gewünschte Richtung. Befinden sich vor dem Roboter keine Hindernisse, erhöht sich die Geschwindigkeit, aber auch der maximal mögliche Drehwinkel der Räder nimmt ab. Dies ist notwendig, damit der Roboter auf geraden Abschnitten gerader fährt. Wenn ein Hindernis erkannt wird, vergrößert sich der Drehwinkel der Räder und der Roboter verlangsamt sich.

Es gibt natürlich ungelöste Probleme. Zum Beispiel kennt der Roboter die Krümmung der Kurve nicht und verlangsamt sich daher vor jeder Kurve.

Sie können den Projektcode auf GitHub anzeigen .

Source: https://habr.com/ru/post/de381775/


All Articles