Cuprins:

HackerBox 0024: Vision Quest: 11 pași
HackerBox 0024: Vision Quest: 11 pași

Video: HackerBox 0024: Vision Quest: 11 pași

Video: HackerBox 0024: Vision Quest: 11 pași
Video: HackerBox #0024: Vision Quest 2024, Iulie
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Luna aceasta, hackerii HackerBox experimentează viziunea computerizată și urmărirea mișcării servo. Acest Instructable conține informații pentru lucrul cu HackerBox # 0024, pe care le puteți ridica aici până la epuizarea stocurilor. De asemenea, dacă doriți să primiți un HackerBox ca acesta chiar în cutia poștală în fiecare lună, vă rugăm să vă abonați la HackerBoxes.com și să vă alăturați revoluției!

Subiecte și obiective de învățare pentru HackerBox 0024:

  • Experimentarea viziunii computerizate
  • Configurarea OpenCV (Computer Vision)
  • Programarea Arduino Nano din Arduino IDE
  • Controlul servomotorelor cu Arduino Nano
  • Asamblarea unui ansamblu mecanic Pan și Tilt
  • Controlul mișcării Pan și Tilt cu un microcontroler
  • Efectuarea urmăririi feței utilizând OpenCV

HackerBoxes este serviciul de cutie de abonament lunar pentru electronice DIY și tehnologie computerizată. Suntem pasionați, creatori și experimentatori. Suntem visătorii viselor. HACK PLANETA!

Pasul 1: HackerBox 0024: Conținutul cutiei

HackerBox 0024: Conținutul cutiei
HackerBox 0024: Conținutul cutiei
  • HackerBoxes # 0024 Card de referință de colecționat
  • Trei ansambluri de pană și înclinare
  • Două servere MG996R cu accesorii
  • Două servo cuplaje circulare din aluminiu
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Asamblare cameră digitală cu cablu USB
  • Trei lentile cu montare cu clip universal
  • Lumina stiloului de inspecție medicală
  • Jumperi Dupont bărbați / femei
  • Cablu MicroUSB
  • Decalcomanie OpenCV exclusivă
  • Decalcomanie exclusivă Dia de Muertos

Câteva alte lucruri care vă vor fi de ajutor:

  • Resturi mici de scândură de lemn pentru baza camerei
  • Instrument de lipit, lipit și instrumente de lipit de bază
  • Computer pentru rularea instrumentelor software

Cel mai important, veți avea nevoie de un sentiment de aventură, de spiritul DIY și de curiozitatea hackerilor. Electronica DIY hardcore nu este o urmărire banală și nu o umezim pentru dvs. Scopul este progresul, nu perfecțiunea. Când persistați și vă bucurați de aventură, o mulțime de satisfacții pot fi obținute din învățarea de noi tehnologii și, sperăm, că unele proiecte funcționează. Vă sugerăm să faceți fiecare pas încet, să ne gândim la detalii și să nu ezitați niciodată să cereți ajutor.

ÎNTREBĂRI FRECVENTE: Ne place să le cerem tuturor membrilor HackerBox o mare favoare. Vă rugăm să luați câteva minute pentru a examina întrebările frecvente de pe site-ul HackerBoxes înainte de a contacta asistența. Deși, în mod evident, dorim să ajutăm toți membrii atât cât este necesar, majoritatea e-mailurilor noastre de asistență implică întrebări simple, care sunt foarte clar abordate în FAQ. Multumesc pentru intelegere!

Pasul 2: Viziunea computerizată

Viziunea computerizată
Viziunea computerizată

Viziunea computerizată este un câmp interdisciplinar care se ocupă de modul în care computerele obțin înțelegere la nivel înalt din imagini digitale sau videoclipuri. Din perspectiva ingineriei, viziunea computerizată urmărește automatizarea sarcinilor pe care sistemul vizual uman le poate face. Ca disciplină științifică, viziunea pe computer este preocupată de teoria din spatele sistemelor artificiale care extrag informații din imagini. Datele imaginii pot lua mai multe forme, cum ar fi secvențe video, vizualizări de la mai multe camere sau date multidimensionale de la un scaner medical. Ca disciplină tehnologică, viziunea computerizată încearcă să-și aplice teoriile și modelele pentru construcția sistemelor de viziune computerizată. Subdomeniile viziunii pe computer includ reconstrucția scenei, detectarea evenimentelor, urmărirea video, recunoașterea obiectelor, estimarea poziției 3D, învățarea, indexarea, estimarea mișcării și restaurarea imaginii.

Este interesant de observat că viziunea pe computer poate fi considerată inversa graficii pe computer.

Pasul 3: Procesare și OpenCV

Procesare și OpenCV
Procesare și OpenCV

Procesarea este un caiet de schițe flexibil al software-ului și un limbaj pentru învățarea modului de codificare în contextul artelor vizuale. Prelucrarea a promovat alfabetizarea software în cadrul artelor vizuale și alfabetizarea vizuală în cadrul tehnologiei. Există zeci de mii de studenți, artiști, designeri, cercetători și pasionați care folosesc Procesarea pentru învățare și prototipare.

OpenCV (Open Source Computer Vision Library) este o bibliotecă software open source de viziune computerizată și învățare automată. OpenCV a fost construit pentru a oferi o infrastructură comună pentru aplicațiile de viziune computerizată și pentru a accelera utilizarea percepției mașinilor în produsele comerciale. Biblioteca OpenCV are mai mult de 2500 de algoritmi optimizați, care includ un set cuprinzător de algoritmi de viziune computerizată și de învățare automată atât clasici, cât și de ultimă generație. Acești algoritmi pot fi folosiți pentru detectarea și recunoașterea fețelor, identificarea obiectelor, clasificarea acțiunilor umane în videoclipuri, urmărirea mișcărilor camerei, urmărirea obiectelor în mișcare și așa mai departe.

Instalați OpenCV în Procesare din meniul Fișier> Exemple selectând „Adăugați exemple” și apoi în fila Biblioteci instalând atât bibliotecile Video, cât și OpenCV. Deschideți exemplul LiveCamTest pentru urmărirea facială de bază. Consultați câteva alte exemple de procesare OpenCV aici.

Mai multe resurse:

Noțiuni introductive despre computer Vision este un proiect de carte care oferă un punct de intrare ușor pentru experimentarea creativă cu viziunea computerizată. Acesta introduce codul și conceptele necesare pentru a construi proiecte de viziune pe computer.

Programarea viziunii computerizate cu Python este o carte O'Reilly despre PCV, un modul Python open source pentru viziunea computerizată.

Învățarea OpenCV

Viziune pe computer: algoritmi și aplicații

Stăpânirea OpenCV

Curs Stanford CS231n Rețele neuronale convoluționale pentru recunoaștere vizuală (16 videoclipuri)

Chris Urmson TED Talk Cum vede o mașină fără șofer drumul

Pasul 4: Platforma de microcontroler Arduino Nano

Platforma de microcontroler Arduino Nano
Platforma de microcontroler Arduino Nano

Putem utiliza orice platformă comună de microcontrolere pentru controlul servo-urilor în montarea camerei noastre panoramice și înclinate. Arduino Nano este o placă Arduino miniaturizată, montată pe suprafață, compatibilă cu placa, cu USB integrat. Este uimitor de complet dotat și ușor de piratat.

Caracteristici:

  • Microcontroler: Atmel ATmega328P
  • Tensiune: 5V
  • Pinii I / O digitale: 14 (6 PWM)
  • Pinii de intrare analogici: 8
  • Curent continuu per pin I / O: 40 mA
  • Memorie Flash: 32 KB (2 KB pentru bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Viteza de ceas: 16 MHz
  • Dimensiuni: 17mm x 43mm

Această variantă specială a Arduino Nano este designul Robotdyn negru. Interfața se face printr-un port MicroUSB integrat, care este compatibil cu aceleași cabluri MicroUSB utilizate cu multe telefoane mobile și tablete.

Arduino Nanos are un cip bridge USB / Serial încorporat. Pe această variantă specială, cipul bridge este CH340G. Rețineți că există diferite alte tipuri de cipuri USB / Serial bridge utilizate pe diferitele tipuri de plăci Arduino. Aceste cipuri vă permit portul USB al computerului să comunice cu interfața serială de pe cipul procesorului Arduino.

Sistemul de operare al unui computer necesită un driver de dispozitiv pentru a comunica cu cipul USB / Serial. Driverul permite IDE-ului să comunice cu placa Arduino. Driverul de dispozitiv specific care este necesar depinde atât de versiunea sistemului de operare, cât și de tipul de cip USB / Serial. Pentru cipurile CH340 USB / Serial, există drivere disponibile pentru multe sisteme de operare (UNIX, Mac OS X sau Windows). Producătorul CH340 furnizează acele drivere aici.

Când conectați prima dată Arduino Nano la un port USB al computerului, indicatorul luminos verde ar trebui să se aprindă și la scurt timp după ce LED-ul albastru ar trebui să înceapă să clipească încet. Acest lucru se întâmplă deoarece Nano este preîncărcat cu programul BLINK, care rulează pe noul Arduino Nano.

Pasul 5: Mediul de dezvoltare integrat Arduino (IDE)

Mediul de dezvoltare integrat Arduino (IDE)
Mediul de dezvoltare integrat Arduino (IDE)

Dacă nu aveți încă ID-ul Arduino instalat, îl puteți descărca de pe Arduino.cc

Dacă doriți informații introductive suplimentare pentru lucrul în ecosistemul Arduino, vă sugerăm să consultați instrucțiunile pentru HackerBoxes Starter Workshop.

Conectați Nano la cablul MicroUSB și celălalt capăt al cablului într-un port USB de pe computer, lansați software-ul Arduino IDE, selectați portul USB corespunzător în IDE sub instrumente> port (probabil un nume cu „wchusb” în el). De asemenea, selectați „Arduino Nano” în IDE sub instrumente> bord.

În cele din urmă, încărcați o bucată de exemplu de cod:

Fișier-> Exemple-> Noțiuni de bază-> Clipește

Acesta este de fapt codul care a fost preîncărcat pe Nano și ar trebui să ruleze chiar acum pentru a clipi încet LED-ul albastru. În consecință, dacă încărcăm acest exemplu de cod, nimic nu se va schimba. În schimb, să modificăm puțin codul.

Privind cu atenție, puteți vedea că programul aprinde LED-ul, așteaptă 1000 de milisecunde (o secundă), stinge LED-ul, așteaptă încă o secundă și apoi face totul din nou - pentru totdeauna.

Modificați codul schimbând ambele instrucțiuni „delay (1000)” în „delay (100)”. Această modificare va face ca LED-ul să clipească de zece ori mai repede, nu?

Să încărcăm codul modificat în Nano făcând clic pe butonul UPLOAD (pictograma săgeată) chiar deasupra codului modificat. Urmăriți mai jos codul pentru informațiile despre stare: „compilare” și apoi „încărcare”. În cele din urmă, IDE ar trebui să indice „Încărcare finalizată”, iar LED-ul dvs. ar trebui să clipească mai repede.

Dacă da, felicitări! Tocmai ați spart prima bucată de cod încorporat.

Odată ce versiunea dvs. de clipire rapidă este încărcată și rulează, de ce să nu vedeți dacă puteți schimba codul din nou pentru a face LED-ul să clipească rapid de două ori și apoi să așteptați câteva secunde înainte de a repeta? Incearca! Ce zici de alte tipare? Odată ce ați reușit să vizualizați rezultatul dorit, să îl codificați și să-l observați pentru a funcționa conform planificării, ați făcut un pas enorm către a deveni un hacker hardware competent.

Pasul 6: Servomotoare

Servomotoare
Servomotoare

Servomotorele sunt, în general, controlate de o serie de impulsuri electrice repetate în care lățimea impulsurilor indică poziția servo. Semnalul de control modulat pe lățimea impulsului (PWM) este adesea generat de un microcontroler comun, cum ar fi un Arduino.

Servomotoarele mici, cum ar fi MG996R, sunt conectate printr-o conexiune standard cu trei fire: două fire pentru o sursă de curent continuu și un fir pentru transportarea impulsurilor de control. Servoamele MG996R au o tensiune de lucru de 4,8-7,2 VDC.

Pasul 7: Asamblarea mecanismului Pan și Tilt

Asamblarea mecanismului Pan și Tilt
Asamblarea mecanismului Pan și Tilt
  1. Scoateți ambele servere MG996R din genți și puneți deoparte accesoriile incluse pentru moment.
  2. Atașați un servo cuplaj circular din aluminiu la fiecare servo. Rețineți că cuplajele vin în pungi separate de servomotoare. Cuplajul se potrivește foarte bine. Începeți prin apăsarea cuplajului pe capătul ieșirii servo și apoi filetați un șurub în orificiul central. Strângeți firul pentru a trage cuplajul pe ieșirea servo.
  3. Rețineți că există trei suporturi pentru ansamblul pan-tilt - două suporturi pentru cutie și un suport pentru U.
  4. Montați unul dintre suporturile cutiei pe cercul de aluminiu pentru unul dintre servome. Vom numi acest servo pan servo. Orientați suportul pentru cutie cu peretele său central pe cercul de aluminiu, astfel încât ceilalți doi pereți ai suportului pentru cutie să fie îndepărtați de servomotorul. Utilizați găurile centrale de pe peretele central al suportului cutiei. Acest aranjament ar trebui să permită servomotorului de rotire să rotească suportul atașat odată ce este acționat.
  5. Poziționați celălalt servo (servo de înclinare) în consola de fixare care este atașată la cercul de aluminiu al servo-pan. Folosiți cel puțin două piulițe și șuruburi pentru a fixa servo de înclinare - unul pe fiecare parte.
  6. Ținând consola U, introduceți „rulmentul” din alamă din interiorul U printr-unul din orificiile mari de montare a pivotului.
  7. Așezați suportul U cu rulmentul pe servo-înclinare care se află în interiorul suportului cutiei astfel încât cealaltă gaură mare de montare a pivotului (cea fără rulment) să se alinieze cu cercul de aluminiu de pe servo-înclinare.
  8. Folosiți șuruburi pentru a fixa suportul U pe cercul de aluminiu de pe o parte a suportului U.
  9. Pe cealaltă parte a suportului în U, strângeți un singur șurub prin rulment și în orificiul mic din suportul pentru cutie din interior. Acest lucru ar trebui să permită suportului U să se rotească mai târziu în jurul suportului cutiei, atunci când este acționat servo de înclinare.

Pasul 8: Montarea ansamblului Pan și Tilt

Montarea ansamblului Pan și Tilt
Montarea ansamblului Pan și Tilt
Montarea ansamblului Pan și Tilt
Montarea ansamblului Pan și Tilt

Suportul de cutie rămas poate fi înșurubat pe o bucată mică de scândură de lemn pentru a servi ca bază a camerei, așa cum se arată în imagine. În cele din urmă, servo-panoul este montat în interiorul acelui suport-cutie rămas, folosind cel puțin două piulițe și șuruburi pentru a fixa servo-ul pe suport - unul pe fiecare parte.

Pasul 9: conectați și testați ansamblul Pan și Tilt

Conectați și testați ansamblul Pan și Tilt
Conectați și testați ansamblul Pan și Tilt

Pentru a conecta servomotoarele conform schemei, este cel mai rapid să tăiați pur și simplu conectorii feminini originali din servomotoare și apoi să folosiți niște capete jumper DuPont pentru a obține semnalul și liniile de masă atașate pinilor Nano.

Nano nu are suficient curent pe sursa de 5V pentru a alimenta servo-urile de pe USB, deci se recomandă o alimentare suplimentară. Acesta poate fi orice în intervalul 4,8-7,2 volți. De exemplu, patru baterii AA (în serie) vor funcționa frumos. O sursă de bancă sau verucă de perete este, de asemenea, o alegere bună.

Exemplul simplu de cod Arduino atașat aici ca PanTiltTest.ino poate fi utilizat pentru a testa controlul celor două servos de pe monitorul serial de pe IDE-ul Arduino. Setați rata de transmisie a monitorului pentru a se potrivi cu 9600bps setată în codul de exemplu. Introducerea valorilor unghiului între 0 și 180 de grade va poziționa servo-urile în consecință.

În cele din urmă, modulul USB pentru cameră (sau alt senzor) poate fi montat pe suportul U al ansamblului Pan-Tilt pentru utilizare în aplicații de urmărire.

Pasul 10: urmărirea feței cu OpenCV

Image
Image
Hackează Planeta
Hackează Planeta

Un sistem de urmărire a feței cu viziune automată poate fi implementat prin combinarea subsistemelor așa cum se arată în diagrama bloc. Schița SerialServoControl pentru Arduino poate fi găsită în următorul tutorial Sparkfun împreună cu o demonstrație aferentă folosind OpenCV, Processing, un Arduino, o cameră USB și un ansamblu Pan / Tilt pentru a urmări o față umană. Demo-ul folosește două servouri pentru a repoziționa camera, pentru a menține fața centrată în cadrul video chiar și în timp ce utilizatorul se deplasează în cameră. De exemplu, cod în C #, consultați depozitul GitHub pentru videoclipul CamBot.

Pasul 11: Hack planeta

Dacă v-a plăcut acest Instrucable și doriți să primiți o cutie de proiecte electronice și de tehnologie computerizată ca aceasta direct în cutia poștală în fiecare lună, vă rugăm să vă înscrieți prin ABONARE AICI.

Intindeți-vă și împărtășiți-vă succesul în comentariile de mai jos sau pe pagina de Facebook HackerBoxes. Cu siguranță, anunțați-ne dacă aveți întrebări sau aveți nevoie de ajutor cu ceva. Vă mulțumim că faceți parte din HackerBoxes. Vă rugăm să păstrați sugestiile și feedback-ul dvs. HackerBox-urile sunt cutiile TALE. Să facem ceva grozav!

Recomandat: