- Erforderliche Hardware:
- Programmiervoraussetzung:
- Einrichten der Verarbeitung auf Raspberry Pi:
- Schaltplan:
- Raspberry Pi Ball Tracking-Programm:
- Arbeiten des Raspberry Pi Ball Tracking Roboters:
Das Gebiet der Robotik, der künstlichen Intelligenz und des maschinellen Lernens entwickelt sich rasant weiter und wird den Lebensstil der Menschheit in naher Zukunft sicher verändern. Es wird angenommen, dass Roboter die reale Welt durch Sensoren und maschinelles Lernen verstehen und mit ihr interagieren. Die Bilderkennung ist eine der beliebtesten Methoden, mit denen die Roboter Objekte verstehen sollen, indem sie wie wir die reale Welt mit einer Kamera betrachten. Lassen Sie uns in diesem Projekt die Kraft von Raspberry Pi nutzen, um einen Roboter zu bauen, der den Ball verfolgen und ihm folgen kann, genau wie die Roboter, die Fußball spielen.
OpenCV ist ein sehr bekanntes Open-Source-Tool, das für die Bildverarbeitung verwendet wird. In diesem Tutorial verwenden wir jedoch die Verarbeitungs-IDE, um die Dinge einfach zu halten. Da die Verarbeitung für ARM auch die GPIO-Bibliothek für die Verarbeitung freigegeben hat, müssen wir nicht mehr zwischen Python und Verarbeitung wechseln, um mit Raspberry Pi zu arbeiten. Klingt cool, oder? Also fangen wir an.
Erforderliche Hardware:
- Himbeer-Pi
- Kameramodul mit Flachbandkabel
- Roboterchassis
- Getriebemotoren mit Rad
- L293D Motortreiber
- Power Bank oder eine andere tragbare Stromquelle
Programmiervoraussetzung:
- Monitor oder anderes Display für Raspberry pi
- Tastatur oder Maus für Pi
- ARM-Software verarbeiten
Hinweis: Während der Programmierung muss ein Display über Kabel mit Pi verbunden sein, da nur dann das Video der Kamera angezeigt werden kann
Einrichten der Verarbeitung auf Raspberry Pi:
Wie bereits erwähnt, verwenden wir die Verarbeitungsumgebung zum Programmieren unseres Raspberry Pi und nicht die Standardmethode für die Verwendung von Python. Befolgen Sie also die folgenden Schritte:
Schritt 1: - Schließen Sie Ihren Raspberry Pi an Ihren Monitor, Ihre Tastatur und Ihre Maus an und schalten Sie ihn ein.
Schritt 2: - Stellen Sie sicher, dass Ihr Pi mit einer aktiven Internetverbindung verbunden ist, da wir einige Dinge herunterladen werden.
Schritt 3: - Klicken Sie auf Processing ARM, um die Verarbeitungs-IDE für Raspberry Pi herunterzuladen. Der Download erfolgt in Form einer ZIP-Datei.
Schritt 4: - Extrahieren Sie nach dem Herunterladen die Dateien in Ihrem ZIP-Ordner in das von Ihnen bevorzugte Verzeichnis. Ich habe es gerade auf meinem Desktop extrahiert.
Schritt 5: - Öffnen Sie nun den extrahierten Ordner und klicken Sie auf die Datei mit dem Namen Verarbeitung. Es sollte ein Fenster wie unten gezeigt öffnen.
Schritt 6: - In dieser Umgebung geben wir unsere Codes ein. Für Leute, die mit Arduino vertraut sind, sei nicht schockiert. JA, die IDE ähnelt Arduino und das Programm auch.
Schritt 7: - Wir benötigen zwei Bibliotheken, damit unser Ballfolgeprogramm funktioniert. Um es zu installieren, klicken Sie einfach auf Skizze -> Bibliothek importieren -> Bibliothek hinzufügen . Das folgende Dialogfeld wird geöffnet.
Schritt 8: - Verwenden Sie das Textfeld oben links, um nach Raspberry Pi zu suchen, und drücken Sie die Eingabetaste. Das Suchergebnis sollte ungefähr so aussehen.
Schritt 9: - Suchen Sie nach den Bibliotheken mit den Namen "GL Video" und "Hardware I / O" und klicken Sie auf "Installieren", um sie zu installieren. Stellen Sie sicher, dass Sie beide Bibliotheken installieren.
Schritt 10: - Basierend auf Ihrem Internet dauert die Installation einige Minuten. Sobald dies erledigt ist, sind wir bereit für die Verarbeitung von Software.
Schaltplan:
Das Schaltbild dieses Raspberry Pi Ball Tracking-Projekts ist unten dargestellt.
Wie Sie sehen können, besteht die Schaltung aus einer PI-Kamera, einem Motortreibermodul und zwei Motoren, die an den Raspberry pi angeschlossen sind. Der gesamte Stromkreis wird von einer Mobile Power Bank gespeist (in der obigen Stromkreis durch eine AAA-Batterie dargestellt).
Da die Details der Stifte auf dem Raspberry Pi nicht erwähnt werden, müssen wir die Stifte anhand des folgenden Bildes überprüfen
Um die Motoren anzutreiben, benötigen wir vier Stifte (A, B, A, B). Diese vier Pins sind von GPIO14,4,17 bzw. 18 verbunden. Das orangefarbene und das weiße Kabel bilden zusammen die Verbindung für einen Motor. Wir haben also zwei solcher Paare für zwei Motoren.
Die Motoren sind mit dem L293D Motor Driver - Modul, wie im Bild gezeigt, und das Fahrer - Modul wird durch eine angetrieben Leistungsbank. Stellen Sie sicher, dass die Erdung der Power Bank mit der Erdung des Raspberry Pi verbunden ist. Nur dann funktioniert Ihre Verbindung.
Das heißt, wir sind mit unserer Hardware-Verbindung fertig. Kehren wir zu unserer Verarbeitungsumgebung zurück und beginnen mit der Programmierung, um unserem Roboter das Verfolgen eines Balls beizubringen.
Raspberry Pi Ball Tracking-Programm:
Das vollständige Verarbeitungsprogramm dieses Projekts finden Sie am Ende dieser Seite, das Sie direkt verwenden. Weiter unten habe ich die Funktionsweise des Codes erläutert, damit Sie ihn für andere ähnliche Projekte verwenden können.
Das Programmkonzept ist sehr einfach. Obwohl die Absicht des Projekts ist, einen Ball zu verfolgen, werden wir es tatsächlich nicht tun. Wir werden den Ball nur anhand seiner Farbe identifizieren. Wie wir alle wissen, sind Videos nichts anderes als fortlaufende Bilderrahmen. Also nehmen wir jedes Bild und teilen es in Pixel auf. Dann vergleichen wir jede Pixelfarbe mit der Farbe der Kugel; Wenn eine Übereinstimmung gefunden wird, können wir sagen, dass wir den Ball gefunden haben. Mit diesen Informationen können wir auch die Position der Kugel (Pixelfarbe) auf dem Bildschirm identifizieren. Wenn die Position ganz links ist, bewegen wir den Roboter nach rechts, wenn die Position ganz rechts ist, bewegen wir den Roboter nach links, so dass die Pixelposition immer in der Mitte des Bildschirms bleibt. Sie können sich ein Computer Vision-Video von Daniel Shiffman ansehen, um ein klares Bild zu erhalten.
Wie immer importieren wir zunächst die beiden heruntergeladenen Bibliotheken. Dies kann durch die folgenden zwei Zeilen erfolgen. Die Hardware-E / A-Bibliothek wird verwendet, um direkt aus der Verarbeitungsumgebung auf die GPIO-Pins des PI zuzugreifen. Die Glvideo-Bibliothek wird verwendet, um auf das Raspberry Pi-Kameramodul zuzugreifen.
import process.io. *; importiere gohai.glvideo. *;
Innerhalb der Setup- Funktion initialisieren wir die Ausgangspins, um den Motor zu steuern, und holen das Video von der Pi-Kamera und dimensionieren es in einem Fenster der Größe 320 * 240.
void setup () {size (320, 240, P2D); Video = neue GLCapture (dies); video.start (); trackColor = color (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }}
Das Void Draw ist wie die Endlosschleife. Der Code in dieser Schleife wird ausgeführt, solange das Programm beendet wird. Wenn eine Kameraquelle verfügbar ist, lesen wir das daraus resultierende Video
void draw () {Hintergrund (0); if (video.available ()) {video.read (); }}
Dann beginnen wir, den Videorahmen in Pixel aufzuteilen. Jedes Pixel hat den Wert Rot, Grün und Blau. Diese Werte werden in den Variablen r1, g1 und b1 gespeichert
für (int x = 0; x <video.width; x ++) {für (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // Was ist die aktuelle Farbe Farbe currentColor = video.pixels; float r1 = rot (currentColor); float g1 = grün (currentColor); float b1 = blau (currentColor);
Um die Farbe des Balls zunächst zu erkennen, müssen wir auf die Farbe klicken. Sobald Sie darauf klicken, wird die Farbe des Balls in der Variablen trackColour gespeichert.
void mousePressed () {// Farbe speichern, wenn die Maus in der trackColor-Variablen angeklickt wird int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }}
Sobald wir die Spurfarbe und die aktuelle Farbe haben, müssen wir sie vergleichen. Dieser Vergleich verwendet die dist-Funktion. Es wird überprüft, wie nahe die aktuelle Farbe an der Spurfarbe liegt.
float d = dist (r1, g1, b1, r2, g2, b2);
Der Wert von dist ist für eine genaue Übereinstimmung Null. Wenn der Wert von dist kleiner als ein bestimmter Wert ist (Weltrekord), gehen wir davon aus, dass wir die Spurfarbe gefunden haben. Dann erhalten wir die Position dieses Pixels und speichern es in der Variablen, die X und Y am nächsten liegt, um die Position der Kugel zu finden
if (d <worldRecord) {worldRecord = d; am nächstenX = x; am nächstenY = y; }}
Wir zeichnen auch eine Ellipse um die gefundene Farbe, um anzuzeigen, dass die Farbe gefunden wurde. Der Wert der Position wird auch auf der Konsole gedruckt. Dies hilft beim Debuggen sehr.
if (worldRecord <10) {// Zeichne einen Kreis an der verfolgten Pixelfüllung (trackColor); Schlaganfallgewicht (4,0); Strich (0); Ellipse (am nächstenX, am nächstenY, am nächstenY, 16, 16); println (am nächstenX, am nächstenY);
Schließlich können wir die Position des nächsten X und des nächsten Y vergleichen und die Motoren so einstellen, dass die Farbe in die Mitte des Bildschirms gelangt. Der folgende Code wird verwendet, um den Roboter nach rechts zu drehen, da festgestellt wurde, dass sich die X-Position der Farbe auf der linken Seite des Bildschirms befindet (<140).
if (nextX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); Verzögerung (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Rechts abbiegen"); }}
Ebenso können wir die Position von X und Y überprüfen, um die Motoren in die gewünschte Richtung zu steuern. Wie immer finden Sie das vollständige Programm am Ende der Seite.
Arbeiten des Raspberry Pi Ball Tracking Roboters:
Sobald Sie mit der Hardware und dem Programm fertig sind, ist es Zeit, Spaß zu haben. Bevor wir unseren Bot am Boden testen, sollten wir sicherstellen, dass alles gut funktioniert. Schließen Sie Ihren Pi an, um den Verarbeitungscode zu überwachen und zu starten. Sie sollten den Video-Feed in einem kleinen Fenster sehen. Bringen Sie nun den Ball in den Rahmen und klicken Sie auf den Ball, um dem Roboter beizubringen, dass er diese bestimmte Farbe verfolgen soll. Bewegen Sie nun den Ball über den Bildschirm und Sie sollten bemerken, dass sich die Räder drehen.
Wenn alles wie erwartet funktioniert, lassen Sie den Bot auf dem Boden los und beginnen Sie damit zu spielen. Stellen Sie sicher, dass der Raum gleichmäßig beleuchtet ist, um optimale Ergebnisse zu erzielen. Die vollständige Arbeitsweise des Projekts ist im folgenden Video dargestellt. Ich hoffe, Sie haben das Projekt verstanden und es genossen, etwas Ähnliches zu bauen. Wenn Sie Probleme haben, können Sie diese gerne im Kommentarbereich unten posten oder helfen.