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, Juli
Anonim
Ručni stabilizator kamere
Ručni stabilizator kamere

Uvod

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

Dijelovi potrebni za projekat

  • Digilent Zybo Zynq-7000 razvojni odbor
  • Sparkfun IMU Breakout - MPU 9250
  • 2 servera HiTec HS-5485HB (kupite pokrete za 180 stepeni ili programirajte od 90 do 180 stepeni)
  • 1 HiTec HS-5685MH servo (kupite pokret od 180 stepeni ili program od 90 do 180 stepeni)
  • 2 standardna servo držača
  • 1 Breadboard
  • 15 žica kratkospojnika muško-muško
  • 4 žice kratkospojnika muško-žensko
  • Hot Glue
  • Drška ili ručka
  • Drveni klin promjera 5 mm
  • GoPro ili drugi fotoaparat i hardver za montažu
  • Napajanje sposobno za izlaz 5V.
  • Pristup 3D štampaču

Korak 1: Postavljanje hardvera Vivado

Vivado Hardware Setup
Vivado Hardware Setup

Započnimo s stvaranjem temeljnog dizajna bloka za projekt.

  1. Otvorite Vivado 2016.2, kliknite ikonu "Kreiraj 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 na odabir.
  4. Dvaput kliknite na Zynq blok koji se pojavi.
  5. Pritisnite "Uvoz XPS postavki" i uvezite priloženu datoteku "ZYBO_zynq_def.xml".
  6. Idite na "MIO konfiguracija" i odaberite "Aplikacijska procesorska jedinica" 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: Kreirajte prilagođeni PWM IP blok

Ovaj IP blok omogućuje ploči da šalje PWM signal za kontrolu kretanja servomotora. Rad je u velikoj mjeri zasnovan na vodiču Digitronixa iz Nepala, koji se nalazi ovdje. Dodana je logika za usporavanje takta, tako da se puls emitirao 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 "Kreiraj i upakiraj IP …" i pritisnite Dalje.
  2. Zatim odaberite "Kreiraj novi periferni uređaj AXI4" i pritisnite Dalje.
  3. Imenujte svoj PWM IP blok (nazvali smo ga pwm_core) i kliknite Dalje, a zatim kliknite Sljedeće 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 prilagođavanja".
  9. Na ovoj kartici će se na vrhu nalaziti žuta traka koja povezuje tekst. Odaberite ovo i "Skriveni parametri" će se pojaviti u okviru.
  10. Sada idite na "Prilagođavanje grafičkog sučelja" i desnim klikom na Pwm Counter Max odaberite "Uredi parametar …".
  11. Označite okvire "Vidljivo u grafičkom sučelju za prilagođavanje" i "Navedi raspon".
  12. Promijenite padajući izbornik "Vrsta:" na Raspon cijelih brojeva i postavite minimum na 0, a maksimum na 65535 i označite okvir "Prikaži raspon". Sada kliknite OK.
  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

Dodajte PWM IP blok u dizajn
Dodajte PWM IP blok u dizajn

Dodaćemo IP blok u dizajn bloka kako bismo omogućili korisniku pristup PWM IP bloku kroz procesor.

  1. Desnom tipkom miša kliknite karticu dijagrama i kliknite "IP postavke …". Idite na karticu "Menadžer spremišta".
  2. Pritisnite zeleno dugme 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 bloka" 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 pritisnite OK kada se prozor otvori. Ovo stvara vanjski port na koji se signal prosljeđuje.
  7. Ponovite korak 6 i za PWM1 i PWM2.
  8. Pronađite malu kružnu ikonu dvostruke strelice na bočnoj traci i kliknite na nju. Regenerirat će izgled, a dizajn vašeg bloka trebao bi izgledati kao na gornjoj slici.

Korak 5: Konfigurirajte HDL omotač 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 visokog nivoa 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 pod "Izvori dizajna" i kliknite "Kreiraj HDL omot …". Odaberite "Kopiraj generirani omot da biste dozvolili 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. Kliknite na dodavanje datoteka i odaberite uključenu datoteku "ZYBO_Master.xdc". Ako pogledate ovu datoteku, primijetit ćete da sve nije komentirano osim šest redova "set_property" pod "## Pmod Header JE". Primijetit ćete da su PWM0, PWM1 i PWM2 argumenti za ove retke. Mapiraju 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 nastavimo.

  1. U odjeljku "Program i otklanjanje 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 greške koje se pojave, 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. Ako ste u nedoumici, napravite novi BSP i zamijenite stari. Ovo nam je uštedjelo hrpu vremena za otklanjanje grešaka.

  1. Počnite preuzimanjem najnovije verzije FreeRTOS -a ovdje.
  2. Izvucite sve iz preuzimanja i uvezite FreeRTOS u SDK tako što ćete kliknuti 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 foldera 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. Desnim klikom na RTOSDemo plavu mapu 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 biblioteke Kris Winer, koja se nalazi ovdje. Uglavnom smo transformirali njegov kôd kako bismo uključili zadatke i omogućili mu da radi sa Zybo pločom. Dodali smo i funkcije za izračunavanje korekcije orijentacije kamere. Napisali smo nekoliko ispisa za štampanje koji su korisni za otklanjanje grešaka. Većina njih je komentirana, ali ako osjećate potrebu, možete ih komentirati.

  1. Najlakši način za izmjenu datoteke main.c je zamjena koda 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 ime "iic_main_thread.c".
  3. Kopirajte kôd s priloženog "iic_main_thread.c" i zalijepite ga u novostvorenu datoteku.
  4. Ponovite korake 2 i 3 s preostalim datotekama.
  5. zahtijeva uputstvo za povezivanje u gcc. Da biste ovo dodali putanji 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". Ovo će uključiti matematičku biblioteku u projekat.
  7. Izgradite projekt pomoću Ctrl + B da biste potvrdili da sve radi. Provjerite upozorenja koja se generiraju, ali ćete ih možda moći 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 štampanje za stabilizator

3D štampanje za stabilizator
3D štampanje za stabilizator

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

  1. Iskoristite priložene datoteke za ispis ruke i držača za GoPro.
  2. Morate dodati skele u.stl datoteku.
  3. Odrežite/očistite dijelove viška skele nakon štampanja.
  4. Ako želite, drveni klin možete zamijeniti 3D tiskanim dijelom.

Korak 10: Sklapanje dijelova

Sklapanje delova
Sklapanje delova

Sastavljanje stabilizatora sastoji se od nekoliko dijelova. Kupljeni držači dolaze s 4 samorezna vijka i 4 vijka s maticama. Budući da postoje 3 servo motora, jedan od servo sirena mora biti prethodno navučen kako bi se omogućilo provlačenje 2 vijka.

  1. Lemite 8 pinova na IMU prekidač, 4 sa svake strane.
  2. IMU je pričvršćen na 3D štampani 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 igle 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 štampanu ruku.
  5. Uvrnite GoPro držač u servo pričvršćen za ruku, pazeći da je servo postavljen tako da je u sredini svog raspona kretanja.
  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 držač 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 štampane ruke. Sada ste sastavili stabilizator.
  9. Na kraju, možete dodati ručku povezanu na donji servo nosač.

Korak 11: Povezivanje Zybo -a sa stabilizatorom

Povezivanje Zybo -a sa stabilizatorom
Povezivanje Zybo -a sa stabilizatorom

Nekoliko stvari na koje morate biti oprezni dok ovo radite. Ž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 sigurni 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 duž + i - šina 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 servo pogona.
  4. Uključite drugi kraj + i - kratkospojnika u svaki od servo pogona.
  5. Spojite kratkospojnik između - šine matične ploče i jednog od GND pinova na Zybo JE Pmodu (pogledajte sliku korak 5). Ovo ć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 1 karte 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. Uključite SDA pin u pin 8 i SCL u pin 7 na JF -u (pogledajte sliku koraka 5).
  8. Na kraju, spojite računar na ploču pomoću mikro USB kabla. 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 važna je za ispravan rad uređaja. Magnetska deklinacija, koja ispravlja magnetni sjever na pravi sjever.

  1. Da biste ispravili razliku od magnetskog i pravog sjevera, morate koristiti kombinaciju dviju usluga, Google mapa i NOAA -inog kalkulatora magnetskog polja.
  2. Pomoću Google karata pronađite svoju zemljopisnu širinu i dužinu na vašoj trenutnoj lokaciji.
  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 liniji 378 "iic_main_thread.c". Ako je vaša deklinacija istočna, tada oduzmite vrijednost zakretanja, ako je zapad, tada 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 prijavljenih od IMU -a. Niskopropusni filter može pomoći u ispravljanju ovog pomaka, a petljanje s magnetometrom, ubrzanjem i žiro kalibracijama također će pomoći u ispravljanju ovog pomaka.

  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 da li sve žice idu na svoja mjesta.
  3. Zatim, da biste pokrenuli program, 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 i upute će se ispisati do UART terminala, 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 komentarišete, morate ukloniti komentare iz redova 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čuje se: