Innholdsfortegnelse:

HackerBox 0024: Vision Quest: 11 trinn
HackerBox 0024: Vision Quest: 11 trinn

Video: HackerBox 0024: Vision Quest: 11 trinn

Video: HackerBox 0024: Vision Quest: 11 trinn
Video: HackerBox #0024: Vision Quest 2024, November
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Denne måneden eksperimenterer HackerBox Hackers med Computer Vision og Servo Motion Tracking. Denne instruksen inneholder informasjon om hvordan du arbeider med HackerBox #0024, som du kan hente her så lenge lageret rekker. Hvis du også ønsker å motta en HackerBox som denne rett i postkassen din hver måned, kan du abonnere på HackerBoxes.com og bli med i revolusjonen!

Emner og læringsmål for HackerBox 0024:

  • Eksperimenterer med datasyn
  • Sette opp OpenCV (Computer Vision)
  • Programmering av Arduino Nano fra Arduino IDE
  • Styring av servomotorer med Arduino Nano
  • Montering av en mekanisk panne og vippemontasje
  • Kontroll av pan og tilt -bevegelse med en mikrokontroller
  • Utføre ansiktssporing ved hjelp av OpenCV

HackerBoxes er den månedlige abonnementskassen for DIY -elektronikk og datateknologi. Vi er hobbyfolk, produsenter og eksperimenter. Vi er drømmerne om drømmer. HAKK PLANETEN!

Trinn 1: HackerBox 0024: Innhold i esken

HackerBox 0024: Innhold i esken
HackerBox 0024: Innhold i esken
  • HackerBoxes #0024 Samlingsbart referansekort
  • Tre brakettpanne og vippemontasje
  • To MG996R -servoer med tilbehør
  • To sirkulære servokoblinger i aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digitalkamera med USB -kabel
  • Tre linser med universalfeste
  • Medisinsk kontrollpennelys
  • Dupont Mannlige/kvinnelige hoppere
  • MicroUSB -kabel
  • Eksklusivt OpenCV -dekal
  • Eksklusivt Dia de Muertos -dekal

Noen andre ting som vil være nyttige:

  • Lite trebrettskrap for kamerabase
  • Loddejern, lodde og grunnleggende loddeverktøy
  • Datamaskin for kjøring av programvareverktøy

Viktigst av alt, trenger du en følelse av eventyr, DIY -ånd og nysgjerrighet på hackere. Hardcore DIY elektronikk er ikke en triviell jakt, og vi vanner det ikke ned for deg. Målet er fremgang, ikke perfeksjon. Når du fortsetter og liker eventyret, kan du få mye tilfredshet ved å lære ny teknologi og forhåpentligvis få noen prosjekter til å fungere. Vi foreslår at du tar hvert trinn sakte, tenker på detaljene og aldri nøler med å be om hjelp.

STILTE SPØRSMÅL: Vi ber alle HackerBox -medlemmer om en veldig stor tjeneste. Bruk noen minutter på å gå gjennom vanlige spørsmål på HackerBoxes -nettstedet før du kontakter brukerstøtten. Selv om vi åpenbart ønsker å hjelpe alle medlemmer så mye som nødvendig, inneholder de fleste av våre e -postmeldinger enkle spørsmål som er veldig tydelig behandlet i vanlige spørsmål. Takk for forståelsen!

Trinn 2: Datasyn

Datamaskin syn
Datamaskin syn

Datasyn er et tverrfaglig felt som omhandler hvordan datamaskiner oppnår forståelse på høyt nivå fra digitale bilder eller videoer. Fra ingeniørperspektivet søker datasyn å automatisere oppgaver som det menneskelige visuelle systemet kan utføre. Som en vitenskapelig disiplin er datasyn opptatt av teorien bak kunstige systemer som trekker ut informasjon fra bilder. Bildedataene kan ha mange former, for eksempel videosekvenser, visninger fra flere kameraer eller flerdimensjonale data fra en medisinsk skanner. Som en teknologisk disiplin søker datasyn å anvende teorier og modeller for konstruksjon av datasyn. Underdomener for datasyn inkluderer scenerekonstruksjon, hendelsesdeteksjon, videosporing, gjenkjenning av gjenstander, estimering av 3D-positur, læring, indeksering, bevegelsesestimering og gjenoppretting av bilder.

Det er interessant å merke seg at datasyn kan betraktes som invers av datagrafikk.

Trinn 3: Behandler og OpenCV

Behandling og OpenCV
Behandling og OpenCV

Processing er en fleksibel programvare skissebok og et språk for å lære å kode i konteksten av billedkunsten. Prosessering har fremmet programvarekunnskap innen billedkunst og visuell leseferdighet innen teknologi. Det er titusenvis av studenter, kunstnere, designere, forskere og hobbyister som bruker prosessering til læring og prototyper.

OpenCV (Open Source Computer Vision Library) er et bibliotek med åpen kildekode for datavisning og maskinlæring. OpenCV ble bygget for å gi en felles infrastruktur for applikasjoner for datasyn og for å akselerere bruken av maskinoppfatning i kommersielle produkter. OpenCV-biblioteket har mer enn 2500 optimaliserte algoritmer, som inkluderer et omfattende sett med både klassiske og toppmoderne datasyn og algoritmer for maskinlæring. Disse algoritmene kan brukes til å oppdage og gjenkjenne ansikter, identifisere objekter, klassifisere menneskelige handlinger i videoer, spore kamerabevegelser, spore objekter i bevegelse og så videre.

Installer OpenCV i Processing fra Fil> Eksempler -menyen ved å velge "Legg til eksempler" og deretter under fanen Libraries og installere både video- og OpenCV -bibliotekene. Åpne LiveCamTest -eksempelet for grunnleggende ansiktssporing. Ta en titt på noen andre OpenCV -eksempler for behandling her.

Flere ressurser:

Komme i gang med Computer Vision er et bokprosjekt som gir et enkelt inngangspunkt for kreative eksperimenter med datasyn. Den introduserer koden og konseptene som er nødvendige for å bygge datasynsprosjekter.

Programmering Computer Vision with Python er en O'Reilly -bok om PCV, en åpen kildekode -Python -modul for datasyn.

Lære OpenCV

Datasyn: Algoritmer og applikasjoner

Beherske OpenCV

Stanford Course CS231n konvolusjonelle nevrale nettverk for visuell gjenkjenning (16 videoer)

Chris Urmson TED Talk Hvordan en førerløs bil ser veien

Trinn 4: Arduino Nano mikrokontrollerplattform

Arduino Nano mikrokontroller plattform
Arduino Nano mikrokontroller plattform

Vi kan bruke en hvilken som helst vanlig mikrontroller -plattform for å kontrollere servoer i pan- og tilt -kamerafeste. Arduino Nano er et overflatemontert, brødbrettvennlig, miniatyrisert Arduino-bord med integrert USB. Det er utrolig fullt utstyrt og lett å hacke.

Funksjoner:

  • Mikrokontroller: Atmel ATmega328P
  • Spenning: 5V
  • Digitale I/O -pinner: 14 (6 PWM)
  • Analoge inngangspinner: 8
  • Likestrøm per I/O -pinne: 40 mA
  • Flash -minne: 32 KB (2 KB for oppstartslaster)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Klokkehastighet: 16 MHz
  • Dimensjoner: 17 mm x 43 mm

Denne spesielle varianten av Arduino Nano er den svarte Robotdyn -designen. Grensesnittet er via en innebygd MicroUSB-port som er kompatibel med de samme MicroUSB-kablene som brukes med mange mobiltelefoner og nettbrett.

Arduino Nanos har en innebygd USB/seriell brobrikke. På denne spesielle varianten er brobrikken CH340G. Vær oppmerksom på at det er forskjellige andre typer USB/Serial bridge -brikker som brukes på de forskjellige typene Arduino -kort. Disse brikkene lar datamaskinens USB -port kommunisere med det serielle grensesnittet på Arduinos prosessorbrikke.

En datamaskins operativsystem krever at en enhetsdriver kommuniserer med USB/seriell brikke. Sjåføren lar IDE kommunisere med Arduino -kortet. Den spesifikke enhetsdriveren som trengs, avhenger av både OS -versjonen og også typen USB/seriell brikke. For CH340 USB/Serial -brikkene er det drivere tilgjengelig for mange operativsystemer (UNIX, Mac OS X eller Windows). Produsenten av CH340 leverer disse driverne her.

Når du først kobler Arduino Nano til en USB -port på datamaskinen, skal den grønne strømlampen lyse og kort tid etter skal den blå LED -en begynne å blinke sakte. Dette skjer fordi Nano er forhåndslastet med BLINK-programmet, som kjører på den splitter nye Arduino Nano.

Trinn 5: Arduino Integrated Development Environment (IDE)

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

Hvis du ennå ikke har Arduino IDE installert, kan du laste den ned fra Arduino.cc

Hvis du ønsker ytterligere introduksjonsinformasjon for arbeid i Arduino -økosystemet, foreslår vi at du leser instruksjonene for HackerBoxes Starter Workshop.

Koble Nano til MicroUSB -kabelen og den andre enden av kabelen til en USB -port på datamaskinen, start Arduino IDE -programvaren, velg riktig USB -port i IDE under verktøy> port (sannsynligvis et navn med "wchusb" i den). Velg også "Arduino Nano" i IDE under verktøy> bord.

Til slutt, last opp et eksempel på kode:

Fil-> Eksempler-> Grunnleggende-> Blink

Dette er faktisk koden som var forhåndslastet på Nano og burde kjøre akkurat nå for sakte å blinke den blå LED -en. Følgelig, hvis vi laster inn denne eksempelkoden, vil ingenting endres. I stedet, la oss endre koden litt.

Når du ser nøye ut, kan du se at programmet slår på LED -en, venter 1000 millisekunder (ett sekund), slår av LED -en, venter et sekund til og deretter gjør alt igjen - for alltid.

Endre koden ved å endre begge "forsinkelsen (1000)" -uttalelsene til "forsinkelse (100)". Denne endringen vil føre til at LED -en blinker ti ganger raskere, ikke sant?

La oss laste den endrede koden inn i Nano ved å klikke på UPLOAD -knappen (pilikonet) like over den endrede koden. Se under koden for statusinformasjon: "kompilering" og deretter "opplasting". Til slutt skal IDE indikere "Opplasting fullført", og LED -lampen din skal blinke raskere.

Gratulerer i så fall! Du har nettopp hacket ditt første stykke innebygd kode.

Når hurtigblink-versjonen er lastet og kjører, hvorfor ikke se om du kan endre koden igjen slik at LED-lampen blinker raskt to ganger og deretter vente et par sekunder før du gjentar den? Gi det et forsøk! Hva med noen andre mønstre? Når du først har lykkes med å visualisere et ønsket resultat, kodet det og observert at det fungerer som planlagt, har du tatt et enormt skritt mot å bli en kompetent maskinvarehacker.

Trinn 6: Servomotorer

Servomotorer
Servomotorer

Servomotorer styres vanligvis av en serie gjentatte elektriske pulser der bredden på pulsen indikerer posisjonen til servoen. Pulsbreddemodulert (PWM) kontrollsignal genereres ofte av en vanlig mikrokontroller som en Arduino.

Små hobbyservoer, for eksempel MG996R, er koblet til via en standard tretrådstilkobling: to ledninger for en likestrømforsyning og en ledning for å bære kontrollpulsene. MG996R-servoer har en driftsspenning på 4,8-7,2 VDC.

Trinn 7: Montering av panne- og vippemekanisme

Montering av panne- og vippemekanisme
Montering av panne- og vippemekanisme
  1. Trekk begge MG996R -servoene fra posene og sett til side tilbehør som følger med.
  2. Fest en sirkulær servokobling i aluminium til hver servo. Vær oppmerksom på at koblingene kommer i separate poser fra servoene. Koblingen sitter veldig tett. Start med å trykke koblingen på enden av servoutgangen, og tre deretter en skrue inn i senterhullet. Stram tråden for å trekke koblingen på servoutgangen.
  3. Vær oppmerksom på at det er tre braketter for pan-tilt-enheten-to esker og en U-brakett.
  4. Monter en av eskebrakettene på aluminiumssirkelen for en av servoene. Vi vil kalle denne servoen for pan servo. Rett boksebraketten med senterveggen mot aluminiumsirkelen slik at de to andre veggene i boksbraketten vender vekk fra panservoen. Bruk senterhullene på midten av esken. Dette arrangementet skal gjøre at panservoen kan snurre den vedlagte eskebraketten rundt når den er aktivert.
  5. Plasser den andre servoen (vippeservoen) i boksbraketten som er festet til aluminiumssirkelen på panservoen. Bruk minst to muttere og bolter for å feste vippeservoen - en på hver side.
  6. Hold i U-braketten, sett inn messinglageret fra innsiden av U gjennom et av de store svingmonteringshullene.
  7. Plasser U-braketten med lageret på tilt-servoen som er inne i boksbraketten slik at det andre store svingmonteringshullet (det ene uten lageret) er i tråd med aluminiumssirkelen på tilt-servoen.
  8. Bruk skruer for å feste U-braketten på aluminiumsirkelen på den ene siden av U-braketten.
  9. På den andre siden av U-braketten, stram en enkelt skrue gjennom lageret og inn i det lille hullet i eskebraketten inni. Dette bør gjøre at U-braketten kan rotere rundt boksbraketten senere når vippeservoen aktiveres.

Trinn 8: Montering av panne og vippemontasje

Montering av panne og vippemontasje
Montering av panne og vippemontasje
Montering av panne og vippemontasje
Montering av panne og vippemontasje

Den gjenværende eskebraketten kan skrues ned i et lite trebrettskrap for å fungere som en kamerabase som vist på bildet. Til slutt monteres panservoen i den gjenværende eskebraketten med minst to muttere og bolter for å feste servoen på braketten - en på hver side.

Trinn 9: Tråd og test pan og tilt -enheten

Tråd og test pan og tilt -enheten
Tråd og test pan og tilt -enheten

For å koble servoene i henhold til skjemaet, er det raskest å bare kutte de originale hunnkontaktene fra servoene og deretter bruke noen kvinnelige DuPont -jumperender for å få signalet og jordlinjene festet til Nano -pinnene.

Nano har ikke nok strøm på 5V -forsyningen til å drive servoene fra USB, så en ekstra forsyning anbefales. Dette kan være alt i området 4,8-7,2 volt. For eksempel vil fire AA -batterier (i serie) fungere fint. En benkforsyning eller veggvort er også et godt valg.

Det enkle eksempelet Arduino -kode som er vedlagt her som PanTiltTest.ino kan brukes til å teste kontroll av de to servoene fra den serielle skjermen på Arduino IDE. Angi monitorens baudhastighet slik at den samsvarer med 9600bps angitt i eksempelkoden. Hvis du angir vinkelverdier mellom 0 og 180 grader, plasseres servoene tilsvarende.

Til slutt kan USB-kameramodulen (eller en annen sensor) monteres på U-braketten til Pan-Tilt Assembly for bruk i sporingsapplikasjoner.

Trinn 10: Ansiktssporing med OpenCV

Image
Image
Hack the Planet
Hack the Planet

Et maskinsyn-ansiktssporingssystem kan implementeres ved å kombinere delsystemer som vist i blokkdiagrammet. SerialServoControl -skissen for Arduino finner du i den følgende Sparkfun -opplæringen sammen med en tilhørende demonstrasjon ved bruk av OpenCV, Processing, en Arduino, et USB -kamera og en Pan/Tilt Assembly for å spore et menneskelig ansikt. Demoen bruker to servoer for å flytte kameraet for å holde ansiktet sentrert i videorammen selv når brukeren beveger seg rundt i rommet. For eksempel kode i C#, sjekk ut GitHub -depotet for CamBot -videoen.

Trinn 11: Hack the Planet

Hvis du har likt denne Instrucable og ønsker å få en eske med elektronikk og datatekniske prosjekter som dette levert rett i postkassen din hver måned, kan du bli med oss ved å abonnere her.

Nå ut og del suksessen din i kommentarene nedenfor eller på HackerBoxes Facebook -side. Gi oss beskjed hvis du har spørsmål eller trenger hjelp med noe. Takk for at du er en del av HackerBoxes. Kom gjerne med forslag og tilbakemeldinger. HackerBoxes er DINE esker. La oss lage noe flott!

Anbefalt: