Programmiererziehung ist so alt wie die Geschichte der Programmiersprachen. Heutzutage werden verschiedene Produkte verwendet, um die Programmiererziehung bekannter zu machen und sie spannend und unterhaltsam zu gestalten. Das erste davon sind Lernroboter. Das Vorbereiten und Programmieren von Robotern verbessert die Ingenieurs- und Programmierfähigkeiten von Kindern. Robotik-Wettbewerbe werden von Institutionen und Organisationen organisiert, um die Programmiererziehung bekannter zu machen und Lehrer und Schüler zu ermutigen. Einer dieser Wettbewerbe ist der Labyrinthlöser-Roboter Wettbewerbe. Diese Roboter lernen, das Labyrinth zu lösen, indem sie im Labyrinth umherwandern und zum Ausgangspunkt zurückkehren. Wenn sie das Labyrinth dann erneut beginnen, versuchen sie, ihr Ziel auf dem kürzesten Weg zu erreichen. Beim Erlernen des Labyrinths nutzen Roboter Infrarot- oder Ultraschall-Abstandssensoren.
Intelligente Roboterstaubsauger, die in Privathaushalten und am Arbeitsplatz eingesetzt werden, arbeiten ebenfalls mit einer Logik, die den Algorithmen von Labyrinth-Löser-Robotern ähnelt. Dank ihrer Algorithmen, die die Hindernisse ständig überprüfen und kartieren, versuchen sie, ihre Aufgaben zu erledigen, ohne mit Dingen zusammenzustoßen. Die meisten intelligenten Staubsauger sind mit LIDAR- und Infrarotsensoren ausgestattet, die für hochpräzise Lasermessungen und Hinderniserkennung ausgelegt sind.
In diesem Projekt werden wir einen einfachen Roboter bauen, mit dem Sie durch Ihr eigenes Labyrinth navigieren können.
Details und Algorithmus des Labyrinthroboters
In diesem Projekt verwenden wir die 2WD-Roboterauto-Bausatz das kommt mit dem Set. Wir werden den Ultraschall-Abstandssensor HC-SR04 verwenden, damit der Roboter die Wände vor ihm erkennen und über seine Bewegungen entscheiden kann. Im Labyrinth scannt der Roboter den Raum vor dem Auto und bewegt sich vorwärts, wenn dieser leer ist. Wenn sich im Umkreis von 5 cm eine Wand (Hindernis) befindet, biegt das Auto nach rechts ab und misst den Abstand erneut. Ist der neue Abstand rechts größer als 5 cm, setzt er seinen Weg fort. Wenn es weniger ist, dreht es sich nach links und bewegt sich vorwärts. Indem wir nach rechts und links abbiegen, steuern wir das Fahrzeug, um voranzukommen und das Labyrinth zu verlassen.
Komponenten
- 1X PicoBricks
- 1X HC-SR04 Ultraschallsensor
- 2X Gleichstrommotor
- Überbrückungskabel
- Einfache Verbindungskabel
Schaltplan
Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.
Bauphasen des Projekts
Sie können das Roboterauto bauen, indem Sie die Schritte für den Zusammenbau des 2WD-Roboterautos im sprachgesteuerten Autoprojekt befolgen.
Wir werden das Bluetooth-Modul HC05 in diesem Projekt nicht verwenden.
Um den Ultraschall-Abstandssensor HC-SR04 am Roboter zu montieren, können Sie die benötigten Teile von herunterladen Link hier und auf dem 3D-Drucker ausdrucken und am Fahrzeug montieren.
Nach dem Zusammenbau des Roboters können Sie Pappkartons verwenden, um das Labyrinth zu bauen. Sie können Wände aus Pappe herstellen oder 3D-gedruckte Wände verwenden, um die Wände mit Heißkleber zu verbinden und so das Labyrinth zu bauen.
MicroBlocks-Codes des Labyrinth-Lösungsroboters
Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf klicken Taste.
MicroPython-Codes der PicoBricks
vom Maschinenimport-Pin aus utime import schlaf Zeit importieren # Bibliotheken definieren Trigger = Pin(15, Pin.OUT) echo = Pin(14, Pin.IN) # Sensorpins definieren m1 = Pin(21, Pin.OUT) m2 = Pin(22, Pin.OUT) # DC-Motor-Pins definieren m1.low() m2.low() signaloff = 0 signalon = 0 def getDistance(): trigger.low() utime.sleep_us(2) trigger.high() utime.sleep_us(5) trigger.low() while echo.value() == 0: signaloff = utime.ticks_us() while echo.value() == 1: signalon = utime.ticks_us() timepassed = signalon – signaloff Distanz = (verstrichene Zeit * 0,0343) / 2 Rückweg # Entfernung berechnen Maß = 0 während True: Measure = int(getDistance()) drucken (messen) wenn Maß > 5: m1.high() m2.high() sleep(1) # Wenn der Abstand größer als 5 ist, fahren die Räder geradeaus anders: m1.low() m2.low() Schlaf(0,5) m1.high() m2.low() Schlaf(0,5) Measure = int(getDistance()) wenn Maß < 5: m1.low() m2.low() Schlaf(0,5) m1.low() m2.high() sleep(0.5) # Wenn der Abstand weniger als 5 beträgt, warten Sie und bewegen Sie sich in eine beliebige Richtung. Wenn der Abstand weniger als 5 beträgt, bewegen Sie sich in die entgegengesetzte Richtung
Arduino C-Codes
#include
#define TRIGGER_PIN 15
#define ECHO_PIN 14
#define MAX_DISTANCE 400
// Sensorpins definieren
NewPing-Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
pinMode(21, OUTPUT);
pinMode(22, OUTPUT); // DC-Motor-Pins definieren
}
void loop() {
Verzögerung(50);
int distance = sonar.ping_cm();
Nach vorne();
if(Abstand < 5){
Stoppen();
Verzögerung (1000);
Biegen Sie rechts ab();
Verzögerung (1000);
int distance = sonar.ping_cm();
if(Abstand < 5){
Stoppen();
Verzögerung (1000);
Biegen Sie links ab();
Verzögerung (500);
// Wenn der Abstand weniger als 5 beträgt, warten Sie, biegen Sie rechts ab; Wenn der Abstand erneut weniger als 5 beträgt, bewegen Sie sich in die entgegengesetzte Richtung
}
}
}
void Forward(){
digitalWrite(21, HIGH);
digitalWrite(22, HIGH); // Wenn der Abstand größer als 5 ist, fahren Sie geradeaus
}
void Turn_Left(){
digitalWrite(21, LOW);
digitalWrite(22, HIGH); // Biegen Sie links ab
}
void Turn_Right(){
digitalWrite(21, HIGH);
digitalWrite(22, LOW); // Biegen Sie rechts ab
}
void Stop(){
digitalWrite(21, LOW);
digitalWrite(22, LOW); // Warten
}
FAQ
Was ist der Algorithmus des Roboters im Labyrinthläufer?
Der Algorithmus des Roboters im Labyrinthläufer beinhaltet typischerweise eine Wegfindungstechnik wie den A*-Algorithmus (A-Stern). Dieser Algorithmus findet effizient den kürzesten Weg durch das Labyrinth, indem er Aspekte der Best-First-Suche und des Dijkstra-Algorithmus kombiniert und dabei zwischen Erkundung und der Entfernung des Ziels abwägt.
Was sind die Vorteile eines Labyrinth-Lösungsroboters?
Zu den Vorteilen eines Labyrinthlösungsroboters gehören verbesserte Fähigkeiten zur Problemlösung, effiziente Navigation in komplexen Umgebungen, die Fähigkeit, aus Erfahrungen zu lernen und sich anzupassen, Potenzial für Such- und Rettungseinsätze sowie die Entwicklung fortschrittlicher Algorithmen, die in verschiedenen Bereichen wie Robotik und KI anwendbar sind und Automatisierung.
Was ist der a*-Labyrinth-Lösungsalgorithmus?
Der A*-Labyrinth-Lösungsalgorithmus ist eine Wegfindungs- und Graph-Traversal-Technik, die zum effizienten Finden des kürzesten Weges durch ein Labyrinth verwendet wird. Es kombiniert Funktionen des Dijkstra-Algorithmus und einer heuristischen Suche wie Greedy Best-First-Search, um die Wegfindung zu optimieren, indem sowohl die Kosten für das Erreichen eines Knotens als auch eine Schätzung der Entfernung zum Ziel berücksichtigt werden.