Sadržaj:

HackerBox 0024: Vision Quest: 11 koraka
HackerBox 0024: Vision Quest: 11 koraka

Video: HackerBox 0024: Vision Quest: 11 koraka

Video: HackerBox 0024: Vision Quest: 11 koraka
Video: Vlogmas 10: Hackerbox time 2024, Srpanj
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Ovog mjeseca hakeri HackerBox -a eksperimentiraju s računalnim vidom i servo kretanjem praćenja. Ovaj Instructable sadrži informacije za rad s HackerBox -om #0024, koje možete preuzeti ovdje dok traju zalihe. Također, ako želite svaki mjesec primati ovakav HackerBox u poštanski sandučić, pretplatite se na HackerBoxes.com i pridružite se revoluciji!

Teme i ciljevi učenja za HackerBox 0024:

  • Eksperimentiranje s računalnim vidom
  • Postavljanje OpenCV -a (Computer Vision)
  • Programiranje Arduino Nano iz Arduino IDE -a
  • Upravljanje servo motorima s Arduino Nano
  • Sklapanje mehaničkog sklopa za pomicanje i naginjanje
  • Kontrola Pan and Tilt Motion pomoću mikrokontrolera
  • Izvođenje praćenja lica pomoću OpenCV -a

HackerBoxes je mjesečna pretplatnička usluga za DIY elektroniku i računalnu tehnologiju. Mi smo hobisti, stvaratelji i eksperimentatori. Mi smo sanjari snova. HAKNI PLANETU!

Korak 1: HackerBox 0024: Sadržaj kutije

HackerBox 0024: Sadržaj kutije
HackerBox 0024: Sadržaj kutije
  • HackerBoxes #0024 Kolekciona referentna kartica
  • Sklop za pomicanje i nagibanje s tri nosača
  • Dva servo servera MG996R s dodatnom opremom
  • Dvije aluminijske kružne servo spojnice
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Sklop digitalne kamere s USB kabelom
  • Tri objektiva s univerzalnim držačem
  • Svjetlo olovke za medicinski pregled
  • Dupont muški/ženski džemperi
  • MicroUSB kabel
  • Ekskluzivna naljepnica OpenCV
  • Ekskluzivna naljepnica Dia de Muertos

Još neke stvari koje će vam biti od pomoći:

  • Mali otpad od drvene ploče za podnožje kamere
  • Lemilica, lemljenje i osnovni alati za lemljenje
  • Računalo za pokretanje softverskih alata

Ono što je najvažnije, trebat će vam osjećaj avanture, DIY duh i hakerska znatiželja. Hardcore DIY elektronika nije beznačajna potraga, a mi vam je ne zagađujemo. Cilj je napredak, a ne savršenstvo. Kad ustrajete i uživate u avanturi, veliko zadovoljstvo može se steći učenjem nove tehnologije i nadamo se uspješnim nekim projektima. Predlažemo da svaki korak radite polako, pazeći na pojedinosti i nikada ne oklijevajući zatražiti pomoć.

ČESTO POSTAVLJANA PITANJA: Volimo zamoliti sve članove HackerBox -a zaista veliku uslugu. Molimo vas da odvojite nekoliko minuta da pogledate FAQ na web stranici HackerBoxes prije nego što kontaktirate podršku. Iako očito želimo pomoći svim članovima koliko god je potrebno, većina naših e -poruka za podršku uključuje jednostavna pitanja koja su vrlo jasno obrađena u FAQ -u. Hvala na razumijevanju!

Korak 2: Računalni vid

Računalni vid
Računalni vid

Računalni vid je interdisciplinarno područje koje se bavi načinom na koji računala dobivaju razumijevanje na visokoj razini iz digitalnih slika ili video zapisa. Iz perspektive inženjeringa, računalni vid nastoji automatizirati zadatke koje ljudski vizualni sustav može obaviti. Kao znanstvena disciplina, računalni vid bavi se teorijom iza umjetnih sustava koji izvlače informacije iz slika. Podaci o slici mogu imati različite oblike, poput video sekvenci, prikaza s više kamera ili višedimenzionalnih podataka s medicinskog skenera. Kao tehnološka disciplina, računalni vid nastoji primijeniti svoje teorije i modele za izgradnju sustava računalnog vida. Poddomene računalnog vida uključuju rekonstrukciju scene, otkrivanje događaja, video praćenje, prepoznavanje objekata, 3D procjenu poza, učenje, indeksiranje, procjenu pokreta i obnavljanje slike.

Zanimljivo je napomenuti da se računalni vid može smatrati obrnutim od računalne grafike.

Korak 3: Obrada i OpenCV

Obrada i OpenCV
Obrada i OpenCV

Obrada je fleksibilna softverska skica i jezik za učenje kodiranja u kontekstu vizualnih umjetnosti. Obrada je promicala softversku pismenost unutar vizualnih umjetnosti i vizualnu pismenost unutar tehnologije. Desetci tisuća studenata, umjetnika, dizajnera, istraživača i hobista koriste Processing za učenje i izradu prototipova.

OpenCV (Open Source Computer Vision Library) je biblioteka softvera za računalni vid i strojno učenje otvorenog koda. OpenCV je izgrađen kako bi pružio zajedničku infrastrukturu za aplikacije računalnog vida i ubrzao uporabu percepcije strojeva u komercijalnim proizvodima. Knjižnica OpenCV ima više od 2500 optimiziranih algoritama, koji uključuju opsežan skup klasičnih i vrhunskih računalnih vidova i algoritama strojnog učenja. Ovi se algoritmi mogu koristiti za otkrivanje i prepoznavanje lica, identifikaciju objekata, klasificiranje ljudskih postupaka u videozapisima, praćenje kretanja kamere, praćenje objekata u pokretu itd.

Instalirajte OpenCV u okviru Obrada iz izbornika Datoteka> Primjeri odabirom "Dodaj primjere", a zatim na kartici Knjižnice instalirajte i video i biblioteke OpenCV. Otvorite primjer LiveCamTesta za osnovno praćenje lica. Ovdje pogledajte neke druge primjere OpenCV -a za obradu.

Više resursa:

Započinjanje rada s računalnim vidom projekt je knjige koji omogućuje laku početnu točku za kreativno eksperimentiranje s računalnim vidom. Uvodi kôd i koncepte potrebne za izradu projekata računalnog vida.

Programiranje računalnog vida s Pythonom knjiga je O'Reilly o PCV -u, Python modulu otvorenog koda za računalni vid.

Učenje OpenCV -a

Računalni vid: Algoritmi i aplikacije

Ovladavanje OpenCV -om

Konvolucijske neuronske mreže Stanfordskog tečaja CS231n za vizualno prepoznavanje (16 videozapisa)

Chris Urmson TED razgovor Kako automobil bez vozača vidi cestu

Korak 4: Platforma mikrokontrolera Arduino Nano

Arduino Nano platforma za mikrokontroler
Arduino Nano platforma za mikrokontroler

Možemo koristiti bilo koju uobičajenu platformu za mikrokontroler za upravljanje servomotorima u nosaču kamere s nagibom i nagibom. Arduino Nano je minijaturna Arduino ploča s površinskim montiranjem, prilagođena matičnoj ploči s integriranim USB-om. Nevjerojatno je pun funkcija i lako se hakira.

Značajke:

  • Mikrokontroler: Atmel ATmega328P
  • Napon: 5V
  • Digitalni I/O pinovi: 14 (6 PWM)
  • Igle za analogni ulaz: 8
  • DC struja po I/O pin: 40 mA
  • Flash memorija: 32 KB (2KB za pokretački program)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Takt: 16 MHz
  • Dimenzije: 17 x 43 mm

Ova posebna varijanta Arduino Nano je dizajn crnog Robotdyna. Sučelje je na ugrađenom MicroUSB priključku koji je kompatibilan s istim MicroUSB kabelima koji se koriste s mnogim mobilnim telefonima i tabletima.

Arduino Nanos ima ugrađeni USB/serijski most čip. U ovoj posebnoj varijanti, čip mosta je CH340G. Imajte na umu da se na raznim vrstama Arduino ploča koriste razne druge vrste USB/serijskih čipova. Ovi čipovi omogućuju vam USB priključak računala za komunikaciju sa serijskim sučeljem na Arduinovom procesorskom čipu.

Operacijski sustav računala zahtijeva upravljački program za komunikaciju s USB/serijskim čipom. Upravljački program omogućuje IDE -u komunikaciju s Arduino pločom. Specifični upravljački program koji je potreban ovisi o verziji OS -a i vrsti USB/serijskog čipa. Za USB/serijske čipove CH340 dostupni su upravljački programi za mnoge operativne sustave (UNIX, Mac OS X ili Windows). Proizvođač CH340 opskrbljuje te upravljačke programe ovdje.

Kada prvi put priključite Arduino Nano u USB priključak vašeg računala, trebala bi se upaliti zelena žaruljica napajanja, a nedugo nakon toga plava LED dioda trebala bi početi polako treptati. To se događa jer je Nano unaprijed učitan BLINK programom, koji radi na potpuno novom Arduino Nano.

Korak 5: Arduino integrirano razvojno okruženje (IDE)

Arduino integrirano razvojno okruženje (IDE)
Arduino integrirano razvojno okruženje (IDE)

Ako još nemate instaliran Arduino IDE, možete ga preuzeti s Arduino.cc

Ako želite dodatne uvodne informacije za rad u ekosustavu Arduino, predlažemo da provjerite upute za početnu radionicu HackerBoxes.

Priključite Nano u MicroUSB kabel, a drugi kraj kabela u USB priključak na računalu, pokrenite Arduino IDE softver, odaberite odgovarajući USB priključak u IDE -u pod alati> port (vjerojatno naziv s "wchusb" u njemu). Također odaberite "Arduino Nano" u IDE -u pod alati> ploča.

Na kraju učitajte dio primjera koda:

Datoteka-> Primjeri-> Osnove-> Treptanje

Ovo je zapravo kod koji je unaprijed učitan na Nano i trebao bi se pokrenuti upravo sada kako bi polako treptao plavu LED diodu. U skladu s tim, ako učitamo ovaj primjer koda, ništa se neće promijeniti. Umjesto toga, promijenimo malo kôd.

Pomno promatrajući, možete vidjeti da program uključuje LED diodu, čeka 1000 milisekundi (jedna sekunda), isključuje LED, čeka još jednu sekundu, a zatim sve to radi - zauvijek.

Izmijenite kôd mijenjanjem oba izraza "delay (1000)" u "delay (100)". Zbog ove izmjene LED će treperiti deset puta brže, zar ne?

Učitajmo izmijenjeni kôd u Nano klikom na gumb UPLOAD (ikona strelice) neposredno iznad vašeg izmijenjenog koda. Informacije ispod o statusu pogledajte ispod koda: "sastavljanje", a zatim "učitavanje". Na kraju bi IDE trebao označiti "Uploading Complete" i LED bi trebao brže treptati.

Ako je tako, čestitamo! Upravo ste hakirali svoj prvi komad ugrađenog koda.

Nakon što se učita i pokrene vaša verzija za brzo treptanje, zašto ne biste provjerili možete li ponovno promijeniti kôd kako bi LED dioda brzo dvaput trepnula, a zatim pričekati nekoliko sekundi prije nego što ponovite? Pokušati! Što kažete na neke druge uzorke? Nakon što uspijete vizualizirati željeni ishod, kodirati ga i promatrati kako radi kako je planirano, napravili ste ogroman korak prema tome da postanete kompetentan haker hardvera.

Korak 6: Servo motori

Servo motori
Servo motori

Servo motori se općenito upravljaju nizom električnih impulsa koji se ponavljaju, gdje širina impulsa označava položaj serva. Upravljački signal s širinom impulsa (PWM) često generira uobičajeni mikrokontroler, poput Arduina.

Mali hobi servo pogoni, poput MG996R, povezani su standardnom trožilnom vezom: dvije žice za istosmjerno napajanje i jedna žica za nošenje upravljačkih impulsa. Servo pogoni MG996R imaju radni napon od 4,8-7,2 VDC.

Korak 7: Sklapanje mehanizma pomicanja i naginjanja

Sastavljanje mehanizma pomicanja i naginjanja
Sastavljanje mehanizma pomicanja i naginjanja
  1. Izvucite oba servo servera MG996R iz torbi i za sada odložite priloženi pribor.
  2. Pričvrstite aluminijsku, kružnu servo spojnicu na svaki servo. Imajte na umu da spojnice dolaze u zasebnim vrećicama od servomotora. Spojnica je vrlo uska. Počnite pritiskom na spojnicu na kraju servo izlaza, a zatim uvijte vijak u središnju rupu. Pritegnite navoj kako biste spojnicu povukli na servo izlaz.
  3. Imajte na umu da postoje tri držača za sklop s nagibom-dva držača za kutije i jedan U-nosač.
  4. Montirajte jedan od držača kutije na aluminijski krug za jedan od servomotora. Ovaj servo nazvat ćemo pan servo. Nosač kutije okrenite središnjom stijenkom prema aluminijskom krugu tako da druga dva zida držača kutije budu okrenuta od servo posude. Upotrijebite središnje rupe na srednjoj stjenci držača kutije. Ovakav raspored trebao bi omogućiti servo tave da okrene pričvršćeni držač kutije nakon što se aktivira.
  5. Postavite drugi servo (servo nagib) u držač kutije koji je pričvršćen na aluminijski krug servo tave. Upotrijebite najmanje dvije matice i vijke za pričvršćivanje servo servera za nagib - po jedan sa svake strane.
  6. Držeći U-držač, umetnite mesingani "ležaj" s unutarnje strane U kroz jednu od velikih otvornih montažnih rupa.
  7. Postavite U-držač s ležajem na servo servo sklopku koja se nalazi unutar držača kutije tako da se druga velika otvorna montažna rupa (ona bez ležaja) poravna s aluminijskim krugom na servo nagibu.
  8. Pomoću vijaka pričvrstite U-držač na aluminijski krug s jedne strane U-držača.
  9. S druge strane U-nosača, pritegnite jedan vijak kroz ležaj i u malu rupu unutar držača kutije. To bi trebalo omogućiti U-nosaču da se okreće oko držača kutije kasnije kada se aktivira nagibni servo.

Korak 8: Montiranje sklopa Pan and Tilt

Montiranje sklopa Pan and Tilt
Montiranje sklopa Pan and Tilt
Montiranje sklopa Pan and Tilt
Montiranje sklopa Pan and Tilt

Preostali držač kutije može se pričvrstiti na mali drveni ostatak koji će poslužiti kao osnova kamere kao što je prikazano na slici. Konačno, servo servo se montira unutar preostalog držača kutije koristeći najmanje dvije matice i vijke za pričvršćivanje servoa na nosač - po jedan sa svake strane.

Korak 9: Ožičite i testirajte sklop Pan and Tilt

Ožičite i testirajte sklop za pomicanje i naginjanje
Ožičite i testirajte sklop za pomicanje i naginjanje

Za ožičenje servosistema prema shemi, najbrže je samo izrezati izvorne ženske konektore sa servosa, a zatim upotrijebiti neke ženske krajeve DuPont kratkospojnika da biste signalne i uzemljene vodove priključili na Nano pinove.

Nano nema dovoljno struje na 5V napajanju za napajanje servo pogona s USB -a, pa se preporučuje dodatno napajanje. To može biti bilo što u rasponu od 4,8-7,2 volti. Na primjer, četiri AA baterije (u seriji) će lijepo raditi. Dobava za klupu ili zidne bradavice također su dobar izbor.

Jednostavan primjer Arduino koda koji je ovdje priložen kao PanTiltTest.ino može se koristiti za testiranje kontrole nad dva serva sa serijskog monitora na Arduino IDE -u. Postavite brzinu prijenosa monitora na 9600bps postavljenu u primjeru koda. Unosom vrijednosti kutova između 0 i 180 stupnjeva, servo će se prema tome postaviti.

Konačno, modul USB kamere (ili drugi senzor) može se montirati na U-nosač Pan-Tilt sklopa za upotrebu u aplikacijama za praćenje.

Korak 10: Praćenje lica s OpenCV -om

Image
Image
Hakirajte planet
Hakirajte planet

Sustav praćenja lica strojnog vida može se implementirati kombiniranjem podsustava kako je prikazano na blok dijagramu. Skica SerialServoControl za Arduino može se pronaći u sljedećem Sparkfun vodiču zajedno s povezanom demonstracijom pomoću OpenCV -a, Processinga, Arduina, USB kamere i Pan/Tilt sklopa za praćenje ljudskog lica. Demo koristi dva servo upravljača za premještanje kamere kako bi lice bilo usredsređeno u video kadru čak i dok se korisnik kreće po prostoriji. Na primjer kod u C#, provjerite spremište GitHub za video CamBot.

Korak 11: Hakirajte planet

Ako ste uživali u ovom Instrucableu i željeli biste svaki mjesec isporučivati kutiju projekata elektronike i računalne tehnologije izravno u vaš poštanski sandučić, pridružite nam se OVDJE.

Dosegnite i podijelite svoj uspjeh u komentarima ispod ili na Facebook stranici HackerBoxes. Svakako nas obavijestite ako imate pitanja ili trebate pomoć oko bilo čega. Hvala vam što ste dio HackerBox -a. Molimo da vaši prijedlozi i povratne informacije stižu. HackerBoxes su VAŠE kutije. Napravimo nešto sjajno!

Preporučeni: