Inhaltsverzeichnis:

Erweiterter Linienfolgeroboter - Gunook
Erweiterter Linienfolgeroboter - Gunook

Video: Erweiterter Linienfolgeroboter - Gunook

Video: Erweiterter Linienfolgeroboter - Gunook
Video: Roboter: Linienfolger / Line Follower 2024, Juli
Anonim
Image
Image
Prototyping - Perfboard
Prototyping - Perfboard

Dies ist ein fortschrittlicher Linienverfolgungsroboter, der auf Teensy 3.6 und QTRX-Liniensensor basiert, den ich gebaut habe und an dem ich seit einiger Zeit arbeite. Es gibt einige wesentliche Verbesserungen im Design und in der Leistung von meinem früheren Line-Following-Roboter. Die Geschwindigkeit und Reaktion des Roboters hat sich verbessert. Die Gesamtstruktur ist kompakt und leicht. Die Komponenten sind nahe der Radachse angeordnet, um den Drehimpuls zu minimieren. Hochleistungs-Mikrometall-Getriebemotoren sorgen für das angemessene Drehmoment und Aluminiumnaben-Silikonräder bieten die dringend benötigte Traktion bei hohen Geschwindigkeiten. Propellerschild- und Rad-Encoder ermöglichen es dem Roboter, seine Position und Ausrichtung zu bestimmen. Mit dem an Bord montierten Teensyview lassen sich alle relevanten Informationen visualisieren und wichtige Programmparameter per Tastendruck aktualisieren.

Um mit dem Bau dieses Roboters zu beginnen, benötigen Sie die folgenden Materialien (und viel Zeit und Geduld).

Lieferungen

Elektronik

  • Teensy 3.6-Entwicklungsboard
  • Requisitenschild mit Bewegungssensoren
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A Reflexionssensor-Array
  • 15x20cm doppelseitige Prototyp-Leiterplatte
  • Pololu Step-Up/Step-Down Spannungsregler S9V11F3S5
  • Pololu Einstellbarer 4-5-20V Step-Up Spannungsregler U3V70A
  • MP12 6V 1580 U/min Mikrogetriebemotor mit Encoder (x2)
  • DRV8833 Dual-Motor-Treiber-Träger (x2)
  • 3,7 V, 750 mAh Li-Po-Akku
  • Ein / Aus Schalter
  • Elektrolytkondensator 470uF
  • Elektrolytkondensator 1000uF (x2)
  • Keramikkondensator 0,1uF (x5)
  • Drucktasten (x3)
  • 10mm grüne LED (x2)

Hardware

  • Atom Silikonrad 37x34mm (x2)
  • Pololu Kugelrolle mit 3/8” Metallkugel
  • N20 Motorhalterung (x2)
  • Bolzen und Muttern

Kabel und Anschlüsse

  • 24AWG flexible Drähte
  • 24-poliges FFC-auf-DIP-Breakout- und FFC-Kabel (Typ A, 150 mm Länge)
  • Runde weibliche Stiftleiste
  • Runder weiblicher Stiftleiste langer Anschluss
  • Rechtwinklige zweireihige Buchsenleiste
  • Rechtwinklige zweireihige Stiftleiste
  • Stiftleiste
  • Stiftleiste mit männlicher Nadel

Werkzeuge

  • Multimeter
  • Lötkolben
  • Lötdraht
  • Abisolierzange
  • Kabelschneider

Schritt 1: Systemübersicht

Wie bei meinem früheren Entwurf eines selbstbalancierenden Roboters ist dieser Roboter eine Zusammenstellung von Breakout-Boards, die auf einem Perfboard montiert sind, das auch dem Zweck einer Struktur dient.

Die Hauptsysteme des Roboters sind im Folgenden beschrieben.

Mikrocontroller: Teensy 3.6 Entwicklungsboard mit 32-Bit 180MHz ARM Cortex-M4 Prozessor.

Zeilensensor: Pololu QTRX-MD-16A 16-Kanal-Analogausgangszeilensensor-Array in mitteldichter Anordnung (8 mm Sensorabstand).

Antrieb: 6V, 1580 U/min, Hochleistungs-Mikro-Metallgetriebemotoren mit magnetischem Rad-Encoder und Silikonrädern auf Aluminiumnaben.

Odometrie: Magnetrad-Encoder-Paare zur Schätzung der Koordinaten und der zurückgelegten Strecke.

Orientierungssensor: Propellerschild mit Bewegungssensoren zur Einschätzung der Position und des Kurses des Roboters.

