Talaan ng mga Nilalaman:

HackerBox 0024: Vision Quest: 11 Mga Hakbang
HackerBox 0024: Vision Quest: 11 Mga Hakbang

Video: HackerBox 0024: Vision Quest: 11 Mga Hakbang

Video: HackerBox 0024: Vision Quest: 11 Mga Hakbang
Video: HackerBox #0024: Vision Quest 2024, Hulyo
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Sa buwang ito, ang mga HackerBox Hacker ay nag-eeksperimento sa Computer Vision at Servo Motion Tracking. Naglalaman ang Instructable na ito ng impormasyon para sa pagtatrabaho sa HackerBox # 0024, na maaari mong kunin dito habang tumatagal. Gayundin, kung nais mong makatanggap ng isang HackerBox tulad ng karapatang ito sa iyong mailbox bawat buwan, mangyaring mag-subscribe sa HackerBoxes.com at sumali sa rebolusyon!

Mga Paksa at Mga Layunin sa Pag-aaral para sa HackerBox 0024:

  • Eksperimento sa Computer Vision
  • Pagse-set up ng OpenCV (Computer Vision)
  • Programming ang Arduino Nano mula sa Arduino IDE
  • Pagkontrol sa Servo Motors kasama ang Arduino Nano
  • Pag-iipon ng isang Mekanikal na Pan at Ikiling Assembly
  • Pagkontrol sa Pan at Tilt Motion gamit ang isang Microcontroller
  • Pagsasagawa ng Pagsubaybay sa Mukha gamit ang OpenCV

Ang HackerBoxes ay ang buwanang serbisyo sa kahon ng subscription para sa DIY electronics at computer technology. Kami ay mga libangan, gumagawa, at eksperimento. Kami ang nangangarap ng mga pangarap. HACK ANG PLANET!

Hakbang 1: HackerBox 0024: Mga Nilalaman sa Kahon

HackerBox 0024: Mga Nilalaman sa Kahon
HackerBox 0024: Mga Nilalaman sa Kahon
  • HackerBoxes # 0024 Nakokolektang Sanggunian Card
  • Tatlong Bracket Pan at Tilt Assembly
  • Dalawang MG996R Servos na may Mga Kagamitan
  • Dalawang Aluminium Circular Servo Couplers
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Digital Camera Assembly na may USB Cable
  • Tatlong Lente na may Universal Clip Mount
  • Medical Light Pen Pen
  • Dupont Mga Lalake / Babae na Jumpers
  • MicroUSB Cable
  • Eksklusibong OpenCV Decal
  • Eksklusibong Dia de Muertos Decal

Ilang iba pang mga bagay na makakatulong:

  • Maliit na kahoy na board scrap para sa base ng camera
  • Panghinang, bakal, at pangunahing mga tool sa paghihinang
  • Computer para sa pagpapatakbo ng mga tool ng software

Pinakamahalaga, kakailanganin mo ang isang pakiramdam ng pakikipagsapalaran, diwa ng DIY, at pag-usisa ng hacker. Ang Hardcore DIY electronics ay hindi isang maliit na hangarin, at hindi namin ito ibinubuhos para sa iyo. Ang layunin ay pag-unlad, hindi pagiging perpekto. Kapag nagpumilit ka at nasisiyahan sa pakikipagsapalaran, maraming kasiyahan ang maaaring makuha mula sa pag-aaral ng bagong teknolohiya at inaasahan kong gumana ang ilang mga proyekto. Iminumungkahi naming dahan-dahan ang bawat hakbang, isinasaalang-alang ang mga detalye, at huwag mag-atubiling humingi ng tulong.

Madalas na TANONG NG KATANUNGAN: Gusto naming tanungin ang lahat ng mga miyembro ng HackerBox ng isang talagang malaking pabor. Mangyaring maglaan ng ilang minuto upang suriin ang FAQ sa website ng HackerBoxes bago makipag-ugnay sa suporta. Bagaman malinaw na nais naming tulungan ang lahat ng mga miyembro hangga't kinakailangan, ang karamihan sa aming mga email ng suporta ay nagsasangkot ng mga simpleng tanong na malinaw na malinaw na napagtutuunan ng FAQ. Salamat sa pag-unawa!

Hakbang 2: Paningin sa Computer

Paningin sa Computer
Paningin sa Computer

Ang paningin sa computer ay isang patlang na interdisiplina na nakikipag-usap sa kung paano nakakakuha ang mga computer ng mataas na antas na pag-unawa mula sa mga digital na imahe o video. Mula sa pananaw ng engineering, ang paningin ng computer ay naghahangad na i-automate ang mga gawain na magagawa ng sistemang paningin ng tao. Bilang isang pang-agham na disiplina, ang paningin sa computer ay nababahala sa teorya sa likod ng mga artipisyal na system na kumukuha ng impormasyon mula sa mga imahe. Ang data ng imahe ay maaaring tumagal ng maraming mga form, tulad ng mga pagkakasunud-sunod ng video, mga panonood mula sa maraming mga camera, o multi-dimensional na data mula sa isang medikal na scanner. Bilang isang disiplina sa teknolohikal, ang paningin sa computer ay naglalayong ilapat ang mga teorya at modelo nito para sa pagtatayo ng mga computer vision system. Kasama sa mga sub-domain ng paningin ng computer ang muling pagtatayo ng eksena, pagtuklas ng kaganapan, pagsubaybay sa video, pagkilala sa bagay, pagtatantya ng 3D na pose, pag-aaral, pag-index, pagkalkula ng paggalaw, at pagpapanumbalik ng imahe.

Nakatutuwang pansinin na ang paningin sa computer ay maaaring maituring na kabaligtaran ng mga graphic ng computer.

Hakbang 3: Pagproseso at OpenCV

Pinoproseso at OpenCV
Pinoproseso at OpenCV

Ang pagpoproseso ay isang nababaluktot na sketchbook ng software at isang wika para sa pag-aaral kung paano mag-code sa loob ng konteksto ng visual arts. Ang pagproseso ay nagsulong ng literacy ng software sa loob ng visual arts at visual literacy sa loob ng teknolohiya. Mayroong sampu-sampung libong mga mag-aaral, artista, tagadisenyo, mananaliksik, at libangan na gumagamit ng Pagproseso para sa pag-aaral at prototyping.

Ang OpenCV (Open Source Computer Vision Library) ay isang open source computer vision at library ng software ng pag-aaral ng machine. Ang OpenCV ay itinayo upang magbigay ng isang pangkaraniwang imprastraktura para sa mga aplikasyon ng computer vision at upang mapabilis ang paggamit ng pang-unawa ng makina sa mga produktong komersyal. Ang library ng OpenCV ay may higit sa 2500 mga na-optimize na algorithm, na nagsasama ng isang komprehensibong hanay ng parehong klasiko at state-of-the-art na computer vision at mga algorithm ng pag-aaral ng makina. Ang mga algorithm na ito ay maaaring magamit upang makita at kilalanin ang mga mukha, kilalanin ang mga bagay, iuri ang mga pagkilos ng tao sa mga video, subaybayan ang mga paggalaw ng camera, subaybayan ang gumagalaw na mga bagay, at iba pa.

I-install ang OpenCV sa loob ng Pagproseso mula sa File> Mga halimbawa ng menu sa pamamagitan ng pagpili ng "Magdagdag ng Mga Halimbawa" at pagkatapos ay sa ilalim ng tab na Mga Aklatan na i-install ang parehong Video at mga OpenCV na aklatan. Buksan ang halimbawa ng LiveCamTest para sa pangunahing pagsubaybay sa mukha. Suriin ang ilang iba pang OpenCV para sa mga halimbawa ng pagpoproseso dito.

Higit pang Mga Mapagkukunan:

Ang Pagsisimula sa Computer Vision ay isang proyekto sa libro na nagbibigay ng isang madaling punto ng pagpasok para sa malikhaing eksperimento sa computer vision. Ipinakikilala nito ang code at mga konseptong kinakailangan upang makabuo ng mga proyekto sa paningin ng computer.

Ang Programming Computer Vision na may Python ay isang aklat na O'Reilly sa PCV, isang bukas na mapagkukunan na module ng Python para sa paningin ng computer.

Pag-aaral ng OpenCV

Paningin sa Computer: Mga Algorithm at Aplikasyon

Mastering OpenCV

Stanford Course CS231n Convolutional Neural Networks para sa Pagkilala sa Visual (16 Mga Video)

Chris Urmson TED Talk Paano nakikita ng isang walang driver na kotse ang kalsada

Hakbang 4: Arduino Nano Microcontroller Platform

Platform ng Arduino Nano Microcontroller
Platform ng Arduino Nano Microcontroller

Maaari naming gamitin ang anumang karaniwang platform ng microntroller para sa pagkontrol ng mga servo sa aming kawali at ikiling ang camera mount. Ang Arduino Nano ay isang pang-ibabaw, mounting breadboard, miniaturized na Arduino board na may isinamang USB. Ito ay kamangha-manghang buong tampok at madaling i-hack.

Mga Tampok:

  • Microcontroller: Atmel ATmega328P
  • Boltahe: 5V
  • Mga Digital I / O Pins: 14 (6 PWM)
  • Mga Pins ng Input ng Analog: 8
  • Kasalukuyang DC bawat I / O Pin: 40 mA
  • Memory ng Flash: 32 KB (2KB para sa bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Bilis ng Orasan: 16 MHz
  • Mga Dimensyon: 17mm x 43mm

Ang partikular na pagkakaiba-iba ng Arduino Nano na ito ay ang disenyo ng itim na Robotdyn. Ang interface ay sa pamamagitan ng isang on-board MicroUSB port na katugma sa parehong mga MicroUSB cable na ginamit sa maraming mga mobile phone at tablet.

Nagtatampok ang Arduino Nanos ng built-in na USB / Serial chip chip. Sa partikular na variant na ito, ang chip chip ay ang CH340G. Tandaan na may iba`t ibang mga uri ng USB / Serial na mga chip ng tulay na ginamit sa iba't ibang uri ng mga board ng Arduino. Pinapayagan ka ng mga chips na ito ang USB port ng computer upang makipag-usap sa serial interface sa chip ng processor ng Arduino.

Ang operating system ng isang computer ay nangangailangan ng isang Driver ng Device upang makipag-usap sa USB / Serial chip. Pinapayagan ng driver ang IDE na makipag-usap sa Arduino board. Ang tukoy na driver ng aparato na kinakailangan ay nakasalalay sa parehong bersyon ng OS at gayundin ang uri ng USB / Serial chip. Para sa CH340 USB / Serial chips, mayroong mga driver na magagamit para sa maraming mga operating system (UNIX, Mac OS X, o Windows). Ang tagagawa ng CH340 ang nagtutustos sa mga driver doon.

Kapag na-plug mo ang Arduino Nano sa isang USB port ng iyong computer, ang berdeng ilaw ng kuryente ay dapat na bukas at ilang sandali matapos ang asul na LED ay dapat magsimulang mag-blink nang dahan-dahan. Nangyayari ito dahil ang Nano ay paunang na-load sa programa ng BLINK, na tumatakbo sa bagong tatak ng Arduino Nano.

Hakbang 5: Arduino Integrated Development Environment (IDE)

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

Kung wala ka pang naka-install na Arduino IDE, maaari mo itong i-download mula sa Arduino.cc

Kung nais mo ng karagdagang impormasyon sa pagpapakilala para sa pagtatrabaho sa Arduino ecosystem, iminumungkahi namin na suriin ang mga tagubilin para sa HackerBoxes Starter Workshop.

I-plug ang Nano sa MicroUSB cable at ang kabilang dulo ng cable sa isang USB port sa computer, ilunsad ang Arduino IDE software, piliin ang naaangkop na USB port sa IDE sa ilalim ng mga tool> port (malamang na isang pangalan na may "wchusb" dito). Piliin din ang "Arduino Nano" sa IDE sa ilalim ng mga tool> board.

Panghuli, mag-load ng isang piraso ng halimbawa ng code:

File-> Mga halimbawa-> Mga Pangunahing Kaalaman-> Blink

Ito talaga ang code na na-preload papunta sa Nano at dapat na tumatakbo ngayon upang dahan-dahang kumurap ng asul na LED. Alinsunod dito, kung na-load namin ang halimbawang code na ito, walang magbabago. Sa halip, baguhin natin nang kaunti ang code.

Sa pagtingin nang mabuti, maaari mong makita na ang programa ay nakabukas ang LED, naghihintay ng 1000 milliseconds (isang segundo), pinapatay ang LED, naghihintay ng isa pang segundo, at pagkatapos ay muling ginagawa ang lahat - magpakailanman.

Baguhin ang code sa pamamagitan ng pagbabago ng parehong mga pahayag na "antala (1000)" sa "pagkaantala (100)". Ang pagbabago na ito ay magiging sanhi ng LED upang kumurap ng sampung beses nang mas mabilis, tama ba?

I-load natin ang binagong code sa Nano sa pamamagitan ng pag-click sa pindutang UPLOAD (ang arrow icon) sa itaas lamang ng iyong binagong code. Panoorin sa ibaba ang code para sa impormasyon sa katayuan: "pag-iipon" at pagkatapos ay "pag-upload". Sa paglaon, dapat ipahiwatig ng IDE ang "Kumpletong Pag-upload" at ang iyong LED ay dapat na kumikislap nang mas mabilis.

Kung gayon, binabati kita! Na-hack mo lang ang iyong unang piraso ng naka-embed na code.

Kapag na-load at tumatakbo na ang iyong bersyon ng mabilis na pag-blink, bakit hindi mo makita kung maaari mong baguhin muli ang code upang maging sanhi ng mabilis na pagkurap ng dalawang beses ang LED at pagkatapos maghintay ng ilang segundo bago ulitin? Subukan! Paano ang tungkol sa ilang iba pang mga pattern? Kapag nagtagumpay ka sa pag-visualize ng isang nais na kinalabasan, pag-coding ito, at pagmamasid upang gumana tulad ng nakaplano, gumawa ka ng isang napakalaking hakbang patungo sa pagiging isang karampatang hacker ng hardware.

Hakbang 6: Mga Servo Motors

Mga Servo Motors
Mga Servo Motors

Ang mga motor ng servo ay karaniwang kinokontrol ng isang serye ng paulit-ulit na mga de-kuryenteng pulso kung saan ang lapad ng mga pulso ay nagpapahiwatig ng posisyon ng servo. Ang signal control control na modulated (PWM) na lapad ng lapad ay madalas na nabuo ng isang karaniwang microcontroller tulad ng isang Arduino.

Ang mga maliliit na hobby servo, tulad ng MG996R, ay konektado sa pamamagitan ng isang karaniwang koneksyon na tatlong kawad: dalawang mga wire para sa isang supply ng kuryente sa DC at isang kawad para sa pagdala ng mga pulso ng kontrol. Ang mga servo ng MG996R ay may operating voltage rage na 4.8-7.2 VDC.

Hakbang 7: Pag-iipon ng mekanismo ng Pan at Ikiling

Pag-iipon ng mekanismo ng Pan at Ikiling
Pag-iipon ng mekanismo ng Pan at Ikiling
  1. Hilahin ang parehong mga servo ng MG996R mula sa kanilang mga bag at itabi ang mga kasama na accessories sa ngayon.
  2. Maglakip ng isang aluminyo, paikot na servo coupler sa bawat servo. Tandaan na ang mga coupler ay magkakahiwalay na mga bag mula sa mga servo. Ang coupler ay isang masikip na magkasya. Magsimula sa pamamagitan ng pagpindot sa coupler sa dulo ng output ng servo at pagkatapos ay i-thread ang isang tornilyo sa butas ng gitna. Higpitan ang thread upang iguhit ang coupler papunta sa output ng servo.
  3. Tandaan na mayroong tatlong mga braket para sa pan-ikiling na pagpupulong - dalawang mga box-bracket at isang U-bracket.
  4. I-mount ang isa sa mga box-bracket papunta sa bilog na aluminyo para sa isa sa mga servos. Tatawagan namin ang servo na ito na pan servo. I-orient ang box-bracket kasama ang gitnang pader laban sa bilog na aluminyo na ang dalawang dalang dingding ng box bracket ay nakaharap sa pan servo. Gamitin ang mga butas sa gitna sa gitnang pader ng bracket ng kahon. Dapat payagan ng pag-aayos na ito ang pan servo na paikutin ang naka-attach na box-bracket sa sandaling maipatupad ito.
  5. Iposisyon ang iba pang servo (ikiling servo) sa box-bracket na nakakabit sa bilog na aluminyo ng pan servo. Gumamit ng hindi bababa sa dalawang mga mani at bolts upang mailakip ang ikiling servo - isa sa bawat panig.
  6. Hawak ang U-bracket, ipasok ang tanso na "tindig" mula sa loob ng U sa pamamagitan ng isa sa mga malalaking butas ng pag-mounting ng pivot.
  7. Ilagay ang U-bracket na may tindig papunta sa ikiling servo na nasa loob ng kahon ng bracket tulad ng iba pang malalaking pivot mounting hole (na walang tindig) na nakahanay sa bilog na aluminyo sa ikiling servo.
  8. Gumamit ng mga turnilyo upang mailagay ang U-bracket papunta sa bilog na aluminyo sa isang bahagi ng U-bracket.
  9. Sa kabilang panig ng U-bracket, higpitan ang isang solong tornilyo sa pamamagitan ng tindig at sa maliit na butas sa box-bracket sa loob. Dapat nitong payagan ang U-bracket na paikutin ang box-bracket sa paglaon kapag naipatupad ang ikiling servo.

Hakbang 8: Pag-mount sa Pan at Tilt Assembly

Pag-mount sa Pan at Tilt Assembly
Pag-mount sa Pan at Tilt Assembly
Pag-mount sa Pan at Tilt Assembly
Pag-mount sa Pan at Tilt Assembly

Ang natitirang box-bracket ay maaaring i-screw down sa isang maliit na scrap ng kahoy na board upang magsilbing isang base ng camera tulad ng ipinakita sa imahe. Sa wakas, ang pan servo ay naka-mount sa loob ng natitirang box-bracket na gumagamit ng hindi bababa sa dalawang mga nut at bolts upang mailakip ang servo sa bracket - isa sa bawat panig.

Hakbang 9: Wire at Subukan ang Pan at Tilt Assembly

Wire at Subukan ang Pan at Tilt Assembly
Wire at Subukan ang Pan at Tilt Assembly

Upang i-wire ang mga servos alinsunod sa eskematiko, pinakamabilis na i-cut lamang ang orihinal na mga babaeng konektor mula sa mga servo at pagkatapos ay gumamit ng ilang mga babaeng DuPont jumper na nagtatapos upang makuha ang signal at mga ground line na nakakabit sa mga Nano pin.

Ang Nano ay walang sapat na kasalukuyang sa 5V supply upang mapagana ang mga servos mula sa USB, kaya inirerekumenda ang isang karagdagang suplay. Maaari itong maging anumang nasa saklaw na 4.8-7.2 Volt. Halimbawa, ang apat na baterya ng AA (sa serye) ay gagana nang maayos. Ang isang bench supply o wall-wart ay mahusay ding pagpipilian.

Ang simpleng halimbawa ng Arduino code na nakakabit dito bilang PanTiltTest.ino ay maaaring magamit upang subukan ang kontrol ng dalawang servos mula sa serial monitor sa Arduino IDE. Itakda ang monitor baud rate upang tumugma sa 9600bps na itinakda sa halimbawa ng code. Ang pagpasok ng mga halagang anggulo sa pagitan ng 0 at 180 degree ay iposisyon ang mga servos nang naaayon.

Sa wakas, ang USB Camera Module (o iba pang sensor) ay maaaring mai-mount sa U-Bracket ng Pan-Tilt Assembly para magamit sa pagsubaybay ng mga application.

Hakbang 10: Pagsubaybay sa Mukha Sa OpenCV

Image
Image
Hack ang Planet
Hack ang Planet

Ang isang machine vision face-tracking system ay maaaring ipatupad sa pamamagitan ng pagsasama ng mga subsystem tulad ng ipinakita sa block diagram. Ang sketch ng SerialServoControl para sa Arduino ay matatagpuan sa sumusunod na tutorial ng Sparkfun kasama ang isang kaugnay na demonstrasyon gamit ang OpenCV, Processing, isang Arduino, isang USB Camera, at isang Pan / Tilt Assembly upang subaybayan ang isang mukha ng tao. Gumagamit ang demo ng dalawang servos upang muling iposisyon ang camera upang mapanatili ang mukha na nakasentro sa frame ng video kahit na gumagalaw ang gumagamit tungkol sa silid. Halimbawa ng code sa C #, tingnan ang GitHub repository para sa video ng CamBot.

Hakbang 11: I-hack ang Planet

Kung nasisiyahan ka sa Instrucable na ito at nais na magkaroon ng isang kahon ng mga proyekto ng electronics at computer tech na tulad nito na naihatid mismo sa iyong mailbox bawat buwan, mangyaring sumali sa amin sa pamamagitan ng PAG-subscribe SA DITO.

Abutin at ibahagi ang iyong tagumpay sa mga komento sa ibaba o sa Pahina ng HackerBoxes Facebook. Tiyak na ipaalam sa amin kung mayroon kang anumang mga katanungan o kailangan ng tulong sa anumang bagay. Salamat sa pagiging bahagi ng HackerBoxes. Mangyaring panatilihin ang iyong mga mungkahi at puna darating. Ang mga HackerBox ay IYONG mga kahon. Gumawa tayo ng isang bagay na mahusay!

Inirerekumendang: