INHOUDSOPGAWE:

HackerBox 0024: Vision Quest: 11 stappe
HackerBox 0024: Vision Quest: 11 stappe

Video: HackerBox 0024: Vision Quest: 11 stappe

Video: HackerBox 0024: Vision Quest: 11 stappe
Video: Vlogmas 10: Hackerbox time 2024, Julie
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Hierdie maand eksperimenteer HackerBox Hackers met Computer Vision en Servo Motion Tracking. Hierdie instruksie bevat inligting vir die werk met HackerBox #0024, wat u hier kan afhaal terwyl voorraad hou. As u ook elke maand 'n HackerBox soos hierdie in u posbus wil ontvang, teken dan in op HackerBoxes.com en sluit aan by die revolusie!

Onderwerpe en leerdoelwitte vir HackerBox 0024:

  • Eksperimenteer met rekenaarvisie
  • Opstel van OpenCV (Computer Vision)
  • Die Arduino Nano programmeer uit die Arduino IDE
  • Beheer van servomotors met die Arduino Nano
  • Montering van 'n meganiese pan en kantel -samestelling
  • Pan- en kantelbeweging met 'n mikrobeheerder beheer
  • Voer gesigopsporing uit met behulp van OpenCV

HackerBoxes is die maandelikse subskripsiediens vir selfdoenelektronika en rekenaartegnologie. Ons is stokperdjies, vervaardigers en eksperimenteerders. Ons is die dromers van drome. HACK DIE PLANET!

Stap 1: HackerBox 0024: Inhoud van die boks

HackerBox 0024: Inhoud van die boks
HackerBox 0024: Inhoud van die boks
  • HackerBoxes #0024 Versamelbare verwysingskaart
  • Drie bracket pan en kantel vergadering
  • Twee MG996R -servo's met bykomstighede
  • Twee sirkelvormige servokoppels van aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digitale kamera met USB -kabel
  • Drie lense met universele klemhouer
  • Mediese inspeksie penlig
  • Dupont manlike/vroulike springers
  • MicroUSB -kabel
  • Eksklusiewe OpenCV -etiket
  • Eksklusiewe Dia de Muertos -sticker

'N Paar ander dinge wat nuttig sal wees:

  • Klein afval van houtbord vir kamerabasis
  • Soldeerbout, soldeersel en basiese soldeergereedskap
  • 'N Rekenaar om sagteware te gebruik

Die belangrikste is dat u 'n gevoel van avontuur, DIY -gees en nuuskierigheid nodig het. Hardcore DIY -elektronika is nie 'n triviale strewe nie, en ons maak dit nie vir u afwater nie. Die doel is vooruitgang, nie volmaaktheid nie. As u volhard en die avontuur geniet, kan u baie tevredenheid put uit die aanleer van nuwe tegnologie en hopelik dat sommige projekte werk. Ons stel voor dat u elke stap stadig neem, na die besonderhede let, en nooit aarsel om hulp te vra nie.

GESTELDE VRAE: Ons wil graag alle HackerBox -lede 'n baie groot guns vra. Neem 'n paar minute om die algemene vrae op die HackerBoxes -webwerf na te gaan voordat u met die ondersteuning skakel. Alhoewel ons natuurlik alle lede soveel as moontlik wil help, behels die meeste van ons ondersteunings -e -posse eenvoudige vrae wat baie duidelik in die algemene vrae beantwoord word. Dankie vir die begrip!

Stap 2: Rekenaarvisie

Rekenaarvisie
Rekenaarvisie

Rekenaarvisie is 'n interdissiplinêre veld wat handel oor hoe rekenaars hoë begrip van digitale beelde of video's verkry. Vanuit die perspektief van ingenieurswese wil rekenaarvisie take outomatiseer wat die menslike visuele stelsel kan doen. As 'n wetenskaplike dissipline handel rekenaarvisie oor die teorie agter kunsmatige stelsels wat inligting uit beelde haal. Die beelddata kan baie vorme aanneem, soos video-rye, aansigte van verskeie kameras of multi-dimensionele data van 'n mediese skandeerder. As 'n tegnologiese dissipline wil rekenaarvisie sy teorieë en modelle toepas vir die konstruksie van rekenaarvisie -stelsels. Subdomeine van rekenaarvisie sluit toneelrekonstruksie, opsporing van gebeurtenisse, video-opsporing, voorwerpherkenning, 3D-pose-skatting, leer, indeksering, bewegingsberaming en beeldherstel in.

Dit is interessant om daarop te let dat rekenaarvisie as die omgekeerde van rekenaargrafika beskou kan word.

Stap 3: Verwerking en OpenCV

Verwerking en OpenCV
Verwerking en OpenCV

Verwerking is 'n buigsame sagteware -sketsboek en 'n taal om te leer hoe om te kodeer binne die konteks van die visuele kunste. Verwerking het sagtewareletterdheid binne die visuele kunste en visuele geletterdheid binne tegnologie bevorder. Daar is tienduisende studente, kunstenaars, ontwerpers, navorsers en stokperdjies wat verwerking vir leer en prototipering gebruik.

OpenCV (Open Source Computer Vision Library) is 'n open source rekenaarvisie en masjienleer sagteware biblioteek. OpenCV is gebou om 'n gemeenskaplike infrastruktuur vir rekenaarvisie -toepassings te bied en om die gebruik van masjienpersepsie in kommersiële produkte te versnel. Die OpenCV-biblioteek het meer as 2500 geoptimaliseerde algoritmes, wat 'n omvattende stel klassieke en nuutste rekenaarvisie en masjienleer-algoritmes insluit. Hierdie algoritmes kan gebruik word om gesigte op te spoor en te herken, voorwerpe te identifiseer, menslike optrede in video's te klassifiseer, kamerabewegings op te spoor, bewegende voorwerpe op te spoor, ensovoorts.

Installeer OpenCV in Processing in die menu File> Voorbeelde deur 'Voorbeelde by te voeg' en dan onder die blad Libraries die video- en OpenCV -biblioteke te installeer. Maak die LiveCamTest -voorbeeld oop vir basiese gesigsporing. Kyk hier na 'n paar ander OpenCV vir verwerkingsvoorbeelde.

Meer hulpbronne:

Aan die gang met Computer Vision is 'n boekprojek wat 'n maklike toegangspunt bied vir kreatiewe eksperimentering met rekenaarvisie. Dit stel die kode en konsepte bekend wat nodig is om rekenaarvisie -projekte te bou.

Computer Vision programmeer met Python is 'n O'Reilly -boek oor PCV, 'n open source Python -module vir rekenaarvisie.

Leer OpenCV

Rekenaarvisie: algoritmes en toepassings

Bemeester OpenCV

Stanford Course CS231n Konvolutionele neurale netwerke vir visuele herkenning (16 video's)

Chris Urmson TED Talk Hoe 'n motor sonder bestuurder die pad sien

Stap 4: Arduino Nano Microcontroller -platform

Arduino Nano -mikrobeheerderplatform
Arduino Nano -mikrobeheerderplatform

Ons kan enige gemeenskaplike mikrontroller -platform gebruik om servo's in ons pan- en kantelkamersteun te beheer. Die Arduino Nano is 'n oppervlakkige, broodbordvriendelike, geminiaturiseerde Arduino-bord met geïntegreerde USB. Dit is ongelooflik volledig en maklik om te hack.

Kenmerke:

  • Mikrokontroleur: Atmel ATmega328P
  • Spanning: 5V
  • Digitale I/O -penne: 14 (6 PWM)
  • Analoge invoerpenne: 8
  • Gelykstroom per I/O -pen: 40 mA
  • Flitsgeheue: 32 KB (2 KB vir selflaaiprogram)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Kloksnelheid: 16 MHz
  • Afmetings: 17 x 43 mm

Hierdie spesifieke variant van die Arduino Nano is die swart Robotdyn -ontwerp. Die koppelvlak is deur 'n ingeboude MicroUSB-poort wat versoenbaar is met dieselfde MicroUSB-kabels wat met baie selfone en tablette gebruik word.

Arduino Nanos beskik oor 'n ingeboude USB/Serial bridge chip. Op hierdie spesifieke variant is die brugskyfie die CH340G. Let op dat daar verskillende ander tipes USB/Serial -brugskyfies op die verskillende soorte Arduino -borde gebruik word. Met hierdie skyfies kan u die USB -poort van u rekenaar kommunikeer met die seriële koppelvlak op die verwerkerskyf van die Arduino.

'N Bedryfstelsel van 'n rekenaar vereis dat 'n toesteldrywer met die USB/seriële skyfie kommunikeer. Die bestuurder laat die IDE toe om met die Arduino -bord te kommunikeer. Die spesifieke toesteldrywer wat benodig word, hang af van beide die bedryfstelselweergawe en ook die tipe USB/seriële skyfie. Vir die CH340 USB/Serial -skyfies is daar bestuurders beskikbaar vir baie bedryfstelsels (UNIX, Mac OS X of Windows). Die vervaardiger van die CH340 verskaf die bestuurders hier.

As u die Arduino Nano vir die eerste keer in 'n USB -poort van u rekenaar aansluit, moet die groen kraglig brand en kort daarna moet die blou LED stadig begin flikker. Dit gebeur omdat die Nano vooraf gelaai is met die BLINK-program, wat op die splinternuwe Arduino Nano werk.

Stap 5: Arduino Integrated Development Environment (IDE)

Arduino Integrated Development Environment (IDE)
Arduino Integrated Development Environment (IDE)

As u nog nie die Arduino IDE geïnstalleer het nie, kan u dit aflaai van Arduino.cc

As u meer inleidende inligting wil hê vir die werk in die Arduino -ekosisteem, stel ons voor dat u die instruksies vir die HackerBoxes Starter Workshop raadpleeg.

Koppel die Nano aan die MicroUSB -kabel en die ander kant van die kabel in 'n USB -poort op die rekenaar, begin die Arduino IDE -sagteware, kies die toepaslike USB -poort in die IDE onder gereedskap> poort (waarskynlik 'n naam met 'wchusb' daarin)). Kies ook 'Arduino Nano' in die IDE onder gereedskap> bord.

Laai laastens 'n stuk voorbeeldkode op:

Lêer-> Voorbeelde-> Basies-> Knipper

Dit is eintlik die kode wat vooraf op die Nano gelaai is en wat tans moet werk om die blou LED stadig te knip. Gevolglik sal niks verander as ons hierdie voorbeeldkode laai nie. Laat ons eerder die kode 'n bietjie verander.

As u mooi kyk, kan u sien dat die program die LED aanskakel, 1000 millisekondes (een sekonde) wag, die LED afskakel, nog 'n sekonde wag en dan alles weer doen - vir ewig.

Verander die kode deur beide die "vertraging (1000)" stellings te verander na "vertraging (100)". Hierdie verandering sal daartoe lei dat die LED tien keer vinniger knip, nie waar nie?

Laai die gewysigde kode in die Nano deur op die UPLOAD -knoppie (die pyltjie -ikoon) net bokant u gewysigde kode te klik. Kyk onder die kode vir die statusinligting: "saamstel" en dan "oplaai". Uiteindelik moet die IDE 'Oplaai voltooi' aandui en u LED moet vinniger flikker.

Indien wel, baie geluk! U het pas u eerste stuk ingebedde kode gekap.

As u vinnige flitsweergawe gelaai en aan die gang is, kyk dan of u die kode weer kan verander om die LED twee keer vinnig te laat knip en dan 'n paar sekondes te wag voordat u dit herhaal? Probeer dit! Hoe gaan dit met ander patrone? As u eers daarin geslaag het om die gewenste uitkoms te visualiseer, te kodeer en te sien hoe dit volgens plan werk, het u 'n enorme stap geneem om 'n bekwame hardeware -hacker te word.

Stap 6: Servomotors

Servomotors
Servomotors

Servomotore word oor die algemeen beheer deur 'n reeks herhalende elektriese pulse waar die breedte van die pulse die posisie van die servo aandui. Die pulswydte gemoduleerde (PWM) beheersignaal word dikwels gegenereer deur 'n gemeenskaplike mikrobeheerder soos 'n Arduino.

Klein stokperdjie-servo's, soos die MG996R, word verbind deur 'n standaard drie-draads aansluiting: twee drade vir 'n GS-kragtoevoer en een draad om die stuurpulse te dra. MG996R-servo's het 'n spanning van 4.8-7.2 VDC.

Stap 7: Monteer die pan- en kantelmeganisme

Montering van die pan- en kantelmeganisme
Montering van die pan- en kantelmeganisme
  1. Trek albei die MG996R -servo's uit hul tasse en sit die bykomstige bykomstighede vir eers opsy.
  2. Bevestig 'n sirkelvormige servokoppelaar van aluminium aan elke servo. Let daarop dat die koppelaars in aparte sakke van die servo's kom. Die koppelaar pas baie styf. Druk die koppelaar aan die einde van die servo -uitgang en druk dan 'n skroef in die middelste gat. Draai die draad vas om die koppelaar op die servo -uitgang te trek.
  3. Let daarop dat daar drie hakies vir die pan-kantel-eenheid is-twee bokshakies en een U-hakie.
  4. Monteer een van die boksbeugels op die aluminiumsirkel vir een van die servo's. Ons sal hierdie servo die panservo noem. Rig die boksbeugel met die middelste muur teen die aluminiumsirkel sodat die ander twee mure van die boksbeugel van die panservo af wegkyk. Gebruik die middelste gate op die middelste muur van die boksbeugel. Hierdie rangskikking moet die pan servo toelaat om die aangehegte boksbeugel om te draai sodra dit geaktiveer is.
  5. Plaas die ander servo (kantel servo) in die boksbeugel wat aan die aluminium sirkel van die panservo geheg is. Gebruik ten minste twee moere en boute om die kantelservo vas te maak - een aan elke kant.
  6. Hou die U-bracket vas en steek die koperlager aan die binnekant van die U deur een van die groot draaipunte.
  7. Plaas die U-houer met die laer op die kantelservo wat binne-in die houer is, sodat die ander groot draaipunt (die sonder die laer) in lyn is met die aluminiumsirkel op die kantelservo.
  8. Bevestig die U-bracket met die skroewe aan die aluminium sirkel aan die een kant van die U-bracket.
  9. Draai aan die ander kant van die U-bracket 'n enkele skroef deur die laer en in die klein gaatjie in die boksbeugel binne-in. Dit moet die U-bracket toelaat om later om die boksbeugel te draai wanneer die kantelservo geaktiveer word.

Stap 8: Monteer die pan en kantel -eenheid

Montering van die pan en kantel -eenheid
Montering van die pan en kantel -eenheid
Montering van die pan en kantel -eenheid
Montering van die pan en kantel -eenheid

Die oorblywende boksbeugel kan vasgeskroef word in 'n klein stuk houtbord om as kamerabasis te dien, soos in die prentjie getoon. Laastens word die panservo binne die oorblywende boksbeugel gemonteer met minstens twee moere en boute om die servo aan die houer vas te maak - een aan elke kant.

Stap 9: Bedraad en toets die pan- en kantelmontage

Bedraad en toets die pan- en kantelmontage
Bedraad en toets die pan- en kantelmontage

Om die servo's volgens die skema te bedek, is dit die vinnigste om die oorspronklike vroulike verbindings van die servo's af te sny en dan 'n paar DuPont -eindpunte te gebruik om die sein en grondlyne aan die Nano -penne vas te maak.

Die Nano het nie genoeg stroom op die 5V -toevoer om die servo's van USB af te voer nie, dus word 'n ekstra toevoer aanbeveel. Dit kan enigiets in die 4.8-7.2 Volt-reeks wees. Byvoorbeeld, vier AA -batterye (in reekse) werk goed. 'N Bank of muurvrat is ook 'n goeie keuse.

Die eenvoudige voorbeeld Arduino -kode wat hier as PanTiltTest.ino aangeheg is, kan gebruik word om die beheer van die twee servo's vanaf die seriële monitor op die Arduino IDE te toets. Stel die baud -tempo van die monitor in ooreenstemming met die 9600bps wat in die voorbeeldkode gestel is. Deur die hoekwaardes tussen 0 en 180 grade in te voer, sal die servo's dienooreenkomstig geplaas word.

Uiteindelik kan die USB-kameramodule (of ander sensor) aan die U-bracket van die Pan-Tilt Assembly gemonteer word vir gebruik by die opsporing van toepassings.

Stap 10: Gesigsopsporing met OpenCV

Image
Image
Hack die planeet
Hack die planeet

'N Masjienvisie-opsporingstelsel kan geïmplementeer word deur substelsels te kombineer soos in die blokdiagram getoon. Die SerialServoControl -skets vir Arduino kan gevind word in die volgende Sparkfun -tutoriaal, tesame met 'n verwante demonstrasie met behulp van OpenCV, Processing, 'n Arduino, 'n USB -kamera en 'n Pan/Tilt Assembly om 'n menslike gesig op te spoor. Die demo gebruik twee servo's om die kamera te herposisioneer om die gesig in die videorame gesentreer te hou, selfs as die gebruiker in die kamer beweeg. Kyk byvoorbeeld na kode in C#na die GitHub -bewaarplek vir die CamBot -video.

Stap 11: Hack the Planet

As u hierdie Instrucable geniet het en u graag elke maand 'n boks elektroniese en rekenaartegnologiese projekte soos hierdie by u posbus wil laat aflewer, kan u hierby inskryf.

Reik uit en deel u sukses in die kommentaar hieronder of op die HackerBoxes Facebook -bladsy. Laat weet ons beslis as u vrae het of hulp nodig het met iets. Dankie dat u deel was van HackerBoxes. Hou asseblief u voorstelle en terugvoer. HackerBoxes is JOU bokse. Kom ons maak iets groots!

Aanbeveel: