Sisällysluettelo:

HackerBox 0024: Vision Quest: 11 vaihetta
HackerBox 0024: Vision Quest: 11 vaihetta

Video: HackerBox 0024: Vision Quest: 11 vaihetta

Video: HackerBox 0024: Vision Quest: 11 vaihetta
Video: Vlogmas 10: Hackerbox time 2024, Marraskuu
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Tässä kuussa HackerBox -hakkerit kokeilevat Computer Visionia ja Servo Motion Trackingia. Tämä ohjekirja sisältää tietoja HackerBox #0024: n kanssa työskentelystä, jonka voit noutaa täältä, kun tavaraa riittää. Lisäksi, jos haluat saada tällaisen HackerBoxin postilaatikkoosi joka kuukausi, tilaa HackerBoxes.com ja liity vallankumoukseen!

HackerBox 0024: n aiheet ja oppimistavoitteet:

  • Kokeileminen Computer Visionilla
  • OpenCV: n (Computer Vision) asentaminen
  • Arduino Nano -ohjelmointi Arduino IDE: stä
  • Servo -moottoreiden ohjaaminen Arduino Nanolla
  • Mekaanisen pannun ja kallistuskokoonpanon kokoaminen
  • Panin ja kallistusliikkeen ohjaaminen mikrokontrollerilla
  • Kasvoseurannan suorittaminen OpenCV: n avulla

HackerBoxes on kuukausittainen tilauslaatikkopalvelu DIY -elektroniikalle ja tietotekniikalle. Olemme harrastajia, tekijöitä ja kokeilijoita. Olemme unelmien haaveilijoita. HACK PLANET!

Vaihe 1: HackerBox 0024: Laatikon sisältö

HackerBox 0024: Laatikon sisältö
HackerBox 0024: Laatikon sisältö
  • HackerBoxes #0024 Kerättävä viitekortti
  • Kolme kiinnikepannua ja kallistuskokoonpanoa
  • Kaksi MG996R -servoa lisävarusteilla
  • Kaksi alumiinista pyöreää servoliitintä
  • Arduino Nano V3 - 5 V, 16 MHz, MicroUSB
  • Digitaalikamerakokoonpano USB -kaapelilla
  • Kolme linssiä, joissa on yleinen pidike
  • Lääketieteellinen tarkastuskynän valo
  • Dupont miesten/naisten puserot
  • MicroUSB -kaapeli
  • Ainutlaatuinen OpenCV -tarra
  • Ainutlaatuinen Dia de Muertos -tarra

Muutamia muita asioita, joista on apua:

  • Pieni puulevyromu kameran pohjalle
  • Juotosrauta, juote ja perusjuottotyökalut
  • Tietokone ohjelmistotyökalujen suorittamiseen

Mikä tärkeintä, tarvitset seikkailutunnetta, DIY -henkeä ja hakkereiden uteliaisuutta. Hardcore DIY -elektroniikka ei ole triviaali harrastus, emmekä kastele sitä puolestasi. Tavoitteena on edistyminen, ei täydellisyys. Kun jatkat ja nautit seikkailusta, voit saada paljon tyydytystä uuden tekniikan oppimisesta ja toivottavasti joidenkin projektien toimivuudesta. Suosittelemme, että otat jokaisen askeleen hitaasti, huomioi yksityiskohdat ja älä epäröi pyytää apua.

Usein kysyttyjä kysymyksiä: Haluamme pyytää kaikkia HackerBoxin jäseniä todella suuren palveluksen. Käytä muutama minuutti ja tutustu HackerBoxes -sivuston usein kysyttyihin kysymyksiin ennen kuin otat yhteyttä tukeen. Vaikka haluamme tietysti auttaa kaikkia jäseniä niin paljon kuin tarpeen, useimmat tukisähköpostimme sisältävät yksinkertaisia kysymyksiä, jotka on selkeästi käsitelty usein kysytyissä kysymyksissä. Kiitos ymmärryksestä!

Vaihe 2: Tietokoneen visio

Konenäkö
Konenäkö

Tietokonenäkö on monitieteinen kenttä, joka käsittelee sitä, miten tietokoneet saavat korkeatasoista ymmärrystä digitaalisista kuvista tai videoista. Suunnittelun näkökulmasta tietokonenäkö pyrkii automatisoimaan tehtäviä, joita ihmisen visuaalinen järjestelmä voi tehdä. Tieteenalana tietokonenäkö koskee teoriaa keinotekoisten järjestelmien takana, jotka ottavat tietoja kuvista. Kuvatiedoilla voi olla monia muotoja, kuten videosekvenssejä, näkymiä useista kameroista tai moniulotteisia tietoja lääketieteellisestä skannerista. Teknisenä kurinalaisuutena tietokonenäkö pyrkii soveltamaan teorioita ja malleja tietokonenäköjärjestelmien rakentamiseen. Tietokonenäön osa-alueita ovat kohtausrekonstruktio, tapahtumien havaitseminen, videoseuranta, esineiden tunnistus, 3D-asennon arviointi, oppiminen, indeksointi, liikkeen arviointi ja kuvan palauttaminen.

On mielenkiintoista huomata, että tietokonenäköä voidaan pitää tietokonegrafiikan käänteisenä.

Vaihe 3: Käsittely ja OpenCV

Käsittely ja OpenCV
Käsittely ja OpenCV

Processing on joustava ohjelmistoluonnoskirja ja kieli koodin oppimiseen kuvataiteen yhteydessä. Käsittely on edistänyt ohjelmistotaitoa kuvataiteen sisällä ja visuaalista lukutaitoa tekniikan sisällä. On kymmeniä tuhansia opiskelijoita, taiteilijoita, suunnittelijoita, tutkijoita ja harrastajia, jotka käyttävät prosessointia oppimiseen ja prototyyppien laatimiseen.

OpenCV (Open Source Computer Vision Library) on avoimen lähdekoodin tietokoneen visio- ja koneoppimisohjelmistokirjasto. OpenCV rakennettiin tarjoamaan yhteinen infrastruktuuri tietokonenäkösovelluksille ja nopeuttamaan koneen havaitsemisen käyttöä kaupallisissa tuotteissa. OpenCV-kirjastossa on yli 2500 optimoitua algoritmia, jotka sisältävät kattavan valikoiman sekä klassisia että uusimpia tietokonenäkö- ja koneoppimisalgoritmeja. Näitä algoritmeja voidaan käyttää kasvojen havaitsemiseen ja tunnistamiseen, esineiden tunnistamiseen, ihmisten toimintojen luokitteluun videoissa, kameran liikkeiden seurantaan, liikkuvien kohteiden seuraamiseen ja niin edelleen.

Asenna OpenCV Käsittelyssä Tiedosto> Esimerkit -valikosta valitsemalla "Lisää esimerkkejä" ja asentamalla sitten Kirjastot -välilehden alta sekä Video- että OpenCV -kirjastot. Avaa LiveCamTest -esimerkki kasvojen perusseurantaa varten. Tutustu muihin OpenCV -käsittelyesimerkkeihin täällä.

Lisää resursseja:

Computer Visionin käytön aloittaminen on kirjaprojekti, joka tarjoaa helpon pääsyn luovaan kokeiluun tietokonenäön kanssa. Se esittelee koodin ja käsitteet, jotka ovat tarpeen tietokonenäköprojektien rakentamiseksi.

Computer Vision -ohjelmointi Pythonilla on O'Reilly -kirja PCV: stä, avoimen lähdekoodin Python -moduuli tietokoneen näkemiseen.

OpenCV: n oppiminen

Tietokonevisio: algoritmit ja sovellukset

OpenCV: n hallitseminen

Stanford Course CS231n Convolutional Neural Networks for Visual Recognition (16 videota)

Chris Urmson TED -keskustelu Kuinka kuljettajaton auto näkee tien

Vaihe 4: Arduino Nano -mikrokontrollerialusta

Arduino Nano mikrokontrollerialusta
Arduino Nano mikrokontrollerialusta

Voimme käyttää mitä tahansa yleistä mikro -ohjausalustaa servojen ohjaamiseen panorointi- ja kallistuskameran kiinnikkeessä. Arduino Nano on pinta-asennettava, leipälautaystävällinen, pienikokoinen Arduino-levy, jossa on integroitu USB. Se on hämmästyttävän monipuolinen ja helppo hakata.

Ominaisuudet:

  • Mikro -ohjain: Atmel ATmega328P
  • Jännite: 5V
  • Digitaaliset I/O -nastat: 14 (6 PWM)
  • Analogiset tulonastat: 8
  • DC -virta per I/O -nasta: 40 mA
  • Flash -muisti: 32 kt (2 kt käynnistyslataimelle)
  • SRAM: 2 kt
  • EEPROM: 1 kt
  • Kellotaajuus: 16 MHz
  • Mitat: 17 x 43 mm

Tämä Arduino Nanon muunnelma on musta Robotdyn -muotoilu. Käyttöliittymä on sisäisen MicroUSB-portin kautta, joka on yhteensopiva samojen MicroUSB-kaapeleiden kanssa, joita käytetään monissa matkapuhelimissa ja tableteissa.

Arduino Nanosissa on sisäänrakennettu USB/Serial Bridge -siru. Tässä tietyssä versiossa siltapiiri on CH340G. Huomaa, että erityyppisissä Arduino -levyissä käytetään erilaisia USB-/sarjasiltapiirejä. Näiden sirujen avulla tietokoneen USB -portti voi kommunikoida Arduinon suoritinpiirin sarjaliitännän kanssa.

Tietokoneen käyttöjärjestelmä vaatii laiteohjaimen kommunikoidakseen USB-/sarjapiirin kanssa. Kuljettaja sallii IDE: n kommunikoida Arduino -kortin kanssa. Tarvittava laiteajuri riippuu sekä käyttöjärjestelmän versiosta että USB-/sarjapiirin tyypistä. CH340 USB/Serial -piireille on saatavana ohjaimia monille käyttöjärjestelmille (UNIX, Mac OS X tai Windows). CH340: n valmistaja toimittaa nämä ohjaimet täällä.

Kun liität Arduino Nanon ensimmäisen kerran tietokoneen USB -porttiin, vihreän virran merkkivalon pitäisi syttyä ja pian sen jälkeen, kun sininen LED -valo alkaa vilkkua hitaasti. Tämä johtuu siitä, että Nano on esiladattu BLINK-ohjelmalla, joka toimii uudella Arduino Nanolla.

Vaihe 5: Arduinon integroitu kehitysympäristö (IDE)

Arduinon integroitu kehitysympäristö (IDE)
Arduinon integroitu kehitysympäristö (IDE)

Jos sinulla ei vielä ole Arduino IDE: tä asennettuna, voit ladata sen osoitteesta Arduino.cc

Jos haluat lisätietoa Arduinon ekosysteemissä työskentelystä, suosittelemme tutustumaan HackerBoxes Starter Workshopin ohjeisiin.

Liitä Nano MicroUSB -kaapeliin ja kaapelin toinen pää tietokoneen USB -porttiin, käynnistä Arduino IDE -ohjelmisto, valitse sopiva USB -portti IDE: stä kohdasta Työkalut> portti (todennäköisesti nimi, jossa on "wchusb"). Valitse myös "Arduino Nano" IDE: stä kohdasta Työkalut> taulu.

Lataa lopuksi esimerkikoodi:

Tiedosto-> Esimerkit-> Perusteet-> Vilkkuu

Tämä on itse asiassa koodi, joka oli esiladattu nanolle, ja sen pitäisi toimia juuri nyt, jotta sininen LED vilkkuu hitaasti. Näin ollen, jos lataamme tämän esimerkkikoodin, mikään ei muutu. Muokataan sen sijaan koodia hieman.

Tarkasti katsottuna näet, että ohjelma kytkee LED -valon päälle, odottaa 1000 millisekuntia (yksi sekunti), sammuttaa LED -valon, odottaa toisen sekunnin ja tekee sitten kaiken uudelleen - ikuisesti.

Muokkaa koodia vaihtamalla molemmat "delay (1000)" -lausekkeet tilaan "delay (100)". Tämä muutos saa LED -valon vilkkumaan kymmenen kertaa nopeammin, eikö?

Ladataan muokattu koodi nanoon napsauttamalla UPLOAD -painiketta (nuolikuvake) juuri muokatun koodisi yläpuolella. Katso koodin alta tilatiedot: "kokoaminen" ja sitten "lataaminen". Lopulta IDE: n pitäisi osoittaa "Lataus valmis" ja LED -valon pitäisi vilkkua nopeammin.

Jos näin on, onnittelut! Olet juuri hakkeroinut ensimmäisen upotetun koodin.

Kun nopea vilkkuva versio on ladattu ja käynnissä, miksi et katso, voitko vaihtaa koodin uudelleen niin, että LED vilkkuu nopeasti kahdesti ja odota sitten muutama sekunti ennen toistamista? Kokeile! Entä muut mallit? Kun olet onnistunut visualisoimaan halutun tuloksen, koodaamaan sen ja havaitsemaan sen toimivan suunnitellusti, olet ottanut valtavan askeleen kohti pätevää laitteistohakkeria.

Vaihe 6: Servomoottorit

Servomoottorit
Servomoottorit

Servomoottoreita ohjataan yleensä toistuvilla sähköpulsseilla, joissa pulssien leveys osoittaa servon asennon. Pulssin leveysmoduloitu (PWM) -signaali generoidaan usein tavallisella mikro -ohjaimella, kuten Arduinolla.

Pienet harrastusservot, kuten MG996R, on kytketty tavallisen kolmijohtimisen liitännän kautta: kaksi johdinta tasavirtalähteelle ja yksi johdin ohjauspulssien siirtämistä varten. MG996R-servojen käyttöjännitealue on 4,8-7,2 VDC.

Vaihe 7: Pan- ja kallistusmekanismin kokoaminen

Pan- ja kallistusmekanismin kokoaminen
Pan- ja kallistusmekanismin kokoaminen
  1. Vedä molemmat MG996R -servot pussistaan ja aseta mukana olevat lisävarusteet toistaiseksi sivuun.
  2. Kiinnitä pyöreä alumiininen servokytkin jokaiseen servoon. Huomaa, että liittimet tulevat erillisiin pusseihin servoista. Liitin on erittäin tiukka. Aloita painamalla liitin servolähdön päähän ja kierrä sitten ruuvi keskireikään. Kiristä kierre vetääksesi kytkimen servolähtöön.
  3. Huomaa, että panorointikokoonpanoa varten on kolme kiinnikettä-kaksi laatikkokannatinta ja yksi U-kiinnike.
  4. Asenna yksi laatikon kiinnikkeistä yhden servon alumiinirenkaaseen. Kutsumme tätä servoa pan servoksi. Suuntaa laatikon kannatin keskiseinään alumiinirengasta vasten siten, että laatikon pidikkeen kaksi muuta seinää ovat poispäin pannun servosta. Käytä laatikon kannattimen keskiseinässä olevia keskireikiä. Tämän järjestelyn pitäisi antaa pannun servon pyöriä kiinnitetyn laatikon kannattimen ympärillä, kun sitä käytetään.
  5. Aseta toinen servo (kallistus servo) laatikon kiinnikkeeseen, joka on kiinnitetty pannun servon alumiinirenkaaseen. Kiinnitä kallistusservo vähintään kahdella mutterilla ja pultilla - yksi kummallakin puolella.
  6. Pidä kiinni U-kiinnikkeestä ja työnnä messinkinen "laakeri" U: n sisäpuolelta yhden suuren kääntökiinnitysreiän läpi.
  7. Aseta U-kiinnike laakerin kanssa kallistuksen servoon, joka on laatikon kannattimen sisällä niin, että toinen suuri kääntökiinnitysreikä (yksi ilman laakeria) on linjassa kallistusservon alumiinirenkaan kanssa.
  8. Kiinnitä U-pidike ruuveilla alumiinirenkaaseen U-pidikkeen toisella puolella.
  9. Kiristä U-kiinnikkeen toisella puolella yksi ruuvi laakerin läpi ja sen sisällä olevaan laatikon kiinnikkeeseen. Tämän pitäisi sallia U-pidikkeen pyöriä laatikkokannattimen ympäri myöhemmin, kun kallistus servoa käytetään.

Vaihe 8: Kattila- ja kallistuskokoonpanon asennus

Kattila- ja kallistuskokoonpanon asennus
Kattila- ja kallistuskokoonpanon asennus
Kattila- ja kallistuskokoonpanon asennus
Kattila- ja kallistuskokoonpanon asennus

Jäljellä oleva laatikon kiinnike voidaan ruuvata pieneksi puulevyromuksi, joka toimii kameran pohjana kuvan mukaisesti. Lopuksi pannun servo asennetaan jäljelle jääneeseen laatikkokiinnikkeeseen käyttämällä vähintään kahta mutteria ja ruuvia, joilla servo kiinnitetään kiinnikkeeseen - yksi kummallakin puolella.

Vaihe 9: Langana ja testaa pannu- ja kallistuskokoonpano

Kytke ja testaa pannun ja kallistuksen kokoonpano
Kytke ja testaa pannun ja kallistuksen kokoonpano

Servojen johdotus kaavion mukaan on nopeinta vain leikata alkuperäiset naarasliittimet servoista ja käyttää sitten naaraspuolisia DuPont -hyppypäitä signaalin ja maadoitusjohtojen kiinnittämiseksi Nano -nastoihin.

Nano ei saa riittävästi virtaa 5 V: n virtalähteestä, jotta servot saisivat virtaa USB: ltä, joten lisävirtaa suositellaan. Tämä voi olla mikä tahansa 4,8-7,2 voltin alueella. Esimerkiksi neljä AA -paristoa (sarjassa) toimivat hienosti. Penkki tai seinä-syylä on myös hyvä valinta.

Yksinkertainen esimerkki Arduino -koodista, joka on liitetty tänne nimellä PanTiltTest.ino, voidaan testata kahden servon ohjausta Arduino IDE: n sarjamonitorista. Aseta näytön siirtonopeus vastaamaan esimerkkikoodissa määritettyä 9600bps. Kun syötät kulma -arvot välillä 0 ja 180 astetta, servot sijoitetaan vastaavasti.

Lopuksi USB-kameramoduuli (tai muu anturi) voidaan asentaa Pan-Tilt-kokoonpanon U-kiinnikkeeseen käytettäväksi seurantasovelluksissa.

Vaihe 10: Kasvojen seuranta OpenCV: n avulla

Image
Image
Hakata planeettaa
Hakata planeettaa

Konenäön kasvojenseurantajärjestelmä voidaan toteuttaa yhdistämällä osajärjestelmiä lohkokaavion mukaisesti. Arduinoa koskeva SerialServoControl -luonnos löytyy seuraavasta Sparkfun -opetusohjelmasta ja siihen liittyvä esittely, jossa käytetään OpenCV: tä, Processingia, Arduinoa, USB -kameraa ja Pan/Tilt -kokoonpanoa ihmisen kasvojen seurantaan. Demo käyttää kahta servoa kameran sijoittamiseen uudelleen, jotta kasvot pysyvät videokehyksen keskellä silloinkin, kun käyttäjä liikkuu huoneessa. Esimerkiksi koodi C#: ssa, tutustu CamBot -videon GitHub -arkistoon.

Vaihe 11: hakata planeettaa

Jos olet nauttinut tästä opetusohjelmasta ja haluat, että tällainen elektroniikka- ja tietotekniikkaprojekti toimitetaan postilaatikkoosi joka kuukausi, liity meihin tilaamalla TÄSTÄ.

Ota yhteyttä ja jaa menestyksesi alla olevissa kommenteissa tai HackerBoxesin Facebook -sivulla. Kerro meille toki, jos sinulla on kysyttävää tai tarvitset apua missä tahansa. Kiitos, että olet osa HackerBoxesia. Pidä ehdotuksesi ja palautteesi tulossa. HackerBoxes ovat SINUN laatikoitasi. Tehdään jotain hienoa!

Suositeltava: