Satura rādītājs:

Rokas kameras stabilizators: 13 soļi (ar attēliem)
Rokas kameras stabilizators: 13 soļi (ar attēliem)

Video: Rokas kameras stabilizators: 13 soļi (ar attēliem)

Video: Rokas kameras stabilizators: 13 soļi (ar attēliem)
Video: 2023. gada skaistākā kamera, labākais objektīvs un lielākais feils - TOP 2023 2024, Jūlijs
Anonim
Rokas kameras stabilizators
Rokas kameras stabilizators

Ievads

Šis ir ceļvedis, lai izveidotu 3 asu rokas kameras stabilizācijas ierīci GoPro, izmantojot Digilent Zybo Zynq-7000 izstrādes padomi. Šis projekts tika izstrādāts CPE reālā laika operētājsistēmu klasei (CPE 439). Stabilizators izmanto trīs servoservisus un IMU, lai koriģētu lietotāja kustības, lai saglabātu kameras līmeni.

Projektam nepieciešamās detaļas

  • Digilent Zybo Zynq-7000 attīstības padome
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB servo (iegādājieties 180 grādu kustību vai programmu no 90 līdz 180 grādiem)
  • 1 HiTec HS-5685MH servo (iegādājieties 180 grādu kustību vai programmu no 90 līdz 180 grādiem)
  • 2 standarta servo kronšteini
  • 1 Maizes dēlis
  • 15 džemperu vadi no vīriešiem līdz vīriešiem
  • 4 džemperi no vīriešiem līdz sievietēm
  • Karstā līme
  • Satvēriens vai rokturis
  • 5 mm diametra koka dībelis
  • GoPro vai cita kamera un montāžas aparatūra
  • Barošanas avots, kas spēj izvadīt 5 V.
  • Piekļuve 3D printerim

1. darbība: Vivado aparatūras iestatīšana

Vivado aparatūras iestatīšana
Vivado aparatūras iestatīšana

Sāksim ar projekta pamatā esošā bloka dizaina izveidi.

  1. Atveriet Vivado 2016.2, noklikšķiniet uz ikonas "Izveidot jaunu projektu" un pēc tam uz "Tālāk>".
  2. Nosauciet savu projektu un noklikšķiniet uz "Tālāk>".
  3. Izvēlieties RTL projektu un noklikšķiniet uz "Tālāk>".
  4. Ierakstiet meklēšanas joslā xc7z010clg400-1 un pēc tam atlasiet daļu un nospiediet "Tālāk>" un "Pabeigt".

2. darbība. Bloku dizaina iestatīšana

Tagad mēs sāksim ģenerēt bloka dizainu, pievienojot un iestatot Zynq IP bloku.

  1. Kreisā paneļa sadaļā IP integrētājs noklikšķiniet uz "Izveidot bloku dizainu" un pēc tam noklikšķiniet uz "Labi".
  2. Ar peles labo pogu noklikšķiniet uz cilnes "Diagramma" un izvēlieties "Pievienot IP …".
  3. Ierakstiet “ZYNQ7 Processing System” un noklikšķiniet uz atlases.
  4. Veiciet dubultklikšķi uz parādītā Zynq bloka.
  5. Noklikšķiniet uz "Importēt XPS iestatījumus" un importējiet nodrošināto "ZYBO_zynq_def.xml" failu.
  6. Dodieties uz "MIO Configuration" un izvēlieties "Application Processor Unit" un iespējojiet taimeri 0 un Watchdog taimeri.
  7. Tajā pašā cilnē sadaļā "I/O perifērijas ierīces" atlasiet ENET 0 (un mainiet nolaižamo izvēlni uz "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Sadaļā "GPIO" pārbaudiet GPIO MIO, ENET Reset, USB Reset un I2C Reset.
  9. Tagad dodieties uz "Pulksteņa konfigurācija". Sadaļā PL Fabric Clocks atlasiet FCLK_CLK0. Pēc tam noklikšķiniet uz "Labi".

3. darbība: izveidojiet pielāgotu PWM IP bloku

Šis IP bloks ļauj padomei nosūtīt PWM signālu, lai kontrolētu servo kustību. Darbs lielā mērā balstījās uz Digitronix Nepal apmācību, kas atrodama šeit. Tika pievienota loģika, lai palēninātu pulksteņa darbību, tāpēc pulss tika izvadīts pareizajā ātrumā. Bloks ņem skaitli no 0 līdz 180 un pārvērš to par impulsu no 750-2150 lietošanasc.

  1. Tagad cilnē Rīki augšējā kreisajā stūrī noklikšķiniet uz "Izveidot un pakot IP …" un noklikšķiniet uz Tālāk.
  2. Pēc tam atlasiet “Izveidot jaunu AXI4 perifēriju” un noklikšķiniet uz Tālāk.
  3. Nosauciet savu PWM IP bloku (mēs to nosaucām par pwm_core) un noklikšķiniet uz Tālāk un pēc tam noklikšķiniet uz Tālāk arī nākamajā lapā.
  4. Tagad noklikšķiniet uz "Rediģēt IP" un noklikšķiniet uz Pabeigt. Tas atvērs jaunu logu pwm bloka rediģēšanai.
  5. Cilnē "Avoti" un sadaļā "Dizaina avoti" izvērsiet 'pwm_core_v1_0' (aizstājiet pwm_core ar savu vārdu) un atveriet failu, kas kļūst redzams.
  6. Kopējiet un ielīmējiet kodu, kas norādīts sadaļā “pwm_core_v1_0_S00_AXI.v” zip failā projekta apakšā. Ctrl + Shift + R un aizstājiet “pwm_core” ar savu vārdu IP blokam.
  7. Pēc tam atveriet vārdu _v1_0 un nokopējiet norādīto kodu failā “pwm_core_v1_0.v”. Ctrl + Shift + R un aizstājiet “pwm_core” ar nosaukumu.
  8. Tagad dodieties uz cilni “Pakotnes IP - nosaukums” un atlasiet “Pielāgošanas parametri”.
  9. Šajā cilnē augšpusē būs dzeltena josla ar saistītu tekstu. Izvēlieties šo, un lodziņā parādīsies "Slēptie parametri".
  10. Tagad dodieties uz "Pielāgošanas GUI" un ar peles labo pogu noklikšķiniet uz Pwm Counter Max un izvēlieties "Edit Parameter …".
  11. Atzīmējiet izvēles rūtiņas "Redzams pielāgošanas lietotāja saskarnē" un "Norādīt diapazonu".
  12. Mainiet nolaižamo izvēlni "Tips:" uz Veselu skaitļu diapazons un iestatiet minimālo vērtību 0 un maksimālo vērtību 65535 un atzīmējiet izvēles rūtiņu "Rādīt diapazonu". Tagad noklikšķiniet uz Labi.
  13. Velciet Pwm Counter Max zem koka “Page 0”. Tagad dodieties uz "Pārskatīšana un pakotne" un noklikšķiniet uz pogas "Pārpakot IP".

4. darbība: pievienojiet dizainam PWM IP bloku

Pievienojiet dizainam PWM IP bloku
Pievienojiet dizainam PWM IP bloku

Mēs pievienosim IP bloku bloka dizainam, lai ļautu lietotājam piekļūt PWM IP blokam caur procesoru.

  1. Ar peles labo pogu noklikšķiniet uz diagrammas cilnes un noklikšķiniet uz "IP iestatījumi …". Dodieties uz cilni "Repozitorija pārvaldnieks".
  2. Noklikšķiniet uz zaļās pluszīmes pogas un atlasiet to. Tagad failu pārvaldniekā atrodiet ip_repo un pievienojiet to projektam. Pēc tam noklikšķiniet uz Lietot un pēc tam uz Labi.
  3. Ar peles labo pogu noklikšķiniet uz diagrammas cilnes un noklikšķiniet uz "Pievienot IP …". Ievadiet savu PWM IP bloka nosaukumu un atlasiet to.
  4. Ekrāna augšdaļā jābūt zaļai joslai, vispirms atlasiet “Palaist savienojuma automatizāciju” un noklikšķiniet uz Labi. Pēc tam noklikšķiniet uz "Palaist bloķēšanas automatizāciju" un noklikšķiniet uz Labi.
  5. Veiciet dubultklikšķi uz PWM bloka un mainiet Pwm Counter Max uz 1024 no 128.
  6. Novietojiet peles kursoru virs PWM0 PWM blokā. Jābūt nelielam zīmuļam, kas parādās, kad to darāt. Ar peles labo pogu noklikšķiniet un atlasiet “Izveidot portu…” un, kad tiek atvērts logs, noklikšķiniet uz Labi. Tādējādi tiek izveidots ārējs ports signāla pārsūtīšanai.
  7. Atkārtojiet 6. darbību arī PWM1 un PWM2.
  8. Sānjoslā atrodiet mazo apaļo dubultās bultiņas ikonu un noklikšķiniet uz tās. Tas atjaunos izkārtojumu, un jūsu bloka dizainam vajadzētu izskatīties kā attēlā iepriekš.

5. darbība: konfigurējiet HDL iesaiņojumu un iestatiet ierobežojumu failu

Konfigurējiet HDL iesaiņojumu un iestatiet ierobežojumu failu
Konfigurējiet HDL iesaiņojumu un iestatiet ierobežojumu failu

Tagad mēs izveidosim augsta līmeņa dizainu mūsu bloka dizainam un pēc tam kartēsim PWM0, PWM1 un PWM2 uz Pmod tapām Zybo panelī.

  1. Dodieties uz cilni "Avoti". Ar peles labo pogu noklikšķiniet uz sava bloka dizaina faila sadaļā "Dizaina avoti" un noklikšķiniet uz "Izveidot HDL iesaiņojumu …". Atlasiet “Kopēt ģenerēto iesaiņojumu, lai atļautu lietotāja labojumus” un noklikšķiniet uz Labi. Tas rada mūsu izveidotā bloka dizaina augsta līmeņa dizainu.
  2. Pmod, kuru mēs izvadīsim, ir JE.
  3. Sadaļā Fails atlasiet “Pievienot avotus…” un atlasiet “Pievienot vai izveidot ierobežojumus” un noklikšķiniet uz Tālāk.
  4. Noklikšķiniet uz Pievienot failus un atlasiet iekļauto failu "ZYBO_Master.xdc". Ja paskatīsities šajā failā, pamanīsit, ka viss ir nekomentēts, izņemot sešas "set_property" rindas zem "## Pmod Header JE". Jūs ievērosiet, ka PWM0, PWM1 un PWM2 ir argumenti šīm rindām. Tie tiek kartēti uz JE Pmod 1., 2. un 3. tapu.

6. darbība. Bitu plūsmas ģenerēšana

Pirms turpināt, mums jāģenerē bitu plūsma, lai aparatūras dizains tiktu eksportēts uz SDK.

  1. Sānjoslas sadaļā "Programma un atkļūdošana" atlasiet "Ģenerēt bitu plūsmu". Tas veiks sintēzi, pēc tam ieviešanu un pēc tam ģenerēs bitu plūsmu dizainam.
  2. Izlabojiet visas uznirstošās kļūdas, taču brīdinājumus parasti var ignorēt.
  3. Dodieties uz Fails-> Palaist SDK un noklikšķiniet uz Labi. Tādējādi tiks atvērts Xilinx SDK.

7. darbība. Projekta iestatīšana SDK

Šī daļa var būt nedaudz nomākta. Ja rodas šaubas, izveidojiet jaunu BSP un nomainiet veco. Tas mums ietaupīja virkni atkļūdošanas laika.

  1. Sāciet, lejupielādējot jaunāko FreeRTOS versiju šeit.
  2. Izvelciet visu no FreeRTOS lejupielādes un importēšanas SDK, noklikšķinot uz Fails-> Importēt, un sadaļā “Vispārīgi” noklikšķiniet uz “Esošie projekti darbvietā”, pēc tam noklikšķiniet uz Tālāk.
  3. Dodieties uz FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 mapē FreeRTOS. Importēt tikai “RTOSDemo” no šīs vietas.
  4. Tagad ģenerējiet Board Support Package (BSP), noklikšķinot uz File-> New Board Support Package.
  5. Atlasiet “ps7_cortexa9_0” un atzīmējiet “lwip141” un noklikšķiniet uz Labi.
  6. Ar peles labo pogu noklikšķiniet uz RTOSDemo zilās mapes un atlasiet “Projektu atsauces”.
  7. Noņemiet atzīmi no "RTOSDemo_bsp" un pārbaudiet tikko izveidoto jauno BSP.

8. darbība: FreeRTOS koda izmaiņas

Mūsu sniegto kodu var sadalīt 7 dažādos failos. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h un iic_imu.h. Kods iic_main_thread.c ir pielāgots no Kris Winer bibliotēkas, kas atrodama šeit. Mēs galvenokārt pārveidojām viņa kodu, lai iekļautu uzdevumus un padarītu to darbu ar Zybo dēli. Mēs arī pievienojām funkcijas kameras orientācijas korekcijas aprēķināšanai. Mēs esam atstājuši vairākus drukas paziņojumus, kas ir noderīgi atkļūdošanai. Lielākā daļa no tiem ir komentēti, bet, ja jūtat vajadzību, varat tos komentēt.

  1. Vienkāršākais veids, kā modificēt failu main.c, ir aizstāt kodu ar nokopētu kodu no mūsu iekļautā faila main.c.
  2. Lai izveidotu jaunu failu, ar peles labo pogu noklikšķiniet uz mapes src zem RTOSDemo un atlasiet C Avota fails. Piešķiriet šim failam nosaukumu "iic_main_thread.c".
  3. Kopējiet kodu no iekļautās "iic_main_thread.c" un ielīmējiet to jaunizveidotajā failā.
  4. Atkārtojiet 2. un 3. darbību ar atlikušajiem failiem.
  5. nepieciešama saistīšanas instrukcija gcc. Lai to pievienotu būvēšanas ceļam, ar peles labo pogu noklikšķiniet uz RTOSDemo un atlasiet “C/C ++ būvēšanas iestatījumi”.
  6. Tiks atvērts jauns logs. Dodieties uz ARM v7 gcc linker-> Bibliotēkas. Augšējā labajā stūrī atlasiet nelielu pievienošanas failu un ierakstiet "m". Tas projektā ietvers matemātikas bibliotēku.
  7. Izveidojiet projektu ar Ctrl + B, lai apstiprinātu, ka viss darbojas. Pārbaudiet ģenerētos brīdinājumus, taču varat tos ignorēt.
  8. Ir dažas vietas, kurās būs jāveic izmaiņas, galvenokārt jūsu pašreizējās atrašanās vietas magnētiskā deklinācija. Kā to mainīt, mēs paskaidrosim apmācības kalibrēšanas daļā.

9. darbība: 3D drukāšana stabilizatoram

3D druka stabilizatoram
3D druka stabilizatoram

Šim projektam jums ir jāizdrukā 3D daļas. Iespējams, var iegādāties detaļas, kuru izmēri/izmēri ir līdzīgi mūsu drukātajām detaļām.

  1. Izmantojiet pievienotos failus, lai izdrukātu GoPro roku un turēšanas kronšteinu.
  2. . Stl failam jāpievieno sastatnes.
  3. Apgrieziet/notīriet lieko sastatņu daļas pēc drukāšanas.
  4. Ja vēlaties, koka dībeli var aizstāt ar 3D drukātu daļu.

10. solis: detaļu salikšana

Detaļu salikšana
Detaļu salikšana

Stabilizatora montāžai ir vairākas daļas. Iegādātajiem kronšteiniem ir 4 pašvītņojošas skrūves un 4 skrūves ar uzgriežņiem. Tā kā ir 3 servo, viens no servo ragiem ir iepriekš jāpiesit, lai 2 skrūves varētu iziet cauri.

  1. Lodējiet 8 tapas uz IMU sadalītāja, 4 katrā pusē.
  2. IMU ir piestiprināts pie 3D drukātā turētāja kronšteina GoPro kronšteina centrā.
  3. Novietojiet kronšteinu tā, lai servo stiprinājuma caurumi atrastos kreisajā pusē. Novietojiet IMU uz sev tuvākās malas, piespraudēm nokarājoties no malas. Pēc tam novietojiet GoPro stiprinājumu virs IMU, uzlīmējot IMU un stiprinājumu uz kronšteina.
  4. Pievienojiet HS-5485HB pie servokronšteina, kas ir integrēts 3D drukātajā rokā.
  5. Ieskrūvējiet GoPro kronšteinu pie rokas piestiprinātajā servo, pārliecinoties, ka servo ir iestatīts tā, lai tas atrastos kustības diapazona vidū.
  6. Pēc tam piestipriniet servo HS-5685MH pie servo kronšteina. Pēc tam pieskarieties servo ragam ar vienu no skrūvēm. Tagad piestipriniet servo pie pēdējā servo kronšteina apakšas.
  7. Tagad pievienojiet pēdējo servo kronšteinam, kurā ir ieskrūvēts servo HS-5685MH. Pēc tam ieskrūvējiet roku šajā servo, pārliecinoties, ka roka ir pieskrūvēta, lai tā varētu pārvietoties par 90 grādiem katrā virzienā.
  8. Lai pabeigtu kardāna konstrukciju, pievienojiet nelielu koka dībeļa gabalu, lai izveidotu savienojumu starp GoPro kronšteinu un 3D drukāto roku. Tagad esat samontējis stabilizatoru.
  9. Visbeidzot, jūs varat pievienot rokturi, kas savienots ar apakšējo servo kronšteinu.

11. darbība: Zybo savienošana ar stabilizatoru

Zybo savienošana ar stabilizatoru
Zybo savienošana ar stabilizatoru

To darot, ir jāievēro dažas lietas. Jūs vēlaties pārliecināties, ka 5 V strāvas avots nekad neietilpst Zybo panelī, jo tas radītu problēmas ar plāksni. Noteikti vēlreiz pārbaudiet džemperus, lai pārliecinātos, ka vadi netiek pārslēgti.

  1. Lai piestiprinātu Zybo pie stabilizatora, jums būs nepieciešami 15 džemperi no vīriešu līdz vīriešiem un 4 vīriešu un sieviešu džemperi.
  2. Vispirms pievienojiet divus džemperus 5V barošanas avotam gar maizes dēļa + un - sliedēm. Tie piegādās elektroenerģiju servos.
  3. Pēc tam pievienojiet 3 džemperu pārus maizes dēļa + un - sliedēm. Tas būs spēks katram servo.
  4. Pievienojiet džemperu + un - otru galu katrā servos.
  5. Pievienojiet džemperi starp maizes dēļa sliedi un vienu no GND tapām uz Zybo JE Pmod (skatiet 5. darbības attēlu). Tas radīs kopīgu pamatu starp Zybo plati un barošanas bloku.
  6. Tālāk pievienojiet signāla vadu JE Pmod 1., 2. un 3. tapai. Piespraudiet 1 kartes pie apakšējā servo, piespraudiet 2 kartes pie servo, kas atrodas rokas galā, un piespraudiet 3 kartes pie vidējā servo.
  7. Pievienojiet 4 sieviešu vadus IMU sadalītāja GND, VDD, SDA un SCL tapām. GND un VDD tiek pievienoti GND un 3V3 uz JF tapām. Pievienojiet SDA tapu 8. tapai un SCL 7. tapai JF (skatiet 5. darbības attēlu).
  8. Visbeidzot, pievienojiet datoru pie plates, izmantojot mikro USB kabeli. Tas ļaus sazināties ar Uart un ieprogrammēt Zybo dēli.

12. solis: patiesa ziemeļu korekcija

Patiesa ziemeļu korekcija
Patiesa ziemeļu korekcija

Magnetometra kalibrēšana IMU ir svarīga pareizai ierīces darbībai. Magnētiskā deklinācija, kas koriģē magnētiskos ziemeļus uz patiesajiem ziemeļiem.

  1. Lai labotu atšķirību no magnētiskā un patiesā ziemeļu, jums jāizmanto divu pakalpojumu kombinācija - Google Maps un NOAA magnētiskā lauka kalkulators.
  2. Izmantojiet Google Maps, lai atrastu pašreizējās atrašanās vietas platumu un garumu.
  3. Paņemiet pašreizējo garumu un platumu un pievienojiet to magnētiskā lauka kalkulatoram.
  4. Tiek atgriezta magnētiskā deklinācija. Pievienojiet šo aprēķinu kodam "iic_main_thread.c" 378. rindā. Ja jūsu deklinācija ir uz austrumiem, atņemiet no pagrieziena vērtības, ja uz rietumiem, tad pievienojiet novirzes vērtībai.

*fotoattēls tika ņemts no Sparkfun MPU 9250 savienošanas rokasgrāmatas, kas atrodama šeit.

13. darbība: programmas palaišana

Programmas palaišana
Programmas palaišana

Mirklis, kuru esi gaidījis! Labākā projekta daļa ir redzēt tā darbību. Viena problēma, ko esam pamanījuši, ir tā, ka ir novirzes no IMU ziņotajām vērtībām. Zemas caurlaidības filtrs var palīdzēt izlabot šo novirzi, un, izmantojot magnetometru, paātrinājumu un žiroskopu kalibrēšanu, arī tiks novērsta šī novirze.

  1. Vispirms izveidojiet visu SDK, to var izdarīt, nospiežot Ctrl + B.
  2. Pārliecinieties, vai barošanas avots ir ieslēgts un iestatīts uz 5 V. Vēlreiz pārbaudiet, vai visi vadi nonāk savās vietās.
  3. Pēc tam, lai palaistu programmu, uzdevumjoslas augšējā centrā nospiediet zaļo trīsstūri.
  4. Kad programma darbojas, visi servos tiek atiestatīti 0 pozīcijās, tāpēc esiet gatavi iekārtas pārvietošanai. Tiklīdz programma tiek inicializēta, servos tiek atgriezta 90 grādu pozīcija.
  5. Tiks aktivizēta magnetometra kalibrēšanas funkcija, un norādījumi tiks izdrukāti uz UART termināli, kuram varat izveidot savienojumu, izmantojot sērijveida monitoru, piemēram, “špakteli” vai sērijas monitoru, kas iekļauts SDK.
  6. Pēc kalibrēšanas ierīce būs jāpārvieto 8. attēlā apmēram 10 sekundes. Šo darbību var noņemt, komentējot "iic_main_thread.c" 273. rindu. Ja jūs to komentējat, jums jāatceļ 323. - 325. rindas "iic_main_thread.c". Sākotnēji šīs vērtības tika apkopotas no magnetometra kalibrēšanas iepriekš un pēc tam pievienotas kā vērtības.
  7. Pēc kalibrēšanas stabilizācijas kods tiks inicializēts, un ierīce saglabās kameru stabilu.

Ieteicams: