Inhoudsopgave:

Recycle Sorteer Robot - Ajarnpa
Recycle Sorteer Robot - Ajarnpa

Video: Recycle Sorteer Robot - Ajarnpa

Video: Recycle Sorteer Robot - Ajarnpa
Video: The robot solving America’s trash crisis | Hard Reset 2024, Juli-
Anonim
Image
Image
De gegevens verkrijgen
De gegevens verkrijgen

Wist u dat het gemiddelde besmettingspercentage in gemeenschappen en bedrijven kan oplopen tot 25%? Dat betekent dat één op de vier stukjes recycling die je weggooit, niet wordt gerecycled. Dit wordt veroorzaakt door menselijke fouten in recyclingcentra. Traditioneel sorteren werknemers het afval in verschillende bakken, afhankelijk van het materiaal. Mensen zullen ongetwijfeld fouten maken en uiteindelijk het afval niet goed sorteren, wat leidt tot besmetting. Nu vervuiling en klimaatverandering nog belangrijker worden in de huidige samenleving, speelt recycling een grote rol bij de bescherming van onze planeet. Door robots in te zetten om afval te sorteren, zal de besmettingsgraad drastisch dalen, om nog maar te zwijgen van een stuk goedkoper en duurzamer. Om dit op te lossen, heb ik een recycle-sorteerrobot gemaakt die machine learning gebruikt om te sorteren tussen verschillende recyclematerialen.

Stap 1: Onderdelen

Zorg ervoor dat je de volgende onderdelen hebt om samen met deze tutorial te volgen:

3D-geprinte onderdelen (zie stap hieronder)

Raspberry Pi RPI 4 4GB

Google Coral USB-versneller

Arduino Uno R3

Raspberry Pi-cameramodule V2

5V 2A DC-wandvoeding

DC 12V-voeding

SG90 9g Micro Servo's 4st.

M3 x 0,5 mm roestvrijstalen zelfsluitende nylon zeskantmoer 100st.

M3x20 Button Head Titanium Schroeven 10st.

MG996R Metal Gear Torque Analoge Servomotor 4st.

Samsung 32GB Selecteer geheugenkaart

Adafruit Flex Kabel voor Raspberry Pi Camera - 1 meter

M2 Man Vrouw Messing Spacer Afstandhouder Schroefmoer Assortiment Kit

60 mm 12V ventilator

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

Stap 2: 3D-geprinte onderdelen

U moet alle onderdelen voor de robotarm 3D-printen. Alle bestanden vind je hier.

Stap 3: Coderen

Kloon alstublieft mijn GitHub-repository om deze tutorial te volgen.

Stap 4: De gegevens verkrijgen

Om het objectdetectiemodel te trainen dat verschillende recyclingmaterialen kan detecteren en herkennen, heb ik de trashnet-dataset gebruikt die 2527 afbeeldingen bevat:

  • 501 glas
  • 594 papier
  • 403 karton
  • 482 kunststof
  • 410 metaal
  • 137 afval

De afbeelding hierboven is een voorbeeld van een op de afbeeldingen uit de dataset.

Deze dataset is erg klein om een objectdetectiemodel te trainen. Er zijn slechts ongeveer 100 afbeeldingen van afval die te weinig zijn om een nauwkeurig model te trainen, dus ik besloot het weg te laten.

U kunt deze Google Drive-map gebruiken om de dataset te downloaden. Zorg ervoor dat u het bestand dataset-resized.zip downloadt. Het bevat de reeks afbeeldingen die al zijn verkleind tot een kleiner formaat om sneller te kunnen trainen. Als u het formaat van de onbewerkte afbeeldingen naar eigen wens wilt wijzigen, kunt u het bestand dataset-original.zip downloaden.

Stap 5: De afbeeldingen labelen

De afbeeldingen labelen
De afbeeldingen labelen

Vervolgens moeten we verschillende afbeeldingen van verschillende recyclingmaterialen labelen, zodat we het objectdetectiemodel kunnen trainen. Om dit te doen heb ik labelImg gebruikt, een gratis software waarmee je objectkaders in afbeeldingen kunt labelen.

Label elke afbeelding met het juiste label. Deze tutorial laat je zien hoe. Zorg ervoor dat elk selectiekader zo dicht mogelijk bij de rand van elk object ligt om ervoor te zorgen dat het detectiemodel zo nauwkeurig mogelijk is. Sla alle.xml-bestanden op in een map.

De bovenstaande foto laat zien hoe u uw afbeeldingen kunt labelen.

Dit is een zeer vervelende en geestdodende ervaring. Gelukkig voor jou heb ik alle afbeeldingen al voor je gelabeld! Je kunt het hier vinden.

Stap 6: Trainen

Op het gebied van training heb ik besloten om gebruik te maken van transfer learning met behulp van Tensorflow. Dit stelt ons in staat om een behoorlijk nauwkeurig model te trainen zonder een grote hoeveelheid gegevens.

Er zijn een aantal manieren waarop we dit kunnen doen. We kunnen het doen op onze lokale desktopcomputer in de cloud. Trainen op onze lokale machine duurt super lang, afhankelijk van hoe krachtig je computer is en of je een krachtige GPU hebt. Dit is naar mijn mening waarschijnlijk de gemakkelijkste manier, maar nogmaals met de keerzijde van snelheid.

Er zijn enkele belangrijke dingen om op te merken over transfer learning. U moet ervoor zorgen dat het voorgetrainde model dat u voor training gebruikt, compatibel is met de Coral Edge TPU. Hier vindt u compatibele modellen. Ik gebruikte het MobileNet SSD v2 (COCO)-model. Experimenteer ook gerust met anderen.

Om op uw lokale computer te trainen, raad ik u aan de tutorial van Google of de EdjeElectronics-tutorial te volgen als u op Windows 10 draait. Persoonlijk heb ik de EdjeElectroncs-tutorial getest en succes geboekt op mijn desktop. Ik kan niet bevestigen of de tutorial van Google zal werken, maar het zou me verbazen als dat niet het geval is.

Om in de cloud te trainen kun je AWS of GCP gebruiken. Ik heb deze tutorial gevonden die je kunt proberen. Het maakt gebruik van Google's cloud TPU's die uw objectdetectiemodel supersnel kunnen trainen. Voel je vrij om ook AWS te gebruiken.

Of je nu traint op je lokale machine of in de cloud, je zou moeten eindigen met een getraind tensorflow-model.

Stap 7: Het getrainde model samenstellen

Het getrainde model samenstellen
Het getrainde model samenstellen

Om ervoor te zorgen dat uw getrainde model met de Coral Edge TPU werkt, moet u het compileren.

Hierboven ziet u een diagram voor de workflow.

Na de training moet je deze opslaan als een bevroren grafiek (.pb-bestand). Vervolgens moet u het converteren naar een Tensorflow Lite-model. Merk op hoe er staat "Kwantisering na de training". Als u de compatibele voorgetrainde modellen hebt gebruikt bij het gebruik van transfer learning, hoeft u dit niet te doen. Bekijk hier de volledige documentatie over compatibiliteit.

Bij het Tensorflow Lite-model moet je het compileren naar een Edge TPU-model. Bekijk hier hoe u dit kunt doen.

Stap 8: Recycle detectiemodel

Als je het gedoe van het trainen, converteren en compileren van het objectdetectiemodel niet wilt overnemen, bekijk dan hier mijn recycle-detectiemodel.

Stap 9: het model implementeren

Het model implementeren
Het model implementeren

De volgende stap is het instellen van de Raspberry Pi (RPI) en Edge TPU om het getrainde objectdetectiemodel uit te voeren.

Stel eerst de RPI in met behulp van deze zelfstudie.

Stel vervolgens de Edge TPU in volgens deze tutorial.

Sluit ten slotte de RPI-cameramodule aan op de raspberry pi.

U bent nu klaar om uw objectdetectiemodel te testen!

Als je mijn repository al hebt gekloond, ga je naar de RPI-directory en voer je het bestand test_detection.py uit:

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

Er zou een klein venster moeten verschijnen en als je een plastic waterfles of ander recyclebaar materiaal plaatst, zou het dit moeten detecteren zoals de afbeelding hierboven.

Druk op de letter "q" op uw toetsenbord om het programma te beëindigen.

Stap 10: Bouw de robotarm

Bouw de robotarm
Bouw de robotarm

De robotarm is een 3D-geprinte arm die ik hier heb gevonden. Volg gewoon de tutorial over het instellen ervan.

De afbeelding hierboven laat zien hoe mijn robotarm is geworden.

Zorg ervoor dat je de servo-pinnen aansluit op de Arduino I/O-pinnen in mijn code. Sluit de servo's van onder naar boven van de arm aan in deze volgorde: 3, 11, 10, 9, 6, 5. Als u deze niet in deze volgorde aansluit, zal de arm de verkeerde servo bewegen!

Test om te zien of het werkt door naar de Arduino-directory te gaan en het bestand basicMovement.ino uit te voeren. Dit pakt eenvoudig een object dat u voor de arm plaatst en laat het achter.

Stap 11: De RPI en robotarm aansluiten

De RPI en robotarm aansluiten
De RPI en robotarm aansluiten

We moeten eerst de cameramodule aan de onderkant van de klauw monteren. De afbeelding hierboven laat zien hoe het eruit moet zien.

Probeer de camera zo recht mogelijk uit te lijnen om fouten bij het grijpen van het herkende recyclemateriaal tot een minimum te beperken. U moet de lange lintkabel van de cameramodule gebruiken zoals te zien is in de materialenlijst.

Vervolgens moet je het roboticArm.ino-bestand uploaden naar het Arduino-bord.

Ten slotte hoeven we alleen maar een USB-kabel aan te sluiten tussen de USB-poort van de RPI en de USB-poort van de Arduino. Hierdoor kunnen ze via serieel communiceren. Volg deze tutorial om dit in te stellen.

Stap 12: laatste hand

Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i

Deze stap is volledig optioneel, maar ik vind het leuk om al mijn componenten in een leuke kleine projectdoos te plaatsen.

De afbeeldingen hierboven laten zien hoe het eruit ziet.

Je vindt de projectbox op de materialenlijst. Ik heb net wat gaten geboord en messing afstandhouders gebruikt om de elektronica te monteren. Ik heb ook 4 koelventilatoren gemonteerd om een constante luchtstroom door de RPI en TPU te houden als ze warm zijn.

Stap 13: hardlopen

U bent nu klaar om zowel de robotarm als de RPI in te schakelen! Op de RPI kunt u eenvoudig het bestand recycle_detection.py uitvoeren. Dit opent een venster en de robotarm begint te lopen, net als in de demovideo! Druk op de letter "q" op uw toetsenbord om het programma te beëindigen.

Voel je vrij om met de code te spelen en veel plezier!

Stap 14: Toekomstig werk

Ik hoop R. O. S. om de robotarm met preciezere bewegingen te besturen. Hierdoor kunnen objecten nauwkeuriger worden opgepikt.

Stap 15: Vragen?

Laat gerust een reactie achter als je vragen hebt!

Aanbevolen: