Inhaltsverzeichnis:

Sortierroboter recyceln - Gunook
Sortierroboter recyceln - Gunook

Video: Sortierroboter recyceln - Gunook

Video: Sortierroboter recyceln - Gunook
Video: ZenRobotics - Next Generation ZenRobotics Recycler - robotic sorting station 2024, Juli
Anonim
Image
Image
Abrufen der Daten
Abrufen der Daten

Wussten Sie, dass die durchschnittliche Kontaminationsrate in Gemeinden und Unternehmen bis zu 25 % beträgt? Das bedeutet, dass jedes vierte Stück Recycling, das Sie wegwerfen, nicht recycelt wird. Dies wird durch menschliches Versagen in Recyclingzentren verursacht. Traditionell sortieren Arbeiter den Müll je nach Material in verschiedene Behälter. Menschen machen zwangsläufig Fehler und sortieren den Müll nicht richtig, was zu Kontaminationen führt. Da Umweltverschmutzung und Klimawandel in der heutigen Gesellschaft noch wichtiger werden, leistet Recycling einen großen Beitrag zum Schutz unseres Planeten. Durch den Einsatz von Robotern zum Sortieren von Müll sinken die Kontaminationsraten drastisch, ganz zu schweigen von viel billiger und nachhaltiger. Um dies zu lösen, habe ich einen Recycling-Sortierroboter entwickelt, der maschinelles Lernen verwendet, um zwischen verschiedenen Recyclingmaterialien zu sortieren.

Schritt 1: Teile

Stellen Sie sicher, dass Sie die folgenden Teile zusammen mit diesem Tutorial befolgen:

3D-gedruckte Teile (siehe Schritt unten)

Raspberry Pi RPI 4 4GB

Google Coral USB-Beschleuniger

Arduino Uno R3

Raspberry Pi Kameramodul V2

5V 2A DC-Netzteil

DC 12V Netzteil

SG90 9g Micro Servos 4St.

M3 x 0,5 mm Edelstahl Selbstsichernde Nylon-Sechskantmutter 100 Stk.

M3x20 Titanschrauben mit Halbrundkopf 10Stk.

MG996R Metallgetriebe Drehmoment-Analog-Servomotor 4St.

Samsung 32GB Speicherkarte auswählen

Adafruit Flexkabel für Raspberry Pi Kamera - 1 Meter

M2 männlich weiblich Messing Distanzstück Abstandsschraube Mutter Sortimentssatz

60mm 12V Lüfter

6,69" x 5,12" x 2,95" Projektbox

Schritt 2: 3D-gedruckte Teile

Sie müssen alle Teile für den Roboterarm in 3D drucken. Alle Dateien finden Sie hier.

Schritt 3: Code

Bitte klonen Sie mein GitHub-Repository, um diesem Tutorial zu folgen.

Schritt 4: Abrufen der Daten

Um das Objekterkennungsmodell zu trainieren, das verschiedene Recyclingmaterialien erkennen und erkennen kann, habe ich den Trashnet-Datensatz verwendet, der 2527 Bilder enthält:

  • 501 Glas
  • 594 Papier
  • 403 Karton
  • 482 Kunststoff
  • 410 Metall
  • 137 Müll

Das obige Bild ist ein Beispiel für eines der Bilder aus dem Datensatz.

Dieser Datensatz ist sehr klein, um ein Objekterkennungsmodell zu trainieren. Es gibt nur etwa 100 Bilder von Müll, die zu wenig sind, um ein genaues Modell zu trainieren, also habe ich mich entschieden, es wegzulassen.

Sie können diesen Google Drive-Ordner verwenden, um den Datensatz herunterzuladen. Stellen Sie sicher, dass Sie die Datei dataset-resized.zip herunterladen. Es enthält den Satz von Bildern, deren Größe bereits auf eine kleinere Größe geändert wurde, um ein schnelleres Training zu ermöglichen. Wenn Sie die Größe der Rohbilder nach Ihren Wünschen ändern möchten, können Sie die Datei dataset-original.zip herunterladen.

Schritt 5: Beschriften der Bilder

Beschriften der Bilder
Beschriften der Bilder

Als nächstes müssen wir mehrere Bilder verschiedener Recyclingmaterialien beschriften, damit wir das Objekterkennungsmodell trainieren können. Dazu habe ich labelImg verwendet, eine kostenlose Software, mit der Sie Objektbegrenzungsrahmen in Bildern beschriften können.

Beschriften Sie jedes Bild mit dem richtigen Etikett. Dieses Tutorial zeigt Ihnen, wie. Stellen Sie sicher, dass sich jeder Begrenzungsrahmen so nah an der Grenze jedes Objekts befindet, um sicherzustellen, dass das Erkennungsmodell so genau wie möglich ist. Speichern Sie alle.xml-Dateien in einem Ordner.

Das Foto oben zeigt, wie Sie Ihre Bilder beschriften.

Dies ist eine sehr mühsame und betäubende Erfahrung. Zum Glück für dich habe ich bereits alle Bilder für dich beschriftet! Sie finden es hier.

Schritt 6: Ausbildung

In Bezug auf die Ausbildung habe ich mich für Transfer Learning mit Tensorflow entschieden. Dies ermöglicht es uns, ein anständig genaues Modell ohne große Datenmengen zu trainieren.

Es gibt ein paar Möglichkeiten, wie wir dies tun können. Wir können dies auf unserem lokalen Desktop-Computer in der Cloud tun. Das Training auf unserem lokalen Computer dauert sehr lange, je nachdem, wie leistungsstark Ihr Computer ist und ob Sie über eine leistungsstarke GPU verfügen. Dies ist meiner Meinung nach wahrscheinlich der einfachste Weg, aber auch mit der Kehrseite der Geschwindigkeit.

Beim Transferlernen sind einige wichtige Dinge zu beachten. Sie müssen sicherstellen, dass das vortrainierte Modell, das Sie für das Training verwenden, mit der Coral Edge TPU kompatibel ist. Hier finden Sie kompatible Modelle. Ich habe das Modell MobileNet SSD v2 (COCO) verwendet. Fühlen Sie sich frei, auch mit anderen zu experimentieren.

Um auf Ihrem lokalen Computer zu trainieren, würde ich empfehlen, das Tutorial von Google oder das Tutorial von EdjeElectronics zu befolgen, wenn es unter Windows 10 ausgeführt wird. Persönlich habe ich EdjeElectroncs Tutorial getestet und auf meinem Desktop Erfolg erzielt. Ich kann nicht bestätigen, ob das Tutorial von Google funktioniert, würde mich aber wundern, wenn es nicht funktioniert.

Um in der Cloud zu trainieren, können Sie AWS oder GCP verwenden. Ich habe dieses Tutorial gefunden, das Sie ausprobieren können. Es verwendet die Cloud-TPUs von Google, die Ihr Objekterkennungsmodell superschnell trainieren können. Gerne können Sie auch AWS verwenden.

Unabhängig davon, ob Sie auf Ihrem lokalen Computer oder in der Cloud trainieren, sollten Sie am Ende ein trainiertes Tensorflow-Modell erhalten.

Schritt 7: Kompilieren des trainierten Modells

Kompilieren des trainierten Modells
Kompilieren des trainierten Modells

Damit Ihr trainiertes Modell mit der Coral Edge TPU funktioniert, müssen Sie es kompilieren.

Oben ist ein Diagramm für den Workflow.

Nach dem Training müssen Sie es als eingefrorenes Diagramm (.pb-Datei) speichern. Anschließend müssen Sie es in ein Tensorflow Lite-Modell konvertieren. Beachten Sie, wie es "Quantisierung nach dem Training" heißt. Wenn Sie beim Transfer Learning die kompatiblen vortrainierten Modelle verwendet haben, müssen Sie dies nicht tun. Sehen Sie sich hier die vollständige Dokumentation zur Kompatibilität an.

Beim Tensorflow Lite-Modell müssen Sie es zu einem Edge-TPU-Modell kompilieren. Details dazu finden Sie hier.

Schritt 8: Erkennungsmodell recyceln

Wenn Sie sich das mühsame Trainieren, Konvertieren und Kompilieren des Objekterkennungsmodells ersparen möchten, sehen Sie sich hier mein Modell zur Wiederverwendungserkennung an.

Schritt 9: Bereitstellen des Modells

Bereitstellen des Modells
Bereitstellen des Modells

Der nächste Schritt besteht darin, den Raspberry Pi (RPI) und die Edge TPU einzurichten, um das trainierte Objekterkennungsmodell auszuführen.

Richten Sie zuerst das RPI mithilfe dieses Tutorials ein.

Richten Sie als Nächstes die Edge TPU gemäß diesem Tutorial ein.

Verbinden Sie schließlich das RPI-Kameramodul mit dem Himbeer-Pi.

Jetzt können Sie Ihr Objekterkennungsmodell testen!

Wenn Sie mein Repository bereits geklont haben, möchten Sie zum RPI-Verzeichnis navigieren und die Datei test_detection.py ausführen:

python test_detection.py --model recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/detect_edgetpu.tflite --labels recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/labels.txt

Ein kleines Fenster sollte sich öffnen und wenn Sie eine Plastikwasserflasche oder anderes Recyclingmaterial einsetzen, sollte es wie in der Abbildung oben erkannt werden.

Drücken Sie den Buchstaben "q" auf Ihrer Tastatur, um das Programm zu beenden.

Schritt 10: Bauen Sie den Roboterarm

Baue den Roboterarm
Baue den Roboterarm

Der Roboterarm ist ein 3D-gedruckter Arm, den ich hier gefunden habe. Folgen Sie einfach dem Tutorial zum Einrichten.

Das Bild oben zeigt, wie sich mein Roboterarm entwickelt hat.

Stellen Sie sicher, dass Sie die Servo-Pins mit den entsprechenden Arduino-I / O-Pins in meinem Code verbinden. Schließen Sie die Servos von unten nach oben am Arm in dieser Reihenfolge an: 3, 11, 10, 9, 6, 5. Nicht in dieser Reihenfolge wird der Arm das falsche Servo bewegen!

Testen Sie, ob es funktioniert, indem Sie zum Arduino-Verzeichnis navigieren und die Datei basicMovement.ino ausführen. Dies greift einfach einen Gegenstand, den Sie vor den Arm legen, und lässt ihn hinter sich fallen.

Schritt 11: Anschließen des RPI und des Roboterarms

Anschließen des RPI und des Roboterarms
Anschließen des RPI und des Roboterarms

Wir müssen zuerst das Kameramodul an der Unterseite der Klaue montieren. Das Bild oben zeigt, wie es aussehen sollte.

Versuchen Sie, die Kamera so gerade wie möglich auszurichten, um Fehler beim Erfassen des erkannten Recyclingmaterials zu minimieren. Sie müssen das lange Flachbandkabel des Kameramoduls verwenden, wie in der Materialliste angegeben.

Als nächstes müssen Sie die Datei roboticArm.ino auf das Arduino-Board hochladen.

Schließlich müssen wir nur noch ein USB-Kabel zwischen dem USB-Port des RPI und dem USB-Port des Arduino anschließen. Dadurch können sie seriell kommunizieren. Folgen Sie diesem Tutorial, um dies einzurichten.

Schritt 12: Letzter Schliff

Letzter Schliff
Letzter Schliff
Letzter Schliff
Letzter Schliff

Dieser Schritt ist völlig optional, aber ich möchte alle meine Komponenten in eine nette kleine Projektbox packen.

Die Bilder oben zeigen, wie es aussieht.

Die Projektbox finden Sie in der Materialliste. Ich habe gerade einige Löcher gebohrt und Messingabstandshalter verwendet, um die Elektronik zu montieren. Ich habe auch 4 Kühllüfter montiert, um im heißen Zustand einen konstanten Luftstrom durch das RPI und TPU zu gewährleisten.

Schritt 13: Laufen

Jetzt können Sie sowohl den Roboterarm als auch RPI einschalten! Auf dem RPI können Sie einfach die Datei recycle_detection.py ausführen. Dadurch wird ein Fenster geöffnet und der Roboterarm beginnt wie im Demo-Video zu laufen! Drücken Sie den Buchstaben "q" auf Ihrer Tastatur, um das Programm zu beenden.

Fühlen Sie sich frei, mit dem Code herumzuspielen und Spaß zu haben!

Schritt 14: Zukünftige Arbeit

Ich hoffe, R. O. S. um den Roboterarm mit präziseren Bewegungen zu steuern. Dies ermöglicht eine genauere Aufnahme von Objekten.

Schritt 15: Fragen?

Hinterlasse gerne unten einen Kommentar, wenn du Fragen hast!

Empfohlen: