Suchcode

Lektion 7 von 10: Linienverfolgung, Klippenerkennung Graustufensensor kalibrieren Raspberry Pi Pico Auto

Diese Lektion ist Teil von: Raspberry Pi Pico 4WD Smart Car

Lektion 7 von 10: Linienverfolgung, Klippenerkennung Graustufensensor kalibrieren Raspberry Pi Pico Auto

In dieser Lektion aus dem Raspberry-Pi-Pico-Smart-Car-Kurs erkunden wir die faszinierende Welt der autonomen Navigation, indem wir einen Servomotor, einen Ultraschallsensor und die Motorsteuerung kombinieren, um das Auto zu befähigen, Hindernisse zu erkennen und zu vermeiden. Dieses Projekt verwandelt ein einfaches Vierradantriebs-Kit in einen intelligenten Roboter, der sich in dynamischen Umgebungen zurechtfinden kann, und bildet eine hervorragende Grundlage, um Sensorfusion und reaktive Steuerungsalgorithmen zu erlernen. Der praktische Wert dieses Projekts reicht weit über das Klassenzimmer hinaus und bietet eine Plattform für reale Anwendungen wie den Bau eines Staubsaugerroboters, der sich um Möbel herum bewegt, die Erstellung eines Sicherheitspatrouillenroboters, der sichere Zonen kartiert, oder die Entwicklung eines Prototyps für ein autonomes Lieferfahrzeug, das sich durch belebte Räume navigieren kann.

Der Kern dieses Projekts liegt in der Verwendung eines Servomotors, um einen Ultraschallsensor zu drehen und so ein einfaches Radarsystem zu schaffen. Durch das Scannen der Umgebung von 0 bis 180 Grad kann das Auto Entfernungen zu Hindernissen messen und den freiesten Weg nach vorne identifizieren. Diese Lektion bietet eine Schritt-für-Schritt-Anleitung zur Implementierung der Logik, die diese Sensordaten interpretiert, um intelligente Fahr Entscheidungen zu treffen.

Hardware/Komponenten

Dieses Projekt basiert auf dem SunFounder Raspberry Pi Pico Vierradantriebs-Auto-Kit. Obwohl das genaue Modell variieren kann, sind die erforderlichen Kernkomponenten:

  • Raspberry-Pi-Pico-Mikrocontroller-Board
  • SunFounder 4WD Smart Car Chassis-Kit (oder ähnlich)
  • Ultraschall-Distanzsensor (z. B. HC-SR04)
  • Servomotor (zum Drehen des Ultraschallsensors)
  • Motor-Treiberplatine (im Auto-Kit integriert)
  • Stromversorgung (Batterien)

Verdrahtungsanleitung

Die Verdrahtung für dieses Projekt ist normalerweise auf der Erweiterungsplatine des SunFounder-Auto-Kits vorkonfiguriert. Die Trigger- und Echo-Pins des Ultraschallsensors sowie der Signal-Pin des Servomotors sind mit bestimmten GPIO-Pins des Raspberry Pi Pico verbunden. Der Motor-Treiber ist ebenfalls mit dem Pico verbunden, um die Richtung und Geschwindigkeit der vier Motoren zu steuern.

Für ein detailliertes Verdrahtungsdiagramm, das für Ihr Kit spezifisch ist, lesen Sie bitte die von SunFounder bereitgestellte Dokumentation. Ein allgemeines Schema ist oft im Handbuch des Kits oder auf der Website des Herstellers enthalten.

Code-Erklärung

Diese Lektion konzentriert sich auf die Logik und die benutzerkonfigurierbaren Parameter innerhalb des Hindernisvermeidungsprogramms. Der Code ist so strukturiert, dass er das Verhalten des Autos basierend auf den Eingaben des Ultraschallsensors steuert. Die wichtigsten Variablen, die Sie anpassen können, um die Leistung des Autos fein abzustimmen, sind normalerweise am Anfang des Skripts definiert.

Hier sind die wichtigsten benutzerkonfigurierbaren Einstellungen, die Sie im Code finden:

  • Radar-Referenzdistanz: Dies ist der Schwellenwert (z. B. 20 cm), der bestimmt, ob ein Hindernis als "Gefahr" betrachtet wird. Wenn der Sensor eine Entfernung unter diesem Wert misst, leitet das Auto ein Ausweichmanöver ein.
  • Schrittwinkel: Dies ist das Inkrement (z. B. 10 Grad), um das der Servomotor beim Scannen der Umgebung dreht. Ein kleinerer Schrittwinkel bietet einen detaillierteren Scan, dauert aber länger.
  • Vorwärtsgeschwindigkeit: Diese Variable (z. B. 30) legt die Leistungsstufe für die Motoren fest, wenn sich das Auto vorwärts bewegt.
  • Wendegeschwindigkeit: Diese Variable (z. B. 50) legt die Leistungsstufe für die Motoren fest, wenn das Auto dreht, was normalerweise höher ist als die Vorwärtsgeschwindigkeit, um eine entschlossene Drehung zu gewährleisten.
  • Vorwärts-Scanwinkel: Dieser Wert (z. B. 50 Grad) legt den Bereich der Winkel fest, die der Servo scannt, wenn sich das Auto vorwärts bewegt. Ein engerer Scan ist schneller und ausreichend, um Hindernisse direkt im Weg zu erkennen.

Um zu verstehen, wie diese Variablen verwendet werden, stellen Sie sich vor, Sie möchten, dass das Auto vorsichtiger ist. Sie könnten den RADAR_REFERENCE auf 25 cm erhöhen, sodass es Hindernisse aus größerer Entfernung erkennt und vermeidet. Umgekehrt könnten Sie für ein schnelleres, aggressiveres Auto diesen Wert auf 15 cm verringern.

Die Hauptlogik verwendet eine get_direction()-Funktion, um die Sensordaten zu analysieren. Diese Funktion wandelt das Array der Distanzmessungen in eine Zeichenfolge aus '1'en (freier Raum) und '0'en (Hindernis) um. Dann teilt sie diese Zeichenfolge an den Nullen, um den breitesten durchgehenden Pfad zu finden. Basierend auf der Position dieses breitesten Pfads gibt die Funktion eine Richtung zurück: 'links', 'rechts' oder 'vorwärts'. Die Hauptschleife führt dann das entsprechende Manöver aus.

Live-Projekt/Demonstration

(im Video bei 02:47) Der Dozent beginnt mit der Demonstration der Hindernisvermeidungsfunktion. Das Auto verwendet den Servo, um den Ultraschallsensor zu drehen, der als Radar fungiert. Während sich das Auto bewegt, scannt es seine Umgebung, um einen freien Weg zu finden.

(im Video bei 03:34) Der Code wird ausgeführt, und das Auto wird in einem offenen Bereich getestet. Der Dozent erklärt die Codestruktur und zeigt, wie die get_distance()-Funktion aus dem sonar-Modul verwendet wird, um Entfernungen zu messen. Die Messwerte des Sensors werden auf der Shell angezeigt, was seine Genauigkeit und Einschränkungen demonstriert.

(im Video bei 07:45) Der Dozent öffnet dann das Beispiel "obstacle_avoid" und geht dessen Flussdiagramm durch. Diese visuelle Hilfe erklärt den Entscheidungsprozess: Das Auto scannt, prüft auf Gefahr, und wenn ein Weg blockiert ist, bestimmt es die beste Richtung zum Drehen basierend auf dem breitesten offenen Pfad.

(im Video bei 16:02) Ein Live-Test wird durchgeführt. Das Auto erkennt erfolgreich ein Hindernis (einen Karton) und manövriert darum herum, indem es nach links dreht, um einen freien Weg zu finden. Der Dozent erklärt die Echtzeitdaten, die auf der Shell ausgegeben werden, und zeigt '0' für Hindernis und '1' für freien Raum.

(im Video bei 22:53) Eine abschließende, komplexere Demonstration wird mit mehreren Hindernissen aufgebaut. Das Auto navigiert durch den Parcours und trifft Entscheidungen, nach links oder rechts abzubiegen, um Kollisionen zu vermeiden und eine freie Route zu finden, was die Wirksamkeit des Algorithmus in einer anspruchsvolleren Umgebung zeigt.

Kapitel

  • [00:00] Einführung in die Lektion
  • [01:31] Kurs- und Kit-Übersicht
  • [02:47] Vorführung der Hindernisvermeidungsfunktion
  • [03:34] Testen des Ultraschallsensors
  • [07:45] Verständnis des Hindernisvermeidungsalgorithmus
  • [12:49] Code-Durchlauf: Hauptschleife und Logik
  • [16:02] Live-Tests und Datenanalyse
  • [22:53] Demonstration des komplexen Hindernisparcours
Kein Code angehängt.

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Keine Dateien verfügbar.