Stromversorgung: 3,7 V, 750 mAh Lipo-Akku als Stromquelle. Der 3,3-V-Aufwärts-/Abwärtsregler versorgt den Mikrocontroller, die Sensoren und das Anzeigegerät. Der einstellbare Step-Up-Regler versorgt die beiden Motoren mit Strom.

Benutzeroberfläche: Teensyview zum Anzeigen von Informationen. Breakout mit drei Tasten zur Annahme von Benutzereingaben. Zwei grüne LEDs mit 10 mm Durchmesser zur Statusanzeige während des Betriebs.

Schritt 2: Beginnen wir mit dem Prototyping

Image
Image

Wir werden die obige Schaltung auf dem Perfboard implementieren. Wir müssen zuerst unsere Breakout-Boards bereit halten, indem wir Header darauf löten. Das Video gibt eine Idee, welche Header auf welchen Breakout-Boards gelötet werden sollten.

Nachdem Sie die Header auf Breakout-Platinen gelötet haben, stapeln Sie den Teensyview und den Pushbutton-Breakout auf Teensy.

Schritt 3: Prototyping - Perfboard

Prototyping - Perfboard
Prototyping - Perfboard

Holen Sie sich das 15x20cm doppelseitige Prototyp-Perfboard und markieren Sie die Grenze mit einem Permanentmarker, wie in der Abbildung gezeigt. Bohren Sie M2-Löcher für die Montage des Sensorarrays, des Laufrads und der Mikrometallgetriebemotoren an den mit einem weißen Kreis markierten Stellen. Wir werden später das Perfboard entlang der Grenze schneiden, nachdem wir alle Komponenten gelötet und getestet haben.

Wir beginnen unser Prototyping mit dem Löten der Header-Pins und -Sockel auf dem Perfboard. Auf diesen Stiftleisten werden später die Breakout-Boards eingefügt. Achten Sie sorgfältig auf die Position der Header auf dem Perfboard. Wir werden alle Drähte basierend auf diesem Layout der Header verbinden.

Schritt 4: Prototyping - Prop Shield

Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield
Prototyping - Prop Shield

Wir werden zuerst die Verbindungen zum Propellerschild verlöten. Da wir nur die Bewegungssensoren des Propellerschirms verwenden, müssen wir außer den 3V- und Massepins des Propellerschirms nur SCL-, SDA- und IRQ-Pins anschließen.

Sobald die Verbindung hergestellt ist, setzen Sie Teensy und Prop Shield ein und kalibrieren Sie die Bewegungssensoren, indem Sie die hier genannten Schritte befolgen.

Schritt 5: Prototyping - Strom und Masse

Prototyping - Strom und Masse
Prototyping - Strom und Masse

Löten Sie alle Strom- und Masseverbindungen gemäß dem Bild. Setzen Sie alle Breakout-Boards ein und stellen Sie die Kontinuität mit einem Multimeter sicher. Überprüfen Sie die verschiedenen Spannungspegel an Bord.

  • Li-Po-Ausgangsspannung (normalerweise zwischen 3V und 4,2V)
  • Ausgangsspannung des Aufwärts-/Abwärtsreglers (3,3 V)
  • Einstellbare Ausgangsspannung des Aufwärtsreglers (auf 6 V eingestellt)

Schritt 6: Prototyping - Motortreiberträger

Prototyping - Autofahrer-Träger
Prototyping - Autofahrer-Träger
Prototyping - Autofahrer-Träger
Prototyping - Autofahrer-Träger
Prototyping - Autofahrer-Träger
Prototyping - Autofahrer-Träger

Die Dual-Motortreiber-Trägerplatine DRV8833 kann 1,2 A Dauer- und 2 A Spitzenströme pro Kanal liefern. Wir werden die beiden Kanäle parallel schalten, um einen Motor anzutreiben. Löten Sie die Anschlüsse, indem Sie die folgenden Schritte ausführen.

  • Parallel die beiden Eingänge und die beiden Ausgänge des Motortreiberträgers wie im Bild gezeigt.
  • Schließen Sie die Eingangssteuerkabel an den Motortreiber an.
  • Verbinden Sie einen 1000uF-Elektrolytkondensator und einen 0,1uF-Keramikkondensator über die Vin- und Gnd-Anschlüsse der beiden Trägerplatinen.
  • Schließen Sie einen 0,1uF-Keramikkondensator an die Ausgangsklemmen des Motortreibers an.

Schritt 7: Prototyping - Zeilensensor-Array-Header

Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header
Prototyping - Zeilensensor-Array-Header

Teensy 3.6 verfügt über zwei ADCs - ADC0 und ADC1, die auf 25 zugängliche Pins gemultiplext sind. Wir können gleichzeitig auf zwei beliebige Pins von den beiden ADCs zugreifen. Wir werden jeweils acht Zeilensensoren an ADC0 und ADC1 anschließen. Die Sensoren mit gerader Zahl werden an ADC1 und Sensoren mit ungerader Zahl an ADC0 angeschlossen. Löten Sie die Anschlüsse, indem Sie die folgenden Schritte ausführen. Wir werden den Liniensensor später mit FFC an DIP-Adapter und Kabel anschließen.

  • Schließen Sie alle geraden Sensorpins (16, 14, 12, 10, 8, 6, 4, 2) wie im Bild gezeigt an. Führen Sie das Kabel zum Anschluss des Sensorpins 12 durch die Rückseite des Perfboards.
  • Verbinden Sie den Sendersteuerstift (EVEN) mit dem Teensy-Pin 30.
  • Schließen Sie alle ungeraden Sensorpins (15, 13, 11, 9, 7, 5, 3, 1) wie im Bild gezeigt an.
  • Schließen Sie einen 470uF-Elektrolytkondensator an Vcc und Gnd an.

Wenn Sie die Zeilensensor-Pins und die entsprechenden Header-Pins auf dem Perboard genau beobachten, werden Sie feststellen, dass die obere Reihe des Zeilensensors auf die untere Reihe des Headers auf dem Perboard abgebildet wird und umgekehrt. Dies liegt daran, dass die Reihen richtig ausgerichtet werden, wenn wir den Zeilensensor mit zweireihigen rechtwinkligen Headern an das Perfboard anschließen. Ich habe einige Zeit gebraucht, um dies herauszufinden und die Pinbelegung im Programm zu korrigieren.

Schritt 8: Prototyping - Mikrogetriebemotor und Encoder

Prototyping - Mikrogetriebemotor und Encoder
Prototyping - Mikrogetriebemotor und Encoder
  • Befestigen Sie den Mikro-Metallgetriebemotor mit Encoder mit N20-Motorhalterungen.
  • Schließen Sie die Motor- und Encoderkabel wie in der Abbildung gezeigt an.
  • Linker Encoder - Teensy Pins 4 & 0
  • Rechter Encoder - Teensy Pins 9 & 27

Schritt 9: Prototyping - LEDs

Prototyping - LEDs
Prototyping - LEDs
Prototyping - LEDs
Prototyping - LEDs

Die beiden LEDs zeigen an, ob der Roboter eine Abbiegung erkannt hat oder nicht. Ich habe einen 470-Ohm-Vorwiderstand verwendet, um die LEDs an Teensy anzuschließen.

  • Linke LED-Anode an Teensy-Pin 6
  • Rechte LED-Anode an Teensy-Pin 8

Schritt 10: Prototyping - Ausbrüche

Image
Image
Prototyping - Breakouts
Prototyping - Breakouts

Nachdem wir alle Lötarbeiten auf dem Perfboard abgeschlossen haben, können wir vorsichtig entlang der auf dem Perfboard markierten Grenze schneiden und die zusätzlichen Bits des Perfboards entfernen. Bringen Sie auch die beiden Räder und das Laufrad an.

Stecken Sie alle Breakout-Boards in die entsprechenden Sockel. Informationen zum Einsetzen des FFC-DIP-Breakouts und zum Befestigen des Zeilensensors QTRX-MD-16A finden Sie im Video.

Schritt 11: Übersicht über Softwarebibliotheken

Übersicht über Softwarebibliotheken
Übersicht über Softwarebibliotheken

Wir werden den Teensy in der Arduino IDE programmieren. Wir werden einige Bibliotheken brauchen, bevor wir beginnen. Die Bibliotheken, die wir verwenden werden, sind:

  • Encoder
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

Und einige, die speziell für diesen Roboter geschrieben wurden,

  • Druckknopf
  • Liniensensor
  • TeensyviewMenü
  • Motoren

Die für diesen Roboter spezifischen Bibliotheken werden ausführlich besprochen und stehen in den nächsten Schritten zum Download zur Verfügung.

Schritt 12: Bibliotheken erklärt - PushButton

Diese Bibliothek dient zur Verbindung des Pushbutton-Breakout-Boards mit dem Teensy. Die verwendeten Funktionen sind

PushButton(int leftButtonPin, int centerButtonPin, int rightButtonPin);

Durch Aufrufen dieses Konstruktors durch Erstellen eines Objekts werden die Drucktastenpins für den INPUT_PULLUP-Modus konfiguriert.

int8_t waitForButtonPress(void);

Diese Funktion wartet bis eine Taste gedrückt und losgelassen wird und gibt den Tastencode zurück.

int8_t getSingleButtonPress(void);

Diese Funktion prüft, ob eine Taste gedrückt und losgelassen wird. Wenn ja, wird der Tastencode zurückgegeben, andernfalls wird Null zurückgegeben.

Schritt 13: Bibliotheken erklärt - Zeilensensor

LineSensor ist die Bibliothek zur Anbindung des Zeilensensor-Arrays an Teensy. Im Folgenden sind die verwendeten Funktionen aufgeführt.

Zeilensensor (leer);

Der Aufruf dieses Konstruktors durch Erstellen eines Objekts initialisiert ADC0 und ADC1, liest Schwellenwert-, Minimal- und Maximalwerte aus dem EEPROM und konfiguriert die Sensorpins für den Eingabemodus und den Emittersteuerpin für den Ausgabemodus.

void kalibrieren (uint8_t CalibrationMode);

Diese Funktion kalibriert die Zeilensensoren. Der CalibrationMode kann entweder MIN_MAX oder MEDIAN_FILTER sein. Diese Funktion wird in einem späteren Schritt ausführlich erklärt.

void getSensorsAnalog(uint16_t *sensorValue, uint8_t Modus);

Liest das Sensorarray in einem der drei als Argument übergebenen Modi. Der Modus ist der Status der Sender und kann ON, OFF oder TOGGLE sein. Der TOGGLE-Modus kompensiert die Sensormesswerte des Reflexionsvermögens aufgrund des Umgebungslichts. Die an ADC0 und ADC1 angeschlossenen Sensoren werden synchron gelesen.

int getLinePosition(uint16_t *sensorValue);

Berechnet die Position des Sensorarrays über der Linie nach der Methode des gewichteten Durchschnitts.

uint16_t getSensorsBinary(uint16_t *sensorValue);

Gibt eine 16-Bit-Darstellung des Zustands der Sensoren zurück. Eine binäre Eins zeigt an, dass sich der Sensor über der Leitung befindet, und eine binäre Null zeigt an, dass der Sensor außerhalb der Leitung ist.

uint8_t countBinary(uint16_t binaryValue);

Die Übergabe der 16-Bit-Darstellung der Sensorwerte an diese Funktion gibt die Anzahl der Sensoren zurück, die sich über der Leitung befinden.

void getSensorsNormalized(uint16_t *sensorValue, uint8_t Modus);

Liest die Sensorwerte und beschränkt jeden Sensorwert auf seine entsprechenden Min- und Max-Werte. Die Sensorwerte werden dann von ihrem entsprechenden Min- bis Max-Bereich auf den Bereich 0 bis 1000 abgebildet.

Schritt 14: Bibliotheken erklärt - TeensyviewMenu

TeensyviewMenu ist die Bibliothek, in der auf die Funktionen für das Anzeigemenü zugegriffen werden kann. Im Folgenden sind die verwendeten Funktionen aufgeführt.

TeensyViewMenu (ungültig);

Der Aufruf dieses Konstruktors erstellt ein Objekt der Klasse LineSensor, PushButton und TeensyView.

Leeres Intro (void);

Dies dient zum Navigieren im Menü.

ungültiger Test (ungültig);

Dieser wird menüintern aufgerufen, wenn die Zeilensensorwerte auf Teensyview zum Testen angezeigt werden sollen.

Schritt 15: Bibliotheken erklärt - Motoren

Motors ist die Bibliothek, die zum Antrieb der beiden Motoren verwendet wird. Im Folgenden sind die verwendeten Funktionen aufgeführt.

Motoren (Leere);

Durch Aufrufen dieses Konstruktors durch Erstellen eines Objekts werden die Motorrichtungssteuerung und die PWM-Steuerungspins für den Ausgabemodus konfiguriert.

void setSpeed(int leftMotorSpeed, int rightMotorSpeed);

Der Aufruf dieser Funktion treibt die beiden Motoren mit als Argument übergebenen Geschwindigkeiten an. Der Geschwindigkeitswert kann von -255 bis +255 reichen, wobei ein negatives Vorzeichen anzeigt, dass die Drehrichtung umgekehrt wird.

Schritt 16: Testen - Encoder Odometrie

Wir testen die Magnetrad-Encoder und zeigen die vom Roboter zurückgelegte Position und Distanz an.

Laden Sie DualEncoderTeensyview.ino hoch. Das Programm zeigt die Encoder-Ticks auf Teensyview an. Der Encoder tickt inkrementell, wenn Sie den Roboter vorwärts bewegen und dekrementieren, wenn Sie ihn rückwärts bewegen.

Laden Sie nun die EncoderOdometry.ino hoch. Dieses Programm zeigt die Position des Roboters in x-y-Koordinaten, die zurückgelegte Gesamtstrecke in Zentimetern und den gedrehten Winkel in Grad an.

Ich habe das Implementing Dead Reckoning by Odometry on a Robot with R/C Servo Differential Drive der Seattle Robotics Society zur Bestimmung der Position aus Encoder-Ticks herangezogen.

Schritt 17: Testen - Prop Shield Bewegungssensoren

Stellen Sie sicher, dass Sie die Bewegungssensoren kalibriert haben, indem Sie die hier genannten Schritte befolgen.

Laden Sie nun die PropShieldTeensyView.ino hoch. Sie sollten die Beschleunigungs-, Kreisel- und Magnetometerwerte aller drei Achsen auf dem Teensyview sehen können.

Schritt 18: Programmübersicht

Das Programm für den Advanced Line Follower ist in der Arduino IDE geschrieben. Das Programm arbeitet in der nachfolgend erläuterten Reihenfolge.

  • Im EEPROM gespeicherte Werte werden gelesen und das Menü wird angezeigt.
  • Beim Drücken von LAUNCH tritt das Programm in die Schleife ein.
  • Normierte Zeilensensorwerte werden gelesen.
  • Der Binärwert der Zeilenposition wird unter Verwendung normalisierter Sensorwerte erhalten.
  • Die Anzahl der Sensoren, die sich über der Linie befinden, wird aus dem Binärwert der Linienposition berechnet.
  • Die Encoder-Ticks werden aktualisiert und die zurückgelegte Gesamtstrecke, die x-y-Koordinaten und der Winkel werden aktualisiert.
  • Für verschiedene Binärzählwerte im Bereich von 0 bis 16 wird ein Befehlssatz ausgeführt. Wenn die Binärzahl im Bereich von 1 bis 5 liegt und die Sensoren, die sich über der Linie befinden, nebeneinander liegen, wird die PID-Routine aufgerufen. Die Drehung wird in anderen Kombinationen von Binärwert und Binärzahl durchgeführt.
  • In der PID-Routine (die tatsächlich eine PD-Routine ist) werden die Motoren mit Geschwindigkeiten angetrieben, die basierend auf Fehler, Fehleränderung, Kp- und Kd-Werten berechnet werden.

Das Programm misst derzeit keine Orientierungswerte von Propellerschilden. Dies ist in Arbeit und wird aktualisiert.

Laden Sie TestRun20.ino hoch. Wir werden in den nächsten Schritten sehen, wie Sie durch das Menü navigieren, Einstellungen anpassen und die Liniensensoren kalibrieren. Anschließend werden wir unseren Roboter testen.

Schritt 19: Navigieren durch Menü und Einstellungen

Das Menü hat folgende Einstellungen, die mit der linken und rechten Taste navigiert und mit der mittleren Taste ausgewählt werden können. Die Einstellungen und ihre Funktionen werden im Folgenden beschrieben.

  1. KALIBRIEREN: Zum Kalibrieren von Liniensensoren.
  2. TEST: Zur Anzeige von Zeilensensorwerten.
  3. LAUNCH: Um die Zeilenfolge zu starten.
  4. MAX GESCHWINDIGKEIT: Zum Einstellen der oberen Grenze der Geschwindigkeit des Roboters.
  5. ROTATE SPEED: Zum Einstellen der oberen Grenze der Geschwindigkeit des Roboters, wenn er eine Kurve durchführt, d. h. wenn beide Räder mit gleicher Geschwindigkeit in entgegengesetzte Richtungen drehen.
  6. KP: Proportionale Konstante.
  7. KD: Ableitungskonstante.
  8. RUN MODE: Zur Auswahl zwischen zwei Betriebsarten - NORMAL und ACCL. Im NORMAL-Modus fährt der Roboter mit vordefinierten Geschwindigkeiten entsprechend den Linienpositionswerten. Im ACCL-Modus wird die MAX-GESCHWINDIGKEIT des Roboters in vordefinierten Bahnabschnitten durch ACCL-GESCHWINDIGKEIT ersetzt. Dies kann genutzt werden, um den Roboter an geraden Streckenabschnitten zu beschleunigen. Die folgenden Einstellungen sind nur zugänglich, wenn der RUN MODE auf ACCL eingestellt ist.
  9. RUNDENABSTAND: Zum Einstellen der Gesamtlänge der Rennstrecke.
  10. ACCL SPEED: Zum Einstellen der Beschleunigungsgeschwindigkeit des Roboters. Diese Geschwindigkeit ersetzt MAX SPEED in verschiedenen Abschnitten der Strecke, wie unten definiert.
  11. NEIN. OF STAGES: Zum Einstellen der Anzahl der Stufen, in denen ACCL SPEED verwendet wird.
  12. STUFE 1: Zum Einstellen der Start- und Enddistanzen der Stufe, in der MAX SPEED durch ACCL SPEED ersetzt wird. Für jede Etappe können die Start- und Enddistanzen separat eingestellt werden.

Schritt 20: Liniensensorkalibrierung

Image
Image

Die Liniensensorkalibrierung ist der Prozess, bei dem der Schwellenwert jedes der 16 Sensoren bestimmt wird. Dieser Schwellenwert wird verwendet, um zu entscheiden, ob ein bestimmter Sensor über der Leitung liegt oder nicht. Um die Schwellenwerte von 16 Sensoren zu bestimmen, verwenden wir eine der beiden Methoden.

MEDIAN FILTER: Bei dieser Methode werden die Zeilensensoren über der weißen Fläche platziert und eine vordefinierte Anzahl von Sensormesswerten für alle 16 Sensoren durchgeführt. Es werden die Medianwerte aller 16 Sensoren ermittelt. Der gleiche Vorgang wird nach dem Platzieren der Zeilensensoren über der schwarzen Fläche wiederholt. Der Schwellenwert ist der Durchschnitt der Medianwerte von schwarzen und weißen Oberflächen.

MIN MAX: Bei dieser Methode werden die Sensorwerte wiederholt gelesen, bis der Benutzer zum Stoppen auffordert. Die von jedem Sensor angetroffenen Maximal- und Minimalwerte werden gespeichert. Der Schwellenwert ist der Durchschnitt von Minimal- und Maximalwerten.

Die so erhaltenen Schwellenwerte werden auf den Bereich von 0 bis 1000 abgebildet.

Die Kalibrierung von Zeilensensoren nach der MIN-MAX-Methode wird im Video gezeigt. Nach der Kalibrierung der Zeilensensoren können die Daten wie im Bild dargestellt visualisiert werden. Die folgenden Informationen werden angezeigt.

  • Eine binäre 16-Bit-Darstellung der Zeilenposition, wobei eine binäre 1 angibt, dass sich der entsprechende Zeilensensor über der Zeile befindet, und eine binäre 0 angibt, dass der Zeilensensor außerhalb der Zeile ist.
  • Eine Zählung der Gesamtzahl der Sensoren, die sich über der Leitung befinden.
  • Minimal-, Maximal- und Sensorwerte (roh und normalisiert) der 16 Sensoren, jeweils ein Sensor.
  • Linienposition im Bereich -7500 bis +7500.

Die minimalen und maximalen Zeilensensorwerte werden dann im EEPROM gespeichert.

Schritt 21: Testlauf

Image
Image

Das Video zeigt einen Testlauf, bei dem der Roboter so programmiert ist, dass er stoppt, nachdem er eine Runde beendet hat.

Schritt 22: Abschließende Gedanken und Verbesserungen

Roboterwettbewerb
Roboterwettbewerb

Die Hardware, die zum Bau dieses Roboters zusammengestellt wird, wird von dem Programm, das ihn ausführt, nicht vollständig ausgenutzt. Im Programmteil könnten viele Verbesserungen vorgenommen werden. Die Bewegungssensoren von Propshield werden derzeit nicht zur Positions- und Orientierungsbestimmung verwendet. Die Odometriedaten von Encodern können mit den Orientierungsdaten von Propshield kombiniert werden, um die Position und den Kurs des Roboters genau zu bestimmen. Diese Daten können dann verwendet werden, um den Roboter so zu programmieren, dass er die Strecke in mehreren Runden lernt. Ich ermutige Sie, in diesem Bereich zu experimentieren und Ihre Ergebnisse zu teilen.

Viel Glück.

Roboterwettbewerb
Roboterwettbewerb

Zweiter Preis beim Roboterwettbewerb

Empfohlen: