Talaan ng mga Nilalaman:

Handheld Camera Stabilizer: 13 Mga Hakbang (na may Mga Larawan)
Handheld Camera Stabilizer: 13 Mga Hakbang (na may Mga Larawan)

Video: Handheld Camera Stabilizer: 13 Mga Hakbang (na may Mga Larawan)

Video: Handheld Camera Stabilizer: 13 Mga Hakbang (na may Mga Larawan)
Video: Here's why the DJI OM4 is the BEST gimbal for YouTube 2024, Hulyo
Anonim
Tagapagtatag ng Kamay ng Kamay
Tagapagtatag ng Kamay ng Kamay

Panimula

Ito ay isang gabay para sa paglikha ng isang 3-axis handig ng camera na pagpapapatatag ng rig para sa isang GoPro gamit ang isang Digilent Zybo Zynq-7000 Development Board. Ang proyektong ito ay binuo para sa klase ng CPE Real-Time Operating Systems (CPE 439). Gumagamit ang stabilizer ng tatlong servos at isang IMU upang maitama ang galaw ng gumagamit upang mapanatili ang antas ng camera.

Mga Kinakailangan na Bahagi para sa Project

  • Digilent Zybo Zynq-7000 Development Board
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servos (bumili ng 180 degree na galaw o programa mula 90 hanggang 180 degree)
  • 1 HiTec HS-5685MH Servo (bumili ng 180 degree na galaw o programa mula 90 hanggang 180 degree)
  • 2 Karaniwang Mga Servo Bracket
  • 1 Breadboard
  • 15 male-to-male wum jumper
  • 4 na male-to-female jumper wires
  • Mainit na Pandikit
  • Grip o hawakan
  • 5 mm diameter na kahoy na dowel
  • GoPro o iba pang camera at mounting hardware
  • Ang supply ng kuryente na may kakayahang maglabas ng 5V.
  • Pag-access sa 3D Printer

Hakbang 1: Pag-setup ng Vivado Hardware

Pag-setup ng Vivado Hardware
Pag-setup ng Vivado Hardware

Magsimula tayo sa paglikha ng pinagbabatayan na disenyo ng block para sa proyekto.

  1. Buksan ang Vivado 2016.2, i-click ang icon na "Lumikha ng Bagong Project", at i-click ang "Susunod>".
  2. Pangalanan ang iyong proyekto at i-click ang "Susunod>".
  3. Piliin ang proyekto ng RTL at pindutin ang "Susunod>".
  4. Mag-type sa search bar xc7z010clg400-1 at pagkatapos ay piliin ang bahagi at pindutin ang "Susunod>" at "Tapusin".

Hakbang 2: Pag-set up ng Disenyo ng Block

Magsisimula na kaming makabuo ng disenyo ng block sa pamamagitan ng pagdaragdag at pag-set up ng Zynq IP Block.

  1. Sa kaliwang panel, sa ilalim ng IP Integrator, I-click ang "Lumikha ng Disenyo ng I-block" at pagkatapos ay i-click ang "OK".
  2. Mag-right click sa tab na "Diagram" at piliin ang "Magdagdag ng IP …".
  3. I-type ang "ZYNQ7 Processing System" at i-click ang pagpipilian.
  4. Mag-double click sa lilitaw na Zynq block.
  5. I-click ang "I-import ang Mga Setting ng XPS" at i-import ang ibinigay na "ZYBO_zynq_def.xml" na file.
  6. Pumunta sa "MIO Configuration" at piliin ang "Application Processor Unit" at paganahin ang timer ng Timer 0 at Watchdog.
  7. Sa parehong tab, sa ilalim ng "I / O Peripherals", piliin ang ENET 0 (at palitan ang dropdown menu sa "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Sa ilalim ng "GPIO", suriin ang GPIO MIO, ENET Reset, USB Reset, at I2C Reset.
  9. Ngayon mag-navigate sa "Clock Configuration". Piliin ang FCLK_CLK0 sa ilalim ng PL Fabric Clocks. Pagkatapos, Mag-click sa "OK".

Hakbang 3: Lumikha ng Pasadyang PWM IP Block

Pinapayagan ng IP block na ito ang board na magpadala ng isang signal ng PWM upang makontrol ang paggalaw ng mga servos. Ang gawain ay batay sa tutorial ng Digitronix Nepal, na matatagpuan dito. Ang lohika ay idinagdag upang mapabagal ang orasan kaya't ang pulso ay naglalabas sa tamang rate. Ang bloke ay tumatagal ng isang numero mula 0 hanggang 180 at binago ito sa isang pulso mula 750-2150 usec.

  1. Ngayon, sa ilalim ng tab na Mga Tool malapit sa tuktok na kaliwang sulok, i-click ang "Lumikha at Package IP …" at pindutin ang Susunod.
  2. Pagkatapos piliin ang "Lumikha ng isang bagong AXI4 paligid" at pindutin ang Susunod.
  3. Pangalanan ang iyong PWM IP block (pinangalanan namin ito pwm_core) at i-click ang Susunod at pagkatapos ay i-click ang Susunod sa susunod na pahina din.
  4. Ngayon i-click ang "I-edit ang IP" at pindutin ang Tapusin. Bubuksan nito ang isang bagong window upang mai-edit ang pwm block.
  5. Sa tab na "Mga Pinagmulan" at sa ilalim ng "Mga Pinagmulan ng Disenyo", palawakin ang 'pwm_core_v1_0' (palitan ang pwm_core ng iyong pangalan) at buksan ang file na magiging nakikita.
  6. Kopyahin at i-paste ang code na ibinigay sa ilalim ng 'pwm_core_v1_0_S00_AXI.v' sa zip file sa ilalim ng proyekto. Ctrl + Shift + R at palitan ang 'pwm_core' ng iyong pangalan para sa ip block.
  7. Susunod na buksan ang 'pangalan _v1_0' at kopyahin ang ibinigay na code sa file na 'pwm_core_v1_0.v'. Ctrl + Shift + R at palitan ang 'pwm_core' ng pangalan.
  8. Ngayon mag-navigate sa tab na 'Package IP - pangalan' at piliin ang "Mga Parameter sa Pagpapasadya".
  9. Sa tab na ito magkakaroon ng isang dilaw na bar sa tuktok na na-link ang teksto. Piliin ito, at ang "Nakatagong Mga Parameter" ay lalabas sa kahon.
  10. Pumunta ngayon sa "Customization GUI" at mag-right click sa Pwm Counter Max piliin ang "I-edit ang Parameter …".
  11. Lagyan ng tsek ang mga kahon na "Nakikita sa Pagpapasadya GUI" at "Tukuyin ang Saklaw" na mga kahon.
  12. Baguhin ang drop-down na menu na "Type:" sa Saklaw ng mga integer at itakda ang minimum sa 0 at maximum hanggang 65535 at lagyan ng tsek ang kahon na "Ipakita ang Saklaw". Ngayon i-click ang OK.
  13. I-drag ang Pwm Counter Max sa ilalim ng 'Page 0' Tree. Pumunta ngayon sa "Suriin at Package" at i-click ang pindutang "Re-Package IP".

Hakbang 4: Magdagdag ng PWM IP Block sa Disenyo

Magdagdag ng PWM IP Block sa Disenyo
Magdagdag ng PWM IP Block sa Disenyo

Dadaragdag namin ang IP block sa disenyo ng block upang payagan ang gumagamit na ma-access ang PWM IP block sa pamamagitan ng processor.

  1. Mag-right click sa tab na diagram at i-click ang "Mga Setting ng IP …". Mag-navigate sa tab na "Repository Manager".
  2. I-click ang berdeng plus button at piliin ito. Ngayon hanapin ang ip_repo sa File Manager at idagdag iyon sa proyekto. Pagkatapos Pindutin ang Ilapat at pagkatapos ay OK.
  3. Mag-right click sa tab na diagram at i-click ang "Magdagdag ng IP…". I-type ang iyong PWM IP block name at piliin ito.
  4. Dapat mayroong isang berdeng bar sa tuktok ng screen, piliin muna ang "Run Connection Automation" at i-click ang OK. Pagkatapos i-click ang "Run Block Automation" at i-click ang OK.
  5. I-double click sa PWM block at palitan ang Pwm Counter Max sa 1024 mula 128.
  6. I-hover ang iyong mouse pointer sa PWM0 sa PWM block. Dapat mayroong isang maliit na lapis na lalabas kapag ginawa mo. Mag-right click at piliin ang "Lumikha ng Port…" at i-click ang OK kapag bumukas ang isang window. Lumilikha ito ng isang panlabas na port para maipasa ang signal.
  7. Ulitin ang hakbang 6 para sa PWM1 at PWM2 din.
  8. Hanapin ang maliit na pabilog na doble na icon ng arrow sa sidebar at i-click iyon. Bubuhayin muli nito ang layout at ang iyong disenyo ng block ay dapat magmukhang larawan sa itaas.

Hakbang 5: I-configure ang HDL Wrapper at I-set Up ang Mga Constraints File

I-configure ang HDL Wrapper at I-set ang Mga Constraints File
I-configure ang HDL Wrapper at I-set ang Mga Constraints File

Lilikha na kami ngayon ng Mataas na Antas na Disenyo para sa aming Block Design at pagkatapos ay mapa ang PWM0, PWM1, at PWM2 sa mga Pmod na pin sa Zybo board.

  1. Pumunta sa tab na "Mga Pinagmulan". Mag-right click sa iyong file ng disenyo ng block sa ilalim ng "Mga Pinagmulan ng Disenyo" at i-click ang "Lumikha ng HDL Wrapper …". Piliin ang "Kopyahin ang nabuong pambalot upang payagan ang mga pag-edit ng gumagamit" at i-click ang OK. Bumubuo ito ng Disenyo ng Mataas na Antas para sa Disenyo ng Block na nilikha namin.
  2. Ang Pmod na ilalabas namin ay ang JE.
  3. Sa ilalim ng File, piliin ang "Magdagdag ng Mga Pinagmulan …" at piliin ang "Magdagdag o lumikha ng mga hadlang" at i-click ang Susunod.
  4. I-click ang magdagdag ng mga file at piliin ang kasama na file na "ZYBO_Master.xdc". Kung titingnan mo ang file na ito mapapansin mo ang lahat ay hindi kumpleto maliban sa anim na linya na "set_property" sa ilalim ng "## Pmod Header JE". Mapapansin mo na ang PWM0, PWM1, at PWM2 ang mga argumento para sa mga linyang ito. Mapa ang mga ito sa Pin 1, Pin 2, at Pin 3 ng JE Pmod.

Hakbang 6: Bumubuo ng Bitstream

Kailangan nating likhain ang bitstream para ma-export ng disenyo ng hardware sa SDK bago kami magpatuloy.

  1. Sa ilalim ng "Program at Debug" sa sidebar, piliin ang "Bumuo ng Bitstream". Patakbuhin nito ang pagbubuo, pagkatapos ay ipatupad, at pagkatapos ay bumuo ng bitstream para sa disenyo.
  2. Iwasto ang anumang mga error na nag-pop up, ngunit ang mga babala sa pangkalahatan ay maaaring balewalain.
  3. Pumunta sa File-> Ilunsad ang SDK at i-click ang OK. Bubuksan nito ang Xilinx SDK.

Hakbang 7: Pagse-set up ng Proyekto sa SDK

Ang bahaging ito ay maaaring maging isang medyo nakakabigo. Kapag may pag-aalinlangan, gumawa ng isang bagong BSP at palitan ang luma. Natipid ito sa amin ng isang pangkat ng oras ng pag-debug.

  1. Magsimula sa pamamagitan ng pag-download ng pinakabagong bersyon ng FreeRTOS dito.
  2. I-extract ang lahat mula sa pag-download at pag-import ng FreeRTOS sa SDK sa pamamagitan ng Pag-click sa File-> I-import, at sa ilalim ng "Pangkalahatan" i-click ang "Mga Umiiral na Mga Proyekto Sa Workspace" pagkatapos ay i-click ang Susunod.
  3. Pumunta sa "FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702" sa loob ng folder na FreeRTOS. I-import lamang ang "RTOSDemo" mula sa lokasyon na ito.
  4. Bumuo ngayon ng isang Board Support Package (BSP) sa pamamagitan ng pag-click sa File-> Bagong Suporta sa Lupon.
  5. Piliin ang "ps7_cortexa9_0" at suriin ang "lwip141" at i-click ang OK.
  6. Mag-right click sa RTOSDemo blue folder at piliin ang "Mga Sanggunian sa Proyekto".
  7. Alisan ng check ang "RTOSDemo_bsp" at suriin ang bagong BSP na nilikha lamang namin.

Hakbang 8: Mga Pagbabago ng Code ng FreeRTOS

Ang code na ibinibigay namin ay maaaring paghiwalayin sa 7 magkakaibang mga file. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h at iic_imu.h. Ang code sa iic_main_thread.c ay inangkop mula sa silid-aklatan ng Kris Winer's, na matatagpuan dito. Pangunahin naming binago ang kanyang code upang isama ang mga gawain at gawin itong gumana sa Zybo board. Nagdagdag din kami ng mga pag-andar para sa pagkalkula ng pagwawasto ng oryentasyon ng kamera. Naiwan kami sa maraming naka-print na pahayag na kapaki-pakinabang para sa pag-debug. Karamihan sa mga ito ay nagkomento ngunit kung sa palagay mo ang pangangailangan ay maaari mong i-uncment ang mga ito.

  1. Ang pinakamadaling paraan upang baguhin ang main.c file ay upang palitan ang code ng nakopya na code mula sa aming kasama na main.c file.
  2. Upang lumikha ng isang bagong file, mag-right click sa src folder sa ilalim ng RTOSDemo at piliin ang C Source File. Pangalanan ang file na ito na "iic_main_thread.c".
  3. Kopyahin ang code mula sa isinamang "iic_main_thread.c" at i-paste ito sa iyong bagong nilikha na file.
  4. Ulitin ang mga hakbang 2 at 3 sa natitirang mga file.
  5. nangangailangan ng isang tagubilin sa pag-link sa gcc. Upang idagdag ito sa build path na pag-click sa kanan sa RTOSDemo at piliin ang "C / C ++ Build Setting".
  6. Magbubukas ang isang bagong window. Mag-navigate sa ARM v7 gcc linker-> Mga Aklatan. Piliin ang maliit na file na idagdag sa kanang sulok sa itaas at i-type ang "m". Isasama rito ang library ng matematika sa proyekto.
  7. Bumuo ng proyekto gamit ang Ctrl + B upang kumpirmahing gumagana ang lahat. Suriin ang mga babalang nabuo ngunit maaari mo itong balewalain.
  8. Mayroong ilang mga lugar na kakailanganin ng pagbabago, higit sa lahat ang pagtanggi ng magnetiko ng iyong kasalukuyang lokasyon. Ipapaliwanag namin kung paano baguhin ito sa bahagi ng pagkakalibrate ng tutorial.

Hakbang 9: Pag-print sa 3D para sa Stabilizer

3D Pagpi-print para sa Stabilizer
3D Pagpi-print para sa Stabilizer

Kailangan mong mag-print ng 3D ng ilang mga bahagi para sa proyektong ito. Maaaring bumili ang isang tao ng mga bahagi na may katulad na sukat / laki sa aming mga naka-print na bahagi.

  1. Gamitin ang mga file na ibinigay upang mai-print ang braso at may hawak na bracket para sa GoPro.
  2. Kailangan mong magdagdag ng scaffold sa.stl file.
  3. Putulin / malinis na mga bahagi ng labis na scaffolding sa sandaling nai-print.
  4. Maaari mong palitan ang kahoy na dowel ng isang naka-print na bahagi ng 3D kung nais mo.

Hakbang 10: Pagtitipon ng Mga Bahagi

Pagtitipon ng Mga Bahagi
Pagtitipon ng Mga Bahagi

Ang mga ay maraming mga bahagi sa assembling ang pampatatag. Ang mga biniling braket ay may 4 na self-tapping screws at 4 bolts na may mga nut. Dahil mayroong 3 servos, ang isa sa mga sungay ng servo ay kailangang paunang i-tap upang payagan ang 2 ng mga bolt.

  1. Solder 8 pin papunta sa IMU breakout, 4 sa bawat panig.
  2. Ang IMU ay nakakabit sa 3D naka-print na humahawak na bracket para sa GoPro sa gitna ng bracket.
  3. I-orient ang bracket upang ang mga butas ng mounting ng servo ay nasa iyong kaliwang bahagi. Ilagay ang IMU sa pinakamalapit na gilid sa iyo, kasama ang mga pin na nakasabit sa gilid. Pagkatapos, ilagay ang GoPro mount sa tuktok ng IMU, idikit ang IMU at ang mount sa lugar sa bracket.
  4. Maglakip ng isang HS-5485HB sa servo bracket na isinama sa naka-print na braso ng 3D.
  5. I-tornilyo ang bracket ng GoPro sa braso na nakakabit na servo, tinitiyak na ang servo ay nakatakda upang ito ay nasa gitna ng saklaw ng paggalaw nito.
  6. Susunod, ikabit ang servo ng HS-5685MH sa isang bracket ng servo. Pagkatapos ay i-tap ang servo sungay gamit ang isa sa mga turnilyo. Ngayon ikabit ang servo sa ilalim ng huling bracket ng servo.
  7. Ikabit ngayon ang huling servo sa bracket na ang HS-5685MH servo ay naka-screw in. Pagkatapos ay i-tornilyo ang braso sa servo na ito, tiyakin na ang braso ay naka-screw sa gayon maaari itong ilipat 90 degree bawat paraan.
  8. Upang tapusin ang pagtatayo ng gimbal, magdagdag ng isang maliit na piraso ng kahoy na dowel upang kumonekta sa pagitan ng GoPro bracket at ng naka-print na braso ng 3D. Pinagsama mo na ngayon ang pampatatag.
  9. Panghuli, maaari kang magdagdag ng hawakan na konektado sa ilalim ng bracket ng servo.

Hakbang 11: Pagkonekta sa Zybo sa Stabilizer

Pagkonekta sa Zybo sa Stabilizer
Pagkonekta sa Zybo sa Stabilizer

Mayroong ilang mga bagay na dapat mag-ingat kapag ginagawa ito. Nais mong tiyakin na ang 5V mula sa power supply ay hindi kailanman pumapasok sa Zybo board, dahil ito ay hahantong sa mga problema sa board. Tiyaking i-double check ang iyong mga jumper upang kumpirmahing walang mga wire na inililipat.

  1. Upang ikabit ang Zybo sa stabilizer kakailanganin mo ng 15 lalaki sa mga lalaki na jumper at 4 na lalaki sa mga babaeng jumper.
  2. Una, ikonekta ang dalawang jumper sa iyong 5V power supply kasama ang + at - riles ng breadboard. Magbibigay ang mga ito ng lakas sa mga servo.
  3. Pagkatapos, ikonekta ang 3 pares ng mga jumper sa + at - daang-bakal ng breadboard. Ito ang magiging lakas para sa bawat isa sa mga servo.
  4. I-plug ang kabilang dulo ng + at - mga jumper sa bawat isa sa mga servo.
  5. Ikonekta ang isang lumulukso sa pagitan ng - riles ng breadboard at isa sa mga pin ng GND sa Zybo JE Pmod (Tingnan ang larawan ng Hakbang 5). Lilikha ito ng isang karaniwang batayan sa pagitan ng Zybo board at ng power supply.
  6. Susunod na ikonekta ang isang signal wire sa pin 1, pin 2, at pin 3 ng JE Pmod. I-pin ang 1 mga mapa sa ilalim ng servo, i-pin ang 2 mga mapa sa servo sa dulo ng braso, at i-pin ang 3 mga mapa sa gitnang servo.
  7. I-plug ang 4 na mga wires na babae sa mga pin ng GND, VDD, SDA at SCL ng breakout ng IMU. Ang GND at VDD ay naka-plug sa GND at 3V3 sa mga pin ng JF. I-plug in ang SDA pin sa pin 8 at SCL sa pin 7 sa JF (Tingnan ang larawan ng Hakbang 5).
  8. Panghuli, ikonekta ang computer sa board gamit ang isang micro usb cable. Papayagan nito ang komunikasyon ng uart at papayagan kang i-program ang Zybo board.

Hakbang 12: Totoong Pagwawasto sa Hilaga

Totoong Pagwawasto sa Hilaga
Totoong Pagwawasto sa Hilaga

Ang pagkakalibrate ng magnetometer sa IMU ay mahalaga sa wastong pagpapatakbo ng aparato. Ang magnetikong pagtanggi, na nagtatama ng magnetikong hilaga sa totoong hilaga.

  1. Upang maitama ang pagkakaiba mula sa magnetiko at totoong hilaga, kailangan mong gumamit ng isang kumbinasyon ng dalawang serbisyo, ang Google Maps at calculator ng patlang na magnetiko ng NOAA.
  2. Gumamit ng Google Maps upang mahanap ang iyong latitude at longitude ng iyong kasalukuyang lokasyon.
  3. Dalhin ang iyong kasalukuyang longitude at latitude at i-plug ito sa calculator ng magnetic field.
  4. Ang ibinalik ay ang pagtanggi ng magnetiko. I-plug ang pagkalkula na ito sa code sa linya 378 ng "iic_main_thread.c". Kung ang iyong pagtanggi ay nasa silangan, pagkatapos ay ibawas mula sa halagang yaw, kung kanluranin pagkatapos ay idagdag sa halagang yaw.

* Kuha ang larawan mula sa gabay sa hookup ng MPU 9250 ng Sparkfun, na matatagpuan dito.

Hakbang 13: Pagpapatakbo ng Programa

Pagpapatakbo ng Program
Pagpapatakbo ng Program

Ang sandaling hinihintay mo pa! Ang pinakamagandang bahagi ng proyekto ay nakikita itong gumagana. Ang isang problema na napansin namin ay ang pagkakaroon ng pag-anod mula sa mga halagang iniulat mula sa IMU. Ang isang low-pass filter ay maaaring makatulong na maitama ang naaanod na ito, at ang pagkalikot sa magnetometer, acceleration at gyro calibrations ay makakatulong din na maitama ang naaanod na ito.

  1. Una, buuin ang lahat sa SDK, magagawa ito sa pamamagitan ng pagpindot sa Ctrl + B.
  2. Tiyaking naka-on ang power supply at nakatakda sa 5V. I-double check na ang lahat ng mga wire ay pupunta sa kanilang mga tamang lugar.
  3. Pagkatapos, upang patakbuhin ang programa, pindutin ang berdeng tatsulok sa itaas na gitna ng taskbar.
  4. Kapag tumatakbo ang programa, ang lahat ng servos ay lahat ay i-reset sa kanilang 0 posisyon, kaya maging handa para sa paglipat ng kalesa. Sa sandaling mapasimulan ang programa, ang servos ay pagkatapos ay bumalik sa kanilang mga posisyon sa 90 degree.
  5. Tatakbo ang isang function ng magnetometer calibration at mai-print ang mga direksyon sa terminal ng UART, kung saan maaari kang kumonekta sa pamamagitan ng isang serial monitor tulad ng 'masilya' o serial monitor na ibinigay sa SDK.
  6. Ang pagkakalibrate ay magpapalipat sa iyo ng aparato sa isang pigura 8 sa loob ng 10 segundo. Maaari mong alisin ang hakbang na ito sa pamamagitan ng pagbibigay puna sa linya 273 ng "iic_main_thread.c". Kung bibigyan mo ito ng puna kailangan mong i-uncomment ang mga linya 323 - 325 "iic_main_thread.c". Ang mga halagang ito ay paunang natipon mula sa pagkakalibrate ng magnetometer sa itaas at pagkatapos ay naka-plug in bilang mga halaga.
  7. Matapos ang pagkakalibrate ang pagpapatatag ng code ay magpapasimula at ang aparato ay panatilihing matatag ang camera.

Inirerekumendang: