Sadržaj:

Ručni stabilizator kamere: 13 koraka (sa slikama)
Ručni stabilizator kamere: 13 koraka (sa slikama)

Video: Ručni stabilizator kamere: 13 koraka (sa slikama)

Video: Ručni stabilizator kamere: 13 koraka (sa slikama)
Video: Разница Чечни с Дагестаном. 2024, Srpanj
Anonim
Ručni stabilizator kamere
Ručni stabilizator kamere

Uvod

Ovo je vodič za stvaranje troosne ručne stabilizacijske kamere za GoPro pomoću razvojne ploče Digilent Zybo Zynq-7000. Ovaj je projekt razvijen za klasu CPE operativnih sustava u stvarnom vremenu (CPE 439). Stabilizator koristi tri servo servera i IMU za ispravljanje kretanja korisnika kako bi kamera ostala u razini.

Dijelovi potrebni za projekt

  • Digilent Zybo Zynq-7000 razvojna ploča
  • Sparkfun IMU Breakout - MPU 9250
  • 2 servera HiTec HS-5485HB (kupite pokrete za 180 stupnjeva ili programirajte od 90 do 180 stupnjeva)
  • 1 servo HiTec HS-5685MH (kupite pokret od 180 stupnjeva ili program od 90 do 180 stupnjeva)
  • 2 standardna servo držača
  • 1 Oglasna ploča
  • 15 žica kratkospojnika muško-muško
  • 4 žice kratkospojnika muško-žensko
  • Vruće ljepilo
  • Drška ili ručka
  • Drveni tipla promjera 5 mm
  • GoPro ili drugi fotoaparat i montažni hardver
  • Napajanje sposobno za izlaz 5V.
  • Pristup 3D pisaču

Korak 1: Postavljanje hardvera Vivado

Postavljanje hardvera Vivado
Postavljanje hardvera Vivado

Počnimo s stvaranjem temeljnog blok dizajna za projekt.

  1. Otvorite Vivado 2016.2, kliknite ikonu "Izradi novi projekt", a zatim "Dalje>".
  2. Imenujte svoj projekt i kliknite "Dalje>".
  3. Odaberite RTL projekt i pritisnite "Dalje>".
  4. Upišite u traku za pretraživanje xc7z010clg400-1, a zatim odaberite dio i pritisnite "Dalje>" i "Završi".

Korak 2: Postavljanje dizajna bloka

Sada ćemo početi stvarati dizajn bloka dodavanjem i postavljanjem Zynq IP bloka.

  1. Na lijevoj ploči, pod IP integrator, kliknite "Kreiraj dizajn bloka", a zatim kliknite "U redu".
  2. Desnom tipkom miša kliknite karticu "Dijagram" i odaberite "Dodaj IP …".
  3. Upišite "ZYNQ7 Processing System" i kliknite odabir.
  4. Dvaput kliknite na Zynq blok koji se pojavi.
  5. Kliknite "Uvezi postavke XPS -a" i uvezite priloženu datoteku "ZYBO_zynq_def.xml".
  6. Idite na "MIO Configuration" i odaberite "Application Processor Unit" i omogućite Timer 0 i Watchdog timers.
  7. Na istoj kartici, pod "I/O periferija", odaberite ENET 0 (i promijenite padajući izbornik na "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. U odjeljku "GPIO" provjerite GPIO MIO, ENET resetiranje, USB resetiranje i I2C resetiranje.
  9. Sada idite na "Konfiguracija sata". Odaberite FCLK_CLK0 pod PL Satovi od tkanine. Zatim kliknite "U redu".

Korak 3: Izradite prilagođeni PWM IP blok

Ovaj IP blok omogućuje ploči da šalje PWM signal za kontrolu kretanja servomotora. Rad je uvelike temeljen na vodiču Digitronixa iz Nepala, koji se nalazi ovdje. Dodana je logika kako bi se usporio radni sat pa je puls izlazio ispravnom brzinom. Blok uzima broj od 0 do 180 i pretvara ga u impuls od 750-2150 usec.

  1. Sada na kartici Alati u gornjem lijevom kutu kliknite "Izradi i pakiraj IP …" i pritisnite Dalje.
  2. Zatim odaberite "Izradi novu perifernu opremu AXI4" i pritisnite Dalje.
  3. Imenujte svoj PWM IP blok (nazvali smo ga pwm_core) i kliknite Dalje, a zatim kliknite Dalje na sljedećoj stranici.
  4. Sada kliknite "Uredi IP" i pritisnite Završi. Ovo će otvoriti novi prozor za uređivanje pwm bloka.
  5. Na kartici "Izvori" i pod "Izvori dizajna" proširite "pwm_core_v1_0" (zamijenite pwm_core svojim imenom) i otvorite datoteku koja postaje vidljiva.
  6. Kopirajte i zalijepite kôd pod 'pwm_core_v1_0_S00_AXI.v' u zip datoteku na dnu projekta. Ctrl + Shift + R i zamijenite 'pwm_core' svojim imenom za ip blok.
  7. Zatim otvorite 'name _v1_0' i kopirajte navedeni kôd u datoteku 'pwm_core_v1_0.v'. Ctrl + Shift + R i zamijenite 'pwm_core' imenom.
  8. Sada idite na karticu "Paket IP - naziv" i odaberite "Parametri prilagodbe".
  9. Na ovoj će se kartici pri vrhu nalaziti žuta traka s povezanim tekstom. Odaberite ovo i u okviru će se pojaviti "Skriveni parametri".
  10. Sada idite na "Prilagođavanje grafičkog sučelja" i desnom tipkom miša kliknite Pwm Counter Max i odaberite "Uredi parametar …".
  11. Potvrdite okvire "Vidljivo u grafičkom sučelju za prilagodbu" i "Navedi raspon".
  12. Promijenite padajući izbornik "Vrsta:" na Raspon cijelih brojeva i postavite minimalno na 0, a maksimalno na 65535 te označite okvir "Prikaži raspon". Sada kliknite U redu.
  13. Povucite Pwm brojač Max ispod stabla 'Page 0'. Sada idite na "Pregled i paket" i kliknite gumb "Ponovo pakiraj IP".

Korak 4: Dodajte PWM IP blok u dizajn

U dizajn dodajte PWM IP blok
U dizajn dodajte PWM IP blok

Dodati ćemo IP blok u dizajn bloka kako bi se korisniku omogućio pristup PWM IP bloku kroz procesor.

  1. Desnom tipkom miša kliknite karticu dijagrama i kliknite "IP postavke …". Idite na karticu "Upravitelj spremišta".
  2. Pritisnite zeleni gumb plus i odaberite ga. Sada pronađite ip_repo u Upravitelju datoteka i dodajte to u projekt. Zatim pritisnite Primijeni, a zatim U redu.
  3. Desnom tipkom miša kliknite karticu dijagrama i kliknite "Dodaj IP …". Upišite naziv svog PWM IP bloka i odaberite ga.
  4. Na vrhu zaslona trebala bi biti zelena traka, prvo odaberite "Pokreni automatizaciju veze" i kliknite U redu. Zatim kliknite "Pokreni automatizaciju blokova" i kliknite U redu.
  5. Dvaput kliknite na PWM blok i promijenite Pwm Counter Max na 1024 sa 128.
  6. Zadržite pokazivač miša iznad PWM0 na PWM bloku. Trebala bi postojati mala olovka koja se pojavi kad to učinite. Desnom tipkom miša kliknite i odaberite "Create Port …", a zatim kliknite U redu kada se otvori prozor. Time se stvara vanjski priključak za prijenos signala.
  7. Ponovite korak 6 i za PWM1 i PWM2.
  8. Pronađite malu kružnu ikonu s dvostrukom strelicom na bočnoj traci i kliknite je. Regenerirat će izgled, a dizajn vašeg bloka trebao bi izgledati kao na gornjoj slici.

Korak 5: Konfigurirajte HDL omot i postavite datoteku ograničenja

Konfigurirajte HDL omot i postavite datoteku ograničenja
Konfigurirajte HDL omot i postavite datoteku ograničenja

Sada ćemo generirati dizajn visoke razine za naš dizajn blokova, a zatim preslikati PWM0, PWM1 i PWM2 u Pmod pinove na Zybo ploči.

  1. Idite na karticu "Izvori". Desnom tipkom miša kliknite datoteku dizajna bloka u odjeljku "Izvori dizajna" i kliknite "Izradi omot HDL -a …". Odaberite "Kopiraj generirani omot kako biste omogućili korisnička uređivanja" i kliknite U redu. Ovo generira dizajn visoke razine za blok dizajn koji smo stvorili.
  2. Pmod na koji ćemo izlaziti je JE.
  3. U odjeljku Datoteka odaberite "Dodaj izvore …" i odaberite "Dodaj ili kreiraj ograničenja" i kliknite Dalje.
  4. Pritisnite Dodaj datoteke i odaberite priloženu datoteku "ZYBO_Master.xdc". Ako pogledate ovu datoteku, primijetit ćete da sve nije komentirano osim šest redaka "set_property" pod "## Pmod Header JE". Primijetit ćete da su PWM0, PWM1 i PWM2 argumenti za ove retke. Mapiraju se na Pin 1, Pin 2 i Pin 3 JE Pmod -a.

Korak 6: Generiranje Bitstream -a

Moramo generirati bitstream za hardverski dizajn za izvoz u SDK prije nego krenemo dalje.

  1. U odjeljku "Program i ispravljanje pogrešaka" na bočnoj traci odaberite "Generiraj Bitstream". Ovo će pokrenuti sintezu, zatim implementaciju, a zatim generirati tok bitova za dizajn.
  2. Ispravite sve pogreške koje se pojavljuju, ali upozorenja se općenito mogu zanemariti.
  3. Idite na Datoteka-> Pokreni SDK i kliknite U redu. Ovo će otvoriti Xilinx SDK.

Korak 7: Postavljanje projekta u SDK -u

Ovaj dio može biti pomalo frustrirajući. U nedoumici napravite novi BSP i zamijenite stari. Time smo uštedjeli hrpu vremena za ispravljanje pogrešaka.

  1. Počnite preuzimanjem najnovije verzije FreeRTOS -a ovdje.
  2. Izvucite sve iz preuzimanja i uvezite FreeRTOS u SDK klikom na Datoteka-> Uvoz, a pod "Općenito" kliknite "Postojeći projekti u radni prostor", a zatim kliknite Dalje.
  3. Idite na "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" unutar mape FreeRTOS. Uvozite samo "RTOSDemo" s ove lokacije.
  4. Sada generirajte Board Support Package (BSP) klikom na File-> New Board Support Package.
  5. Odaberite "ps7_cortexa9_0" i označite "lwip141" i kliknite U redu.
  6. Desnom tipkom miša kliknite RTOSDemo plavu mapu i odaberite "Reference projekta".
  7. Poništite oznaku "RTOSDemo_bsp" i provjerite novi BSP koji smo upravo stvorili.

Korak 8: Izmjene FreeRTOS koda

Kod koji nudimo može se podijeliti u 7 različitih datoteka. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h i iic_imu.h. Kôd u iic_main_thread.c prilagođen je iz knjižnice Kris Winer koja se nalazi ovdje. Uglavnom smo transformirali njegov kôd tako da uključuje zadatke i da radi s Zybo pločom. Dodali smo i funkcije za izračunavanje korekcije orijentacije fotoaparata. Napisali smo nekoliko ispisa ispisa koji su korisni za ispravljanje pogrešaka. Većina njih je komentirana, ali ako osjetite potrebu, možete ih komentirati.

  1. Najlakši način za izmjenu datoteke main.c je zamijeniti kod kopiranim kodom iz naše uključene datoteke main.c.
  2. Da biste stvorili novu datoteku, desnom tipkom miša kliknite mapu src pod RTOSDemo i odaberite C Izvorna datoteka. Dajte datoteci naziv "iic_main_thread.c".
  3. Kopirajte kôd s priloženog "iic_main_thread.c" i zalijepite ga u svoju novostvorenu datoteku.
  4. Ponovite korake 2 i 3 s preostalim datotekama.
  5. zahtijeva upute za povezivanje u gcc -u. Da biste ovo dodali putu izgradnje, desnom tipkom miša kliknite RTOSDemo i odaberite "C/C ++ Build Settings".
  6. Otvorit će se novi prozor. Idite na ARM v7 gcc povezivač-> Knjižnice. Odaberite malu datoteku za dodavanje u gornjem desnom kutu i upišite "m". To će uključiti matematičku knjižnicu u projekt.
  7. Izgradite projekt pomoću Ctrl + B da biste potvrdili da sve radi. Provjerite upozorenja koja se generiraju, ali ih možete zanemariti.
  8. Postoji nekoliko mjesta koja će biti potrebna izmjena, uglavnom magnetska deklinacija vaše trenutne lokacije. Objasnit ćemo kako to promijeniti u kalibracijskom dijelu vodiča.

Korak 9: 3D ispis za stabilizator

3D ispis za stabilizator
3D ispis za stabilizator

Za ovaj projekt trebate 3D ispisati nekoliko dijelova. Vjerojatno se mogu kupiti dijelovi sličnih dimenzija/veličina kao naši tiskani dijelovi.

  1. Ispisujte ruku i držač za GoPro pomoću priloženih datoteka.
  2. Morate dodati skele u.stl datoteku.
  3. Odrežite/očistite dijelove viška skele nakon ispisa.
  4. Drveni klin možete zamijeniti 3D tiskanim dijelom ako želite.

Korak 10: Sastavljanje dijelova

Sklapanje dijelova
Sklapanje dijelova

Sastavljanje stabilizatora sastoji se od nekoliko dijelova. Uz kupljene nosače dolaze 4 samorezna vijka i 4 vijka s maticama. Budući da postoje 3 serva, jedan od servo sirena mora biti prethodno navučen kako bi se omogućilo provlačenje 2 vijka.

  1. Lemite 8 pinova na IMU proboj, 4 sa svake strane.
  2. IMU je pričvršćen na 3D tiskani držač za GoPro u sredini nosača.
  3. Okrenite držač tako da rupe za servo montažu budu s vaše lijeve strane. Postavite IMU na sebi najbliži rub, a pribadače vise s ruba. Zatim postavite GoPro nosač na vrh IMU -a, zalijepivši IMU i nosač na držač.
  4. Pričvrstite HS-5485HB na servo držač koji je integriran u 3D tiskanu ruku.
  5. Uvrnite GoPro držač u servo pričvršćen na ruku pazeći da je servo postavljen tako da je u sredini svog raspona pokreta.
  6. Zatim pričvrstite servo HS-5685MH na servo držač. Zatim jednim od vijaka dodirnite servo trubu. Sada pričvrstite servo na dno posljednjeg servo držača.
  7. Sada pričvrstite posljednji servo na nosač u koji je pričvršćen servo HS-5685MH. Zatim uvrnite ruku u ovaj servo, pazeći da je ruka pričvršćena tako da se može pomicati za 90 stupnjeva u svakom smjeru.
  8. Da biste dovršili konstrukciju gimbala, dodajte mali komad drvenog tipla za spajanje između GoPro držača i 3D ispisane ruke. Sada ste sastavili stabilizator.
  9. Na kraju, možete dodati ručku povezanu na donji servo nosač.

Korak 11: Spajanje Zyba na stabilizator

Spajanje Zyba na stabilizator
Spajanje Zyba na stabilizator

Pri ovome morate biti oprezni na nekoliko stvari. Želite biti sigurni da 5V iz napajanja nikada ne ulazi u Zybo ploču jer bi to moglo dovesti do problema s pločom. Ponovno provjerite jesu li kratkospojnici provjereni da se žice ne prebacuju.

  1. Za pričvršćivanje Zyba na stabilizator trebat će vam 15 muških i muških skakača i 4 muško -ženska.
  2. Prvo spojite dva kratkospojnika na napajanje od 5 V uz + i - tračnice matične ploče. Oni će napajati servo pogone.
  3. Zatim spojite 3 para kratkospojnika na + i - vodilice matične ploče. To će biti snaga za svaki od servomotora.
  4. Uključite drugi kraj + i - kratkospojnika u svaki od servo pogona.
  5. Spojite kratkospojnik između - vodilice matične ploče i jednog od GND pinova na Zybo JE Pmodu (pogledajte sliku koraka 5). To će stvoriti zajedničko tlo između Zybo ploče i napajanja.
  6. Zatim spojite signalnu žicu na pin 1, pin 2 i pin 3 JE Pmod -a. Zakačite karte 1 na donji servo, zakačite 2 karte na servo na kraju kraka i zakačite 3 karte na srednji servo.
  7. Uključite 4 ženske žice u GND, VDD, SDA i SCL pinove prekidača IMU. GND i VDD se priključuju na GND i 3V3 na JF pinovima. Utaknite SDA pin u pin 8, a SCL u pin 7 na JF -u (pogledajte sliku koraka 5).
  8. Na kraju, spojite računalo na ploču pomoću mikro USB kabela. To će omogućiti uart komunikaciju i programirati Zybo ploču.

Korak 12: Korekcija pravog sjevera

Istinska sjeverna korekcija
Istinska sjeverna korekcija

Kalibracija magnetometra u IMU -u važna je za ispravan rad uređaja. Magnetska deklinacija koja ispravlja magnetski sjever na pravi sjever.

  1. Da biste ispravili razliku od magnetskog i pravog sjevera, morate koristiti kombinaciju dviju usluga, Google karata i kalkulatora magnetskog polja NOAA -e.
  2. Pomoću Google karata pronađite svoju zemljopisnu širinu i dužinu svoje trenutne lokacije.
  3. Uzmite trenutnu zemljopisnu dužinu i širinu i uključite ih u kalkulator magnetskog polja.
  4. Vraća se magnetska deklinacija. Uključite ovaj izračun u kôd na retku 378 "iic_main_thread.c". Ako je vaša deklinacija istočna, tada oduzmite vrijednost zakretanja, ako je zapad, dodajte vrijednost zakretanja.

*fotografija je preuzeta iz Sparkfun -ovog vodiča za spajanje MPU 9250, koji se nalazi ovdje.

Korak 13: Pokretanje programa

Pokretanje programa
Pokretanje programa

Trenutak koji ste čekali! Najbolji dio projekta je vidjeti kako funkcionira. Jedan problem koji smo primijetili je da postoji odstupanje od vrijednosti iz IMU -a. Niskopropusni filtar može pomoći u ispravljanju ovog pomaka, a petljanje s magnetometrom, ubrzanjem i kalibracijama žiroskopa također će pomoći u ispravljanju ovog zanošenja.

  1. Prvo, sastavite sve u SDK -u, to se može učiniti pritiskom na Ctrl + B.
  2. Provjerite je li napajanje uključeno i postavljeno na 5V. Dvaput provjerite idu li sve žice na svoja mjesta.
  3. Zatim, za pokretanje programa, pritisnite zeleni trokut u gornjem središtu programske trake.
  4. Kad se program pokrene, svi servo upravljači će se vratiti na svoje 0 pozicije, pa budite spremni za pomicanje opreme. Nakon što se program inicijalizira, servo upravljači će se zatim vratiti na svoje položaje od 90 stupnjeva.
  5. Pokrenut će se funkcija kalibracije magnetometra, a upute će se ispisati na UART terminal, s kojim se možete povezati putem serijskog monitora, poput 'kit -a' ili serijskog monitora navedenog u SDK -u.
  6. Kalibracijom ćete pomaknuti uređaj na slici 8 oko 10 sekundi. Ovaj korak možete ukloniti komentiranjem retka 273 "iic_main_thread.c". Ako to komentirate, morate ukloniti komentare iz redaka 323 - 325 "iic_main_thread.c". Ove su vrijednosti u početku prikupljene iz gornje kalibracije magnetometra, a zatim su uključene kao vrijednosti.
  7. Nakon kalibracije stabilizacijski kôd će se inicijalizirati i uređaj će držati kameru stabilnom.

Preporučeni: