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, Novembar
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Ovog mjeseca, HackerBox hakeri eksperimentiraju sa Computer Vision i Servo Motion Tracking. Ovaj Instructable sadrži informacije za rad s HackerBox -om #0024, koje možete preuzeti ovdje dok traju zalihe. Takođe, ako želite da svakog mjeseca primate ovakav HackerBox u svoje poštansko sanduče, pretplatite se na HackerBoxes.com i pridružite se revoluciji!

Teme i ciljevi učenja za HackerBox 0024:

  • Eksperimentirajte s računarskim vidom
  • Postavljanje OpenCV -a (Computer Vision)
  • Programiranje Arduino Nano iz Arduino IDE -a
  • Upravljanje servo motorima s Arduino Nano
  • Sklapanje mehaničkog sklopa za naginjanje 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čunarsku tehnologiju. Mi smo hobisti, tvorci i eksperimentatori. Mi smo sanjari snova. HACK PLANET!

Korak 1: HackerBox 0024: Sadržaj kutije

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

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

  • Mali otpad od drvene ploče za bazu kamere
  • Lemilica, lemljenje i osnovni alati za lemljenje
  • Računar za pokretanje softverskih alata

Ono što je najvažnije, trebat će vam osjećaj avanture, DIY duh i znatiželja hakera. Hardcore DIY elektronika nije trivijalna potraga, a mi je ne razvodnjavamo. 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 da će neki projekti raditi. Predlažemo da svaki korak radite polako, pazeći na detalje i nikada ne oklijevajući zatražite pomoć.

ČESTO POSTAVLJANA PITANJA: Volimo zamoliti sve članove HackerBox -a za 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čunarski vid

Computer Vision
Computer Vision

Računarski vid je interdisciplinarno polje koje se bavi načinom na koji računari dobijaju razumevanje na visokom nivou iz digitalnih slika ili video zapisa. Iz perspektive inženjeringa, računarski vid nastoji automatizirati zadatke koje ljudski vidni sistem može obaviti. Kao naučna disciplina, računarski vid se bavi teorijom iza umjetnih sistema 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 sa medicinskog skenera. Kao tehnološka disciplina, računarski vid nastoji primijeniti svoje teorije i modele za izgradnju sistema računarskog vida. Poddomeni računarskog vida uključuju rekonstrukciju scene, detekciju događaja, video praćenje, prepoznavanje objekata, 3D procjenu poza, učenje, indeksiranje, procjenu pokreta i restauraciju slike.

Zanimljivo je napomenuti da se računarski vid može smatrati obrnutim od računarske 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 promovisala softversku pismenost u vizuelnoj umjetnosti i vizuelnu pismenost u tehnologiji. Desetine hiljada studenata, umjetnika, dizajnera, istraživača i hobista koristi Processing za učenje i izradu prototipova.

OpenCV (Open Source Computer Vision Library) je biblioteka softvera za računarsku viziju i mašinsko učenje otvorenog koda. OpenCV je izgrađen da pruži zajedničku infrastrukturu za aplikacije računarskog vida i da ubrza upotrebu percepcije mašina u komercijalnim proizvodima. Biblioteka OpenCV ima više od 2500 optimizovanih algoritama, koji uključuju sveobuhvatan skup i klasičnog i najsavremenijeg računarskog vida i algoritama za mašinsko učenje. Ovi algoritmi se mogu koristiti za otkrivanje i prepoznavanje lica, identifikaciju objekata, klasifikaciju ljudskih radnji u video zapisima, 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 Biblioteke instalirajte i video i OpenCV biblioteke. Otvorite primjer LiveCamTesta za osnovno praćenje lica. Ovdje pogledajte neke druge primjere OpenCV -a za obradu.

Više resursa:

Započinjanje rada s Computer Visionom je projekt knjige koji pruža lagan početak za kreativno eksperimentiranje s računalnim vidom. Uvodi kôd i koncepte potrebne za izradu projekata računarskog vida.

Programiranje računarskog vida s Pythonom je O'Reillyjeva knjiga o PCV -u, Python modulu otvorenog koda za računarski vid.

Učenje OpenCV -a

Računalni vid: Algoritmi i aplikacije

Savladavanje OpenCV -a

Stanfordski tečaj CS231n Konvolucijske neuronske mreže za vizualno prepoznavanje (16 videa)

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

Korak 4: Arduino Nano platforma za mikrokontroler

Arduino Nano platforma za mikrokontroler
Arduino Nano platforma za mikrokontroler

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

Karakteristike:

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

Ova posebna varijanta Arduino Nano je dizajn crnog Robotdyna. Interfejs ima ugrađeni MicroUSB port koji je kompatibilan sa istim MicroUSB kablovima koji se koriste sa mnogim mobilnim telefonima i tabletima.

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

Operativni sistem računara zahteva upravljački program za komunikaciju sa USB/serijskim čipom. Upravljački program omogućava IDE -u da komunicira s Arduino pločom. Odgovarajući upravljački program uređaja koji ovisi o verziji OS -a, ali i o vrsti USB/serijskog čipa. Za CH340 USB/serijske čipove dostupni su upravljački programi za mnoge operativne sisteme (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 lampica napajanja i ubrzo nakon toga plava LED lampica 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 sa Arduino.cc

Ako želite dodatne uvodne informacije za rad u Arduino ekosistemu, 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čunaru, pokrenite Arduino IDE softver, odaberite odgovarajući USB port u IDE -u pod Tools> port (vjerovatno 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 biti pokrenut sada kako bi polako trepnuo plavu LED diodu. U skladu s tim, ako učitamo ovaj primjer koda, ništa se neće promijeniti. Umjesto toga, hajde da malo promijenimo kod.

Ako pažljivo pogledate, možete vidjeti da program uključuje LED diodu, čeka 1000 milisekundi (jednu sekundu), isključuje LED, čeka još jednu sekundu, a zatim sve to radi - zauvijek.

Izmijenite kôd promjenom obje naredbe "delay (1000)" u "delay (100)". Ova izmjena će uzrokovati da LED trepće deset puta brže, zar ne?

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

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

Nakon što se vaša verzija sa brzim treptajem učita i pokrene, zašto ne biste provjerili možete li ponovo promijeniti kôd kako bi LED dioda brzo trepnula dvaput, a zatim pričekati nekoliko sekundi prije nego što ponovite? Pokušati! Šta kažete na neke druge obrasce? Jednom kada uspijete vizualizirati željeni ishod, kodirati ga i promatrati kako radi kako je planirano, napravili ste ogroman korak ka 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. Kontrolni signal sa širinom impulsa (PWM) često generira uobičajeni mikrokontroler, poput Arduina.

Mali hobi servo motori, 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

Sklapanje mehanizma pomicanja i naginjanja
Sklapanje mehanizma pomicanja i naginjanja
  1. Izvucite oba servo servera MG996R iz torbi i odložite priloženi pribor za sada.
  2. Pričvrstite aluminijumsku, kružnu servo spojnicu na svaki servo. Imajte na umu da spojnice dolaze u odvojenim 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 sa 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 ćemo nazvati pan servo. Okrenite držač kutije sa središnjom stijenkom prema aluminijskom krugu tako da druga dva zida držača kutije budu okrenuta od servo servera. Koristite središnje rupe na srednjem zidu 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 (nagibni servo) u držač kutije koji je pričvršćen na aluminijski krug servo posude. 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 montažna rupa za okretanje (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-konzole, zategnite jedan vijak kroz ležaj i u malu rupu u držaču kutije. Ovo bi trebalo omogućiti U-konzoli da se okreće oko držača kutije kasnije kada se aktivira servo nagib.

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 komad drvene ploče kako bi poslužio kao osnova kamere kao što je prikazano na slici. Konačno, servo servo je montiran 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 pomicanja i naginjanja
Ožičite i testirajte sklop pomicanja i naginjanja

Za povezivanje servo -a prema shemi, najbrže je samo izrezati originalne ženske konektore sa servo -a, a zatim upotrijebiti nekoliko ženskih krajeva 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 raditi lijepo. Opskrba za klupu ili zidna bradavica također su dobar izbor.

Jednostavan primjer Arduino koda koji je ovdje priložen kao PanTiltTest.ino može se koristiti za testiranje kontrole dva serva sa serijskog monitora na Arduino IDE -u. Postavite brzinu prijenosa monitora na 9600bps postavljenu u primjeru koda. Unosom vrijednosti kuta 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 planetu
Hakirajte planetu

Sistem za praćenje lica sa mašinskim vidom može se implementirati kombinovanjem podsistema kao što 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 centrirano u video kadru čak i dok se korisnik kreće po prostoriji. Na primjer kod u C#, provjerite GitHub spremište za CamBot video.

Korak 11: Hakirajte planetu

Ako ste uživali u ovom Instrucable -u i želite da vam ovakva kutija elektronike i projekata računarske tehnologije svakog mjeseca stiže izravno u vaše poštansko sanduče, pridružite nam se OVDJE.

Javite se 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še prijedloge i povratne informacije stižu. HackerBox -ovi su VAŠE kutije. Napravimo nešto sjajno!

Preporučuje se: