Kazalo:

HackerBox 0024: Vision Quest: 11 korakov
HackerBox 0024: Vision Quest: 11 korakov

Video: HackerBox 0024: Vision Quest: 11 korakov

Video: HackerBox 0024: Vision Quest: 11 korakov
Video: Vlogmas 10: Hackerbox time 2024, November
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Ta mesec hekerji HackerBox eksperimentirajo s programom Computer Vision in Servo Motion Tracking. Ta navodila vsebujejo informacije za delo s HackerBox -om #0024, ki jih lahko prevzamete tukaj, ko so na zalogi. Če želite vsak mesec v svoj nabiralnik prejemati takšen HackerBox, se naročite na HackerBoxes.com in se pridružite revoluciji!

Teme in učni cilji za HackerBox 0024:

  • Eksperimentirajte z računalniškim vidom
  • Nastavitev OpenCV (Computer Vision)
  • Programiranje Arduino Nano iz Arduino IDE
  • Upravljanje servo motorjev z Arduino Nano
  • Sestavljanje mehanskega sklopa za premikanje in nagibanje
  • Upravljanje premikanja in nagiba z mikrokrmilnikom
  • Izvajanje sledenja obrazom z uporabo OpenCV

HackerBoxes je storitev mesečne naročnine na elektroniko in računalniško tehnologijo DIY. Smo ljubitelji, ustvarjalci in eksperimentatorji. Mi smo sanjači sanj. ZDRUŽITE PLANETO!

1. korak: HackerBox 0024: Vsebina škatle

HackerBox 0024: Vsebina škatle
HackerBox 0024: Vsebina škatle
  • HackerBoxes #0024 Zbirateljska referenčna kartica
  • Sklop s tremi nosilci in nagibom
  • Dva servomotorja MG996R z dodatno opremo
  • Dva aluminijasta krožna servo sklopka
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Sklop digitalne kamere s kablom USB
  • Tri leče z univerzalnim držalom za sponke
  • Lučka za medicinski pregled
  • Dupont moški/ženski skakalci
  • MicroUSB kabel
  • Ekskluzivna nalepka OpenCV
  • Ekskluzivna nalepka Dia de Muertos

Nekaj drugih stvari, ki vam bodo v pomoč:

  • Majhen ostanki lesene plošče za podlago kamere
  • Spajkalnik, spajkalnik in osnovna orodja za spajkanje
  • Računalnik za izvajanje programskih orodij

Najpomembneje je, da boste potrebovali občutek pustolovščine, DIY duha in hekersko radovednost. Hardcore DIY elektronika ni trivialno zasledovanje in tega vam ne zapravljamo. Cilj je napredek in ne popolnost. Ko vztrajate in uživate v pustolovščini, lahko veliko znanja pridobite z učenjem nove tehnologije in upajmo, da bodo nekateri projekti uspeli. Predlagamo, da vsak korak naredite počasi, pri tem pazite na podrobnosti in ne oklevajte in prosite za pomoč.

Pogosto zastavljena vprašanja: Vse člane HackerBox -a prosimo za res veliko uslugo. Preden se obrnete na podporo, si vzemite nekaj minut in preglejte pogosta vprašanja na spletnem mestu HackerBoxes. Čeprav želimo očitno pomagati vsem članom, kolikor je potrebno, večina naših e -poštnih sporočil za podporo vključuje preprosta vprašanja, ki so zelo jasno obravnavana v pogostih vprašanjih. Hvala za razumevanje!

2. korak: Računalniški vid

Računalniški vid
Računalniški vid

Računalniški vid je interdisciplinarno področje, ki obravnava, kako računalniki pridobijo visoko raven razumevanja iz digitalnih slik ali video posnetkov. Z vidika inženiringa si računalniški vid prizadeva avtomatizirati naloge, ki jih človeški vidni sistem zmore. Računalniški vid se kot znanstvena disciplina ukvarja s teorijo umetnih sistemov, ki črpajo informacije iz slik. Slikovni podatki so lahko v različnih oblikah, na primer video sekvence, pogledi iz več kamer ali večdimenzionalni podatki iz medicinskega skenerja. Kot tehnološka disciplina si računalniški vid prizadeva uporabiti svoje teorije in modele za gradnjo sistemov računalniškega vida. Poddomene računalniškega vida vključujejo rekonstrukcijo prizora, zaznavanje dogodkov, video sledenje, prepoznavanje predmetov, oceno 3D položaja, učenje, indeksiranje, ocenjevanje gibanja in obnovo slike.

Zanimivo je omeniti, da lahko računalniški vid štejemo za obratno računalniško grafiko.

3. korak: Obdelava in OpenCV

Obdelava in OpenCV
Obdelava in OpenCV

Obdelava je prilagodljiva programska knjižica in jezik za učenje kodiranja v kontekstu vizualne umetnosti. Obdelava je spodbujala programsko pismenost v vizualni umetnosti in vizualno pismenost v tehnologiji. Obstaja več deset tisoč študentov, umetnikov, oblikovalcev, raziskovalcev in ljubiteljev, ki uporabljajo Processing za učenje in izdelavo prototipov.

OpenCV (odprtokodna knjižnica računalniškega vida) je odprtokodna knjižnica programske opreme za računalniški vid in strojno učenje. OpenCV je bil zgrajen za zagotavljanje skupne infrastrukture za aplikacije računalniškega vida in za pospešitev uporabe zaznavanja strojev v komercialnih izdelkih. Knjižnica OpenCV ima več kot 2500 optimiziranih algoritmov, ki vključujejo obsežen nabor klasičnih in najsodobnejših algoritmov računalniškega vida in strojnega učenja. Te algoritme je mogoče uporabiti za odkrivanje in prepoznavanje obrazov, prepoznavanje predmetov, razvrščanje človeških dejanj v videoposnetke, sledenje premikom kamere, sledenje premikajočim se predmetom itd.

Namestite OpenCV v meniju Obdelava v meniju Datoteka> Primeri tako, da izberete »Dodaj primere« in nato na zavihku Knjižnice namestite knjižnice Video in OpenCV. Odprite primer LiveCamTest za osnovno sledenje obrazu. Tukaj si oglejte nekaj drugih primerov OpenCV za obdelavo.

Več virov:

Začetek z računalniškim vidom je knjižni projekt, ki omogoča enostavno vstopno točko za ustvarjalno eksperimentiranje z računalniškim vidom. Predstavlja kodo in koncepte, potrebne za gradnjo projektov računalniškega vida.

Programiranje računalniškega vida s Pythonom je knjiga O'Reilly o PCV, odprtokodnem modulu Python za računalniški vid.

Učenje OpenCV

Računalniški vid: algoritmi in aplikacije

Obvladovanje OpenCV

Konvolucijska nevronska omrežja Stanford Course CS231n za vizualno prepoznavanje (16 videoposnetkov)

Chris Urmson TED pogovor Kako avto brez voznika vidi cesto

4. korak: Platforma mikrokrmilnika Arduino Nano

Platforma mikrokrmilnika Arduino Nano
Platforma mikrokrmilnika Arduino Nano

Za krmiljenje servomotorjev v nosilcu kamere za nagibanje in nagibanje lahko uporabimo katero koli običajno platformo mikrokrmilnika. Arduino Nano je površinsko nameščena, na ploščo prijazna, miniaturizirana plošča Arduino z vgrajenim USB-jem. Je neverjetno celovit in enostaven za kramp.

Lastnosti:

  • Mikrokrmilnik: Atmel ATmega328P
  • Napetost: 5V
  • Digitalni V/I zatiči: 14 (6 PWM)
  • Analogni vhodni zatiči: 8
  • DC tok na V/I pin: 40 mA
  • Flash pomnilnik: 32 KB (2KB za zagonski nalagalnik)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Taktna hitrost: 16 MHz
  • Dimenzije: 17 x 43 mm

Ta različica Arduino Nano je črna zasnova Robotdyn. Vmesnik je vgrajen v vhod MicroUSB, ki je združljiv z istimi kabli MicroUSB, ki se uporabljajo pri številnih mobilnih telefonih in tabličnih računalnikih.

Arduino Nanos ima vgrajen čip USB/serijski most. Pri tej različici je mostni čip CH340G. Upoštevajte, da se na različnih vrstah plošč Arduino uporabljajo različne vrste USB/serijskih mostov. Ti čipi vam omogočajo, da vrata USB računalnika komunicirajo s serijskim vmesnikom na čipu procesorja Arduino.

Operacijski sistem računalnika potrebuje gonilnik naprave za komunikacijo z USB/serijskim čipom. Gonilnik omogoča IDE -ju komunikacijo s ploščo Arduino. Potreben poseben gonilnik naprave je odvisen od različice operacijskega sistema in vrste USB/serijskega čipa. Za USB/serijske čipe CH340 so na voljo gonilniki za številne operacijske sisteme (UNIX, Mac OS X ali Windows). Proizvajalec CH340 oskrbuje te gonilnike tukaj.

Ko prvič priključite Arduino Nano v vrata USB na vašem računalniku, se mora prižgati zelena lučka za vklop in kmalu zatem mora modra LED počasi utripati. To se zgodi, ker je Nano vnaprej naložen s programom BLINK, ki deluje na povsem novem Arduino Nano.

5. korak: Arduino integrirano razvojno okolje (IDE)

Arduino integrirano razvojno okolje (IDE)
Arduino integrirano razvojno okolje (IDE)

Če še nimate nameščenega Arduino IDE, ga lahko prenesete s spletnega mesta Arduino.cc

Če želite dodatne uvodne informacije za delo v ekosistemu Arduino, predlagamo, da si ogledate navodila za začetno delavnico HackerBoxes.

Priključite Nano v kabel MicroUSB, drugi konec kabla pa v vrata USB na računalniku, zaženite programsko opremo Arduino IDE, izberite ustrezna vrata USB v IDE pod orodji> vrata (verjetno ime z "wchusb" v njem). V orodju> deska izberite tudi "Arduino Nano" v IDE.

Nazadnje naložite del vzorčne kode:

Datoteka-> Primeri-> Osnove-> Utripaj

To je pravzaprav koda, ki je bila vnaprej naložena na Nano in bi se morala trenutno izvajati, da počasi utripa modra LED. Skladno s tem, če naložimo ta primer kode, se ne bo nič spremenilo. Namesto tega nekoliko spremenimo kodo.

Če natančno pogledate, lahko vidite, da program vklopi LED, počaka 1000 milisekund (eno sekundo), izklopi LED, počaka še eno sekundo in nato vse ponovi - za vedno.

Kodo spremenite tako, da obe izjavi "delay (1000)" spremenite v "delay (100)". Ta sprememba bo povzročila, da LED utripa desetkrat hitreje, kajne?

Naloženo kodo naložimo v Nano s klikom na gumb UPLOAD (ikona puščice) tik nad spremenjeno kodo. Pod kodo si oglejte informacije o stanju: "sestavljanje" in nato "nalaganje". Na koncu mora IDE označiti "Nalaganje je končano", LED pa naj bi utripal hitreje.

Če je tako, čestitam! Pravkar ste vdrli v svoj prvi del vdelane kode.

Ko se vaša različica s hitrim utripanjem naloži in zažene, zakaj ne bi preverili, ali lahko znova spremenite kodo, da LED utripa dvakrat hitro, nato pa počakajte nekaj sekund, preden se ponovi? Poskusi! Kaj pa drugi vzorci? Ko si uspete vizualizirati želeni rezultat, ga kodirati in opazovati, da deluje po načrtih, ste naredili ogromen korak k temu, da postanete kompetenten heker strojne opreme.

6. korak: Servo motorji

Servo motorji
Servo motorji

Servo motorje običajno krmili serija ponavljajočih se električnih impulzov, kjer širina impulzov označuje položaj servomotorja. Krmilni signal s širino impulza (PWM) pogosto generira skupni mikrokrmilnik, kot je Arduino.

Majhni servokrmilniki, kot je MG996R, so povezani s standardno trižično povezavo: dve žici za napajanje z enosmernim tokom in ena žica za prenos krmilnih impulzov. Servomotorji MG996R imajo delovno napetost 4,8-7,2 VDC.

7. korak: Sestavljanje mehanizma za premikanje in nagibanje

Sestavljanje mehanizma Pan in Tilt
Sestavljanje mehanizma Pan in Tilt
  1. Oba servomotorja MG996R izvlecite iz vrečk in zaenkrat odložite priloženo dodatno opremo.
  2. Na vsak servomotor pritrdite aluminijasto krožno servo sklopko. Upoštevajte, da spojke prihajajo v ločenih vrečah od servomotorjev. Spojka se zelo tesno prilega. Začnite tako, da sponko pritisnete na konec servo izhoda, nato pa v sredinsko luknjo privijte vijak. Zategnite navoj, da povlečete sklopko na servo izhod.
  3. Upoštevajte, da za montažo z nagibom obstajajo trije nosilci-dva nosilca za škatle in en U-nosilec.
  4. Enega od nosilcev škatle namestite na aluminijast krog za enega od servomotorjev. Temu servo bomo rekli pan servo. Nosilec škatle usmerite tako, da bo njena osrednja stena proti aluminijastemu krogu, tako da sta drugi dve steni nosilca škatle obrnjeni stran od servomotorja. Uporabite osrednje luknje na srednji steni nosilca škatle. Ta razporeditev naj bi omogočila, da servo posode vrti pritrjen nosilec škatle, ko se aktivira.
  5. Drugi servo (nagibni servo) namestite v nosilec škatle, ki je pritrjen na aluminijasti krog servo posode. Za pritrditev servo pogona za nagib uporabite vsaj dve matici in vijake - po enega na vsaki strani.
  6. Držite U-nosilec, vstavite medeninasti "ležaj" iz notranjosti U skozi eno od velikih vrtljivih montažnih lukenj.
  7. U-nosilec z ležajem postavite na nagibni servo, ki je znotraj nosilca škatle, tako da se druga velika vrtljiva montažna luknja (tista brez ležaja) poravna z aluminijastim krogom na servo nagibu.
  8. Z vijaki pritrdite U-nosilec na aluminijast krog na eni strani U-nosilca.
  9. Na drugi strani U-nosilca privijte en sam vijak skozi ležaj in v majhno luknjo v nosilcu škatle znotraj. To bi moralo omogočiti, da se U-nosilec obrne okoli nosilca škatle pozneje, ko se aktivira nagibni servo.

8. korak: Montaža sklopa Pan and Tilt

Montaža sklopa Pan and Tilt
Montaža sklopa Pan and Tilt
Montaža sklopa Pan and Tilt
Montaža sklopa Pan and Tilt

Preostali nosilec škatle lahko privijete na majhen ostanke lesene plošče, da služi kot osnova kamere, kot je prikazano na sliki. Končno je servo posode nameščen znotraj preostalega nosilca škatle z uporabo najmanj dveh matic in vijakov za pritrditev servo na nosilec - po enega na vsaki strani.

9. korak: Ožičite in preizkusite sklop za premikanje in nagibanje

Ožičite in preizkusite sklop pomikanja in nagiba
Ožičite in preizkusite sklop pomikanja in nagiba

Za priključitev servomotorjev v skladu s shemo je najhitreje izrezati originalne ženske konektorje s servomotorjev in nato uporabiti nekaj ženskih mostičkov DuPont za priključitev signalnih in ozemljitvenih vodov na nano zatiče.

Nano nima dovolj toka na 5V napajanju za napajanje servomotorjev iz USB -ja, zato je priporočljivo dodatno napajanje. To je lahko karkoli v območju 4,8-7,2 voltov. Na primer, štiri baterije AA (zaporedno) bodo lepo delovale. Dobra klop ali stenska bradavica sta tudi dobra izbira.

Preprost primer kode Arduino, ki je tukaj priložena kot PanTiltTest.ino, lahko uporabite za preizkušanje krmiljenja dveh servomotorjev iz serijskega monitorja v Arduino IDE. Hitrost prenosa monitorja nastavite tako, da se ujema s 9600bps, nastavljeno v vzorčni kodi. Vnos vrednosti kota med 0 in 180 stopinjami bo ustrezno namestil servomotorje.

Končno, modul kamere USB (ali drug senzor) lahko namestite na U-nosilec sklopa Pan-Tilt za uporabo pri sledenju.

10. korak: Sledenje obrazu z OpenCV

Image
Image
Hack the Planet
Hack the Planet

Sistem za sledenje obrazu strojnega vida je mogoče uvesti s kombinacijo podsistemov, kot je prikazano na blokovnem diagramu. Skico SerialServoControl za Arduino lahko najdete v naslednji vadnici Sparkfun skupaj s pripadajočo predstavitvijo z uporabo OpenCV, Processing, Arduino, USB kamere in Pan/Tilt Assembly za sledenje človeškemu obrazu. Predstavitev uporablja dva servomotorja za prestavitev kamere, da ostane obraz v središču video kadra, tudi ko se uporabnik premika po sobi. Na primer kodo v C#, si oglejte skladišče GitHub za videoposnetek CamBot.

11. korak: Hack the Planet

Če ste uživali v tem Instrucableu in bi radi, da bi škatlo elektronskih in računalniško -tehničnih projektov vsak mesec prejemali neposredno v vaš nabiralnik, se nam pridružite tako, da se naročite TUKAJ.

Dosezite in delite svoj uspeh v spodnjih komentarjih ali na Facebook strani HackerBoxes. Vsekakor nam sporočite, če imate kakršna koli vprašanja ali potrebujete pomoč pri čem. Hvala, ker ste del HackerBoxes. Prosimo, da prihajajo vaši predlogi in povratne informacije. HackerBoxes so VAŠE škatle. Naredimo nekaj odličnega!

Priporočena: