Innehållsförteckning:

HackerBox 0024: Vision Quest: 11 steg
HackerBox 0024: Vision Quest: 11 steg

Video: HackerBox 0024: Vision Quest: 11 steg

Video: HackerBox 0024: Vision Quest: 11 steg
Video: HackerBox #0024: Vision Quest 2024, Juli
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Den här månaden experimenterar HackerBox Hackers med Computer Vision och Servo Motion Tracking. Denna instruktionsbok innehåller information om hur du arbetar med HackerBox #0024, som du kan hämta här så länge lagret räcker. Om du också vill få en sån här HackerBox direkt i din brevlåda varje månad, prenumerera på HackerBoxes.com och gå med i revolutionen!

Ämnen och inlärningsmål för HackerBox 0024:

  • Experimentera med datorsyn
  • Konfigurera OpenCV (Computer Vision)
  • Programmering av Arduino Nano från Arduino IDE
  • Styr servomotorer med Arduino Nano
  • Montering av en mekanisk panna och lutningsenhet
  • Kontroll av panorering och lutning med en mikrokontroller
  • Utföra ansiktsspårning med OpenCV

HackerBoxes är den månatliga prenumerationstjänsten för DIY -elektronik och datorteknik. Vi är hobbyister, tillverkare och experimenterande. Vi är drömmarnas drömmare. HACKA PLANET!

Steg 1: HackerBox 0024: Boxinnehåll

HackerBox 0024: Boxinnehåll
HackerBox 0024: Boxinnehåll
  • HackerBoxes #0024 Samlingsbart referenskort
  • Tre fäste Pan och Tilt Assembly
  • Två MG996R -servon med tillbehör
  • Två cirkulära servokopplingar i aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digitalkamera med USB -kabel
  • Tre linser med Universal Clip Mount
  • Medicinsk inspektionspennlampa
  • Dupont manliga/kvinnliga hoppare
  • MicroUSB -kabel
  • Exklusivt OpenCV -dekal
  • Exklusivt Dia de Muertos -dekal

Några andra saker som kommer att vara till hjälp:

  • Litet träbrätsskrot för kamerabas
  • Lödkolv, löd och grundläggande lödverktyg
  • Dator för att köra mjukvaruverktyg

Viktigast av allt, du behöver en känsla av äventyr, DIY -anda och nyfikenhet på hackare. Hardcore DIY -elektronik är inte en trivial strävan, och vi vattnar inte ner det för dig. Målet är framsteg, inte perfektion. När du fortsätter och njuter av äventyret kan stor tillfredsställelse härledas från att lära dig ny teknik och förhoppningsvis få några projekt att fungera. Vi föreslår att du tar varje steg långsamt, tänker på detaljerna och aldrig tvekar att be om hjälp.

FRÅGA FRÅGOR: Vi ber alla HackerBox -medlemmar om en riktigt stor tjänst. Ta några minuter att granska vanliga frågor på HackerBoxes webbplats innan du kontaktar support. Även om vi uppenbarligen vill hjälpa alla medlemmar så mycket som nödvändigt, innehåller de flesta av våra support -e -postmeddelanden enkla frågor som tas upp mycket tydligt i vanliga frågor och svar. Tack för att du förstår!

Steg 2: Datorsyn

Datorsyn
Datorsyn

Datorsyn är ett tvärvetenskapligt område som behandlar hur datorer får hög förståelse från digitala bilder eller videor. Ur teknikens perspektiv försöker datorsyn automatisera uppgifter som det mänskliga visuella systemet kan utföra. Som en vetenskaplig disciplin handlar datorsyn om teorin bakom artificiella system som extraherar information från bilder. Bilddata kan ha många former, till exempel videosekvenser, visningar från flera kameror eller flerdimensionella data från en medicinsk skanner. Som en teknisk disciplin försöker datorsyn tillämpa sina teorier och modeller för konstruktion av datorsynssystem. Underdomäner för datorsyn inkluderar scenrekonstruktion, händelsedetektering, videospårning, objektigenkänning, 3D-poseuppskattning, inlärning, indexering, rörelsestimering och bildåterställning.

Det är intressant att notera att datorsyn kan anses vara omvänd av datorgrafik.

Steg 3: Bearbetning och OpenCV

Bearbetning och OpenCV
Bearbetning och OpenCV

Processing är en flexibel programskissbok och ett språk för att lära sig att koda inom bildkonstens sammanhang. Bearbetning har främjat mjukvarukunnighet inom bildkonst och visuell läskunnighet inom teknik. Det finns tiotusentals studenter, konstnärer, designers, forskare och amatörer som använder Processing för inlärning och prototyper.

OpenCV (Open Source Computer Vision Library) är ett bibliotek med öppen källkod för datorsyn och maskininlärning. OpenCV byggdes för att tillhandahålla en gemensam infrastruktur för datorvisionsapplikationer och för att påskynda användningen av maskinuppfattning i de kommersiella produkterna. OpenCV-biblioteket har mer än 2500 optimerade algoritmer, som inkluderar en omfattande uppsättning av både klassiska och toppmoderna datorsyn och algoritmer för maskininlärning. Dessa algoritmer kan användas för att upptäcka och känna igen ansikten, identifiera objekt, klassificera mänskliga handlingar i videor, spåra kamerarörelser, spåra rörliga objekt och så vidare.

Installera OpenCV inom Processing från Arkiv> Exempel -menyn genom att välja "Lägg till exempel" och sedan på fliken Bibliotek installera både video- och OpenCV -biblioteken. Öppna LiveCamTest -exemplet för grundläggande ansiktsspårning. Kolla in några andra OpenCV för bearbetningsexempel här.

Fler resurser:

Komma igång med Computer Vision är ett bokprojekt som ger en enkel ingång för kreativa experiment med datorsyn. Den introducerar koden och koncept som är nödvändiga för att bygga datorsynprojekt.

Programmering av Computer Vision med Python är en O'Reilly -bok om PCV, en öppen källkod Python -modul för datorsyn.

Lär dig OpenCV

Datorsyn: Algoritmer och applikationer

Behärskar OpenCV

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

Chris Urmson TED Talk Hur en förarlös bil ser vägen

Steg 4: Arduino Nano mikrokontrollerplattform

Arduino Nano mikrokontrollerplattform
Arduino Nano mikrokontrollerplattform

Vi kan använda alla vanliga mikrontrollerplattformar för att styra servon i vår pan och tilt -kamerafäste. Arduino Nano är ett ytmonterat, brödbrädvänligt, miniatyriserat Arduino-kort med integrerat USB. Det är fantastiskt komplett och lätt att hacka.

Funktioner:

  • Mikrokontroller: Atmel ATmega328P
  • Spänning: 5V
  • Digitala I/O -stift: 14 (6 PWM)
  • Analoga ingångsstift: 8
  • Likström per I/O -stift: 40 mA
  • Flashminne: 32 KB (2KB för bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Klockhastighet: 16 MHz
  • Mått: 17 mm x 43 mm

Denna speciella variant av Arduino Nano är den svarta Robotdyn -designen. Gränssnittet är via en inbyggd MicroUSB-port som är kompatibel med samma MicroUSB-kablar som används med många mobiltelefoner och surfplattor.

Arduino Nanos har ett inbyggt USB/seriellt bryggchip. På den här varianten är bryggchippet CH340G. Observera att det finns olika andra typer av USB/Serial bridge -chips som används på de olika typerna av Arduino -kort. Med dessa chips kan datorns USB -port kommunicera med det seriella gränssnittet på Arduinos processorchip.

En dators operativsystem kräver att en enhetsdrivrutin kommunicerar med USB/Serial -chipet. Föraren tillåter IDE att kommunicera med Arduino -kortet. Den specifika enhetsdrivrutinen som behövs beror på både OS -versionen och även typen av USB/seriellt chip. För CH340 USB/Serial -chips finns drivrutiner tillgängliga för många operativsystem (UNIX, Mac OS X eller Windows). Tillverkaren av CH340 levererar dessa förare här.

När du först ansluter Arduino Nano till en USB -port på din dator ska den gröna strömlampan tändas och kort efter ska den blå lysdioden börja blinka långsamt. Detta händer eftersom Nano är förinstallerad med BLINK-programmet, som körs på den helt nya Arduino Nano.

Steg 5: Arduino Integrated Development Environment (IDE)

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

Om du ännu inte har Arduino IDE installerat kan du ladda ner det från Arduino.cc

Om du vill ha ytterligare introduktionsinformation för arbete i Arduino -ekosystemet föreslår vi att du läser instruktionerna för HackerBoxes Starter Workshop.

Anslut Nano till MicroUSB -kabeln och andra änden av kabeln till en USB -port på datorn, starta Arduino IDE -programvaran, välj lämplig USB -port i IDE under verktyg> port (troligen ett namn med "wchusb" i den). Välj också "Arduino Nano" i IDE under verktyg> kort.

Slutligen ladda upp en bit exempelkod:

Arkiv-> Exempel-> Grunder-> Blink

Detta är faktiskt koden som förinstallerades på Nano och borde köras just nu för att långsamt blinka den blå lysdioden. Följaktligen, om vi laddar den här exempelkoden, kommer ingenting att förändras. Låt oss istället ändra koden lite.

När du tittar noga kan du se att programmet tänder lysdioden, väntar 1000 millisekunder (en sekund), släcker lysdioden, väntar ytterligare en sekund och gör sedan allt igen - för alltid.

Ändra koden genom att ändra båda "fördröjning (1000)" -uttalandena till "fördröjning (100)". Denna ändring kommer att leda till att lysdioden blinkar tio gånger snabbare, eller hur?

Låt oss ladda den modifierade koden till Nano genom att klicka på UPLOAD -knappen (pilikonen) strax ovanför den modifierade koden. Titta nedanför koden för statusinformation: "kompilering" och sedan "uppladdning". Så småningom ska IDE indikera "Uppladdning klar" och din lysdiod ska blinka snabbare.

Grattis i så fall! Du har just hackat din första inbäddade kod.

När din snabbblinkade version har laddats och körs, varför inte se om du kan ändra koden igen så att lysdioden blinkar snabbt två gånger och sedan vänta ett par sekunder innan du upprepar det? Ge det ett försök! Vad sägs om några andra mönster? När du väl lyckats visualisera ett önskat resultat, koda det och observera att det fungerar som planerat, har du tagit ett enormt steg mot att bli en kompetent hårdvaruhacker.

Steg 6: Servomotorer

Servomotorer
Servomotorer

Servomotorer styrs i allmänhet av en serie upprepade elektriska pulser där bredden på pulserna indikerar servos position. Pulsbreddsmodulerad (PWM) styrsignal genereras ofta av en gemensam mikrokontroller såsom en Arduino.

Små hobbyservos, till exempel MG996R, är anslutna via en vanlig tretrådsanslutning: två ledningar för likström och en tråd för att bära kontrollpulserna. MG996R-servon har ett driftsspänningsras på 4,8-7,2 VDC.

Steg 7: Montering av pan- och tilt -mekanismen

Montering av pan- och tilt -mekanismen
Montering av pan- och tilt -mekanismen
  1. Dra båda MG996R -servona ur väskorna och lägg åt sidan av de medföljande tillbehören för tillfället.
  2. Fäst en aluminiumcirkulär servokopplare på varje servo. Observera att kopplingarna kommer i separata påsar från servon. Kopplingen sitter väldigt tätt. Börja med att trycka på kopplingen på slutet av servoutgången och trä sedan in en skruv i mitthålet. Dra åt tråden för att dra kopplingen till servoutgången.
  3. Observera att det finns tre fästen för pan-tilt-enheten-två lådfästen och en U-fäste.
  4. Montera en av lådfästena på aluminiumcirkeln för ett av servona. Vi kommer att kalla denna servo för pan servo. Rikta lådfästet med dess mittvägg mot aluminiumcirkeln så att de andra två väggarna på lådfästet vetter bort från panservon. Använd mitthålen på lådfästets mittvägg. Detta arrangemang bör göra det möjligt för panservon att snurra runt den bifogade lådfästet när den aktiveras.
  5. Placera det andra servot (tilt servo) i lådfästet som är fäst vid aluminiumcirkeln på pannanservot. Använd minst två muttrar och bultar för att fästa lutningsservot - en på varje sida.
  6. Håll U-fästet och sätt in mässingens "lager" från insidan av U genom ett av de stora svängmonteringshålen.
  7. Placera U-fästet med lagret på lutnings-servot som är inuti lådfästet så att det andra stora svängmonteringshålet (det utan lagret) ligger i linje med aluminiumcirkeln på lutnings-servot.
  8. Använd skruvar för att fästa U-fästet på aluminiumcirkeln på ena sidan av U-fästet.
  9. På andra sidan U-fästet, dra åt en enda skruv genom lagret och in i det lilla hålet i lådfästet inuti. Detta bör göra det möjligt för U-fästet att rotera runt lådfästet senare när lutningsservot aktiveras.

Steg 8: Montering av pannan och lutningen

Montering av pannan och lutningenheten
Montering av pannan och lutningenheten
Montering av pannan och lutningenheten
Montering av pannan och lutningenheten

Den återstående lådfästet kan skruvas ner till ett litet träbrätsskrot för att fungera som en kamerabas enligt bilden. Slutligen monteras panservot i den återstående lådfästet med minst två muttrar och bultar för att fästa servon på fästet - en på varje sida.

Steg 9: Anslut och testa pan och tilt -enheten

Anslut och testa pan- och tilt -enheten
Anslut och testa pan- och tilt -enheten

För att köra servon enligt schemat är det snabbast att bara klippa de ursprungliga honkontakterna från servona och sedan använda några kvinnliga DuPont -bygeländar för att få signalen och jordledningarna fästa till Nano -stiften.

Nano har inte tillräckligt med ström på 5V -matningen för att driva servon från USB, så en extra strömförsörjning rekommenderas. Detta kan vara vad som helst i området 4,8-7,2 volt. Till exempel kommer fyra AA -batterier (i serie) att fungera bra. En bänk eller väggvårta är också ett bra val.

Det enkla Arduino -koden som bifogas här som PanTiltTest.ino kan användas för att testa kontrollen av de två servona från den seriella bildskärmen på Arduino IDE. Ställ in bildskärmens överföringshastighet för att matcha 9600 bps som anges i exempelkoden. Genom att ange vinkelvärden mellan 0 och 180 grader placeras servon i enlighet därmed.

Slutligen kan USB-kameramodulen (eller annan sensor) monteras på U-fästet på Pan-Tilt-enheten för användning i spårningsapplikationer.

Steg 10: Ansiktsspårning med OpenCV

Image
Image
Hacka planeten
Hacka planeten

Ett maskinsyn-ansikts-spårningssystem kan implementeras genom att kombinera delsystem som visas i blockschemat. SerialServoControl -skissen för Arduino kan hittas i följande Sparkfun -handledning tillsammans med en relaterad demonstration med OpenCV, Processing, en Arduino, en USB -kamera och en Pan/Tilt Assembly för att spåra ett mänskligt ansikte. Demon använder två servon för att placera om kameran för att hålla ansiktet centrerat i videoramen även när användaren rör sig i rummet. Till exempel kod i C#, kolla in GitHub -förvaret för CamBot -videon.

Steg 11: Hacka planeten

Om du har njutit av denna Instrucable och vill få en låda med elektronik och datatekniska projekt som detta levererade direkt till din brevlåda varje månad, vänligen gå med oss genom att prenumerera HÄR.

Nå ut och dela din framgång i kommentarerna nedan eller på HackerBoxes Facebook -sida. Hör av dig till oss om du har några frågor eller behöver hjälp med något. Tack för att du är en del av HackerBoxes. Kom gärna med dina förslag och feedback. HackerBoxes är DINA lådor. Låt oss göra något bra!

Rekommenderad: