Sisällysluettelo:

Käsikameran vakaaja: 13 vaihetta (kuvien kanssa)
Käsikameran vakaaja: 13 vaihetta (kuvien kanssa)

Video: Käsikameran vakaaja: 13 vaihetta (kuvien kanssa)

Video: Käsikameran vakaaja: 13 vaihetta (kuvien kanssa)
Video: S-125 M1 "Petšora" 2024, Marraskuu
Anonim
Kädessä pidettävä kameran vakaaja
Kädessä pidettävä kameran vakaaja

Johdanto

Tämä on opas 3-akselisen käsikameran vakautuslaitteen luomiseen GoPro-laitteelle Digilent Zybo Zynq-7000 -kehityskortin avulla. Tämä projekti on kehitetty CPE Real-Time Operating Systems -luokkaa (CPE 439) varten. Vakaaja käyttää kolmea servoa ja IMU: ta korjaamaan käyttäjän liikkeet pitääkseen kameran vaakasuorassa.

Projektissa tarvittavat osat

  • Digilent Zybo Zynq-7000 -kehityslauta
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servoa (osta 180 asteen liike tai ohjelma 90-180 astetta)
  • 1 HiTec HS-5685MH Servo (osta 180 asteen liike tai ohjelma 90-180 astetta)
  • 2 vakio servokannatinta
  • 1 Leipälevy
  • 15 uros-uros-hyppyjohdinta
  • 4 uros-naaras-hyppyjohdinta
  • Kuuma liima
  • Kahva tai kahva
  • Halkaisijaltaan 5 mm puinen tappi
  • GoPro tai muu kamera ja kiinnitystarvikkeet
  • Virtalähde, joka voi lähettää 5V.
  • Pääsy 3D -tulostimeen

Vaihe 1: Vivado -laitteiston asennus

Vivadon laitteiston asennus
Vivadon laitteiston asennus

Aloitetaan projektin taustalla olevan lohkosuunnittelun luominen.

  1. Avaa Vivado 2016.2, napsauta "Luo uusi projekti" -kuvaketta ja napsauta "Seuraava>".
  2. Nimeä projekti ja napsauta "Seuraava>".
  3. Valitse RTL -projekti ja paina "Seuraava>".
  4. Kirjoita hakupalkkiin xc7z010clg400-1 ja valitse sitten osa ja paina "Seuraava>" ja "Valmis".

Vaihe 2: Lohkosuunnittelun määrittäminen

Nyt aloitamme lohkon suunnittelun luomisen lisäämällä ja määrittämällä Zynq IP -lohkon.

  1. Napsauta vasemman paneelin IP -integrointi -kohdassa "Luo lohkosuunnittelu" ja napsauta sitten "OK".
  2. Napsauta hiiren kakkospainikkeella "Kaavio" -välilehteä ja valitse "Lisää IP …".
  3. Kirjoita "ZYNQ7 Processing System" ja napsauta valintaa.
  4. Kaksoisnapsauta näkyviin tulevaa Zynq -lohkoa.
  5. Napsauta "Tuo XPS -asetukset" ja tuo toimitettu "ZYBO_zynq_def.xml" -tiedosto.
  6. Siirry kohtaan "MIO Configuration" ja valitse "Application Processor Unit" ja ota käyttöön ajastin 0 ja Watchdog -ajastimet.
  7. Valitse saman välilehden I/O -oheislaitteet -kohdasta ENET 0 (ja vaihda avattavasta valikosta "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Valitse GPIO -kohdassa GPIO MIO, ENET Reset, USB Reset ja I2C Reset.
  9. Siirry nyt kohtaan "Kellon määritys". Valitse FCLK_CLK0 kohdassa PL Fabric Clocks. Napsauta sitten "OK".

Vaihe 3: Luo mukautettu PWM IP -lohko

Tämän IP -lohkon avulla levy voi lähettää PWM -signaalin ulos servojen liikkeen ohjaamiseksi. Työ perustui vahvasti Digitronix Nepalin opetusohjelmaan, joka löytyy täältä. Logiikkaa lisättiin kellon hidastamiseksi, joten pulssi lähetti oikealla nopeudella. Lohko ottaa luvun 0-180 ja muuntaa sen pulssiksi 750-2150 käyttöc.

  1. Napsauta nyt Työkalut-välilehden vasemman yläkulman lähellä "Luo ja pakkaa IP…" ja napsauta Seuraava.
  2. Valitse sitten "Luo uusi AXI4 -oheislaite" ja paina Seuraava.
  3. Nimeä PWM -IP -lohko (nimesimme sen pwm_core) ja napsauta Seuraava ja napsauta sitten Seuraava myös seuraavalla sivulla.
  4. Napsauta nyt "Muokkaa IP -osoitetta" ja napsauta Valmis. Tämä avaa uuden ikkunan pwm -lohkon muokkaamiseen.
  5. Laajenna "Lähteet" -välilehden "Suunnittelulähteet" -kohdassa "pwm_core_v1_0" (korvaa pwm_core nimelläsi) ja avaa tiedosto, joka tulee näkyviin.
  6. Kopioi ja liitä koodin 'pwm_core_v1_0_S00_AXI.v' alla oleva koodi zip -tiedostoon projektin alareunassa. Ctrl + Vaihto + R ja korvaa "pwm_core" nimesi IP -lohkolla.
  7. Avaa seuraavaksi 'nimi _v1_0' ja kopioi antamasi koodi tiedostoon 'pwm_core_v1_0.v'. Ctrl + Vaihto + R ja korvaa 'pwm_core' nimellä.
  8. Siirry nyt "Paketin IP - nimi" -välilehdelle ja valitse "Mukautusparametrit".
  9. Tämän välilehden yläosassa on keltainen palkki, johon on linkitetty teksti. Valitse tämä, ja "Piilotetut parametrit" näkyy ruudussa.
  10. Siirry nyt "Mukautuskäyttöliittymään" ja napsauta hiiren kakkospainikkeella Pwm Counter Max ja valitse "Muokkaa parametria …".
  11. Valitse "Näkyvä mukautuskäyttöliittymässä" ja "Määritä alue" -ruudut.
  12. Muuta avattava "Tyyppi:" -valikko kokonaislukualueeksi ja aseta minimiarvoksi 0 ja maksimiksi 65535 ja valitse "Näytä alue" -ruutu. Napsauta nyt OK.
  13. Vedä Pwm Counter Max 'Page 0' -puun alle. Siirry nyt kohtaan "Tarkista ja pakkaa" ja napsauta "Pakkaa IP uudelleen" -painiketta.

Vaihe 4: Lisää PWM IP -lohko suunnitteluun

Lisää PWM IP -lohko suunnitteluun
Lisää PWM IP -lohko suunnitteluun

Lisäämme IP -lohkon lohkon suunnitteluun, jotta käyttäjä voi käyttää PWM IP -lohkoa prosessorin kautta.

  1. Napsauta kaavio -välilehteä hiiren kakkospainikkeella ja napsauta "IP -asetukset…". Siirry "Arkistonhallinta" -välilehdelle.
  2. Napsauta vihreää pluspainiketta ja valitse se. Etsi nyt ip_repo Tiedostonhallinnasta ja lisää se projektiin. Valitse sitten Käytä ja sitten OK.
  3. Napsauta kaavio -välilehteä hiiren kakkospainikkeella ja napsauta "Lisää IP…". Kirjoita PWM IP -lohkon nimi ja valitse se.
  4. Näytön yläosassa pitäisi olla vihreä palkki, valitse ensin "Suorita yhteysautomaatio" ja napsauta OK. Napsauta sitten "Suorita lohkoautomaatio" ja napsauta OK.
  5. Kaksoisnapsauta PWM -lohkoa ja muuta Pwm Counter Max arvoksi 1024 128.
  6. Vie hiiri PWM -lohkon PWM0: n päälle. Pienen kynän pitäisi näkyä, kun teet sen. Napsauta hiiren kakkospainikkeella ja valitse "Luo portti …" ja napsauta OK, kun ikkuna avautuu. Tämä luo ulkoisen portin signaalille.
  7. Toista vaihe 6 myös PWM1: lle ja PWM2: lle.
  8. Etsi pieni pyöreä kaksoisnuolikuvake sivupalkista ja napsauta sitä. Se uudistaa asettelun ja lohkon suunnittelun pitäisi näyttää yllä olevasta kuvasta.

Vaihe 5: Määritä HDL -kääre ja määritä rajoitustiedosto

Määritä HDL -kääre ja määritä rajoitustiedosto
Määritä HDL -kääre ja määritä rajoitustiedosto

Luomme nyt korkean tason suunnittelun lohkomallillemme ja kartoitamme sitten PWM0, PWM1 ja PWM2 Pmod -nastoihin Zybo -kortilla.

  1. Siirry "Lähteet" -välilehdelle. Napsauta hiiren kakkospainikkeella lohkon suunnittelutiedostoa "Suunnittelulähteet" -kohdassa ja napsauta "Luo HDL -kääre …". Valitse "Kopioi luotu kääre salliaksesi käyttäjän muokkaukset" ja napsauta OK. Tämä luo korkean tason suunnittelun luomallemme lohkomallille.
  2. Pmod, jota tulostamme, on JE.
  3. Valitse Tiedosto -kohdasta "Lisää lähteitä …", valitse "Lisää tai luo rajoituksia" ja napsauta Seuraava.
  4. Napsauta Lisää tiedostoja ja valitse mukana tuleva "ZYBO_Master.xdc" -tiedosto. Jos tarkastelet tätä tiedostoa, huomaat, että kaikki on kommentoimatonta paitsi kuusi "set_property" -riviä kohdassa "## Pmod Header JE". Huomaat, että PWM0, PWM1 ja PWM2 ovat argumentteja näille riveille. Ne kartoitetaan JE Pmodin nastoihin 1, 2 ja 3.

Vaihe 6: Bittivirran luominen

Meidän on luotava bittivirta, jotta laitteistosuunnitelma voidaan viedä SDK: hon, ennen kuin siirrymme eteenpäin.

  1. Valitse sivupalkin "Ohjelma ja virheenkorjaus" -kohdasta "Luo bittivirta". Tämä suorittaa synteesin, sitten toteutuksen ja luo sitten suunnittelun bittivirran.
  2. Korjaa esiin tulevat virheet, mutta varoitukset voidaan yleensä jättää huomiotta.
  3. Siirry kohtaan Tiedosto-> Käynnistä SDK ja napsauta OK. Tämä avaa Xilinx SDK: n.

Vaihe 7: Projektin määrittäminen SDK: ssa

Tämä osa voi olla hieman turhauttava. Jos olet epävarma, tee uusi BSP ja vaihda vanha. Tämä säästi meille joukon virheenkorjausaikaa.

  1. Aloita lataamalla FreeRTOSin uusin versio täältä.
  2. Pura kaikki lataamisesta ja tuomisesta FreeRTOS SDK: ksi napsauttamalla Tiedosto-> Tuo ja napsauta "Yleiset" -kohdassa "Olemassa olevat projektit työtilaan" ja napsauta sitten Seuraava.
  3. Siirry FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 -kansioon FreeRTOS -kansiossa. Tuo vain "RTOSDemo" tästä paikasta.
  4. Luo nyt Board Support Package (BSP) napsauttamalla File-> New Board Support Package.
  5. Valitse "ps7_cortexa9_0" ja tarkista "lwip141" ja napsauta OK.
  6. Napsauta hiiren kakkospainikkeella sinistä RTOSDemo -kansiota ja valitse "Projektiviitteet".
  7. Poista valinta kohdasta "RTOSDemo_bsp" ja tarkista juuri luomamme uusi BSP.

Vaihe 8: FreeRTOS -koodimuutokset

Tarjoamamme koodi voidaan jakaa 7 eri tiedostoon. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h ja iic_imu.h. Koodi iic_main_thread.c on muokattu Kris Winerin kirjastosta, joka löytyy täältä. Muutimme hänen koodinsa pääasiassa sisällyttämään tehtäviä ja saamaan sen toimimaan Zybo -levyn kanssa. Lisäsimme myös toimintoja kameran suunnan korjauksen laskemiseksi. Olemme jättäneet useita painettuja lausuntoja, jotka ovat hyödyllisiä virheenkorjauksessa. Suurin osa niistä kommentoidaan, mutta jos tuntuu tarpeelliselta, voit poistaa ne.

  1. Helpoin tapa muokata main.c -tiedostoa on korvata koodi kopioidulla koodilla sisältämästämme main.c -tiedostosta.
  2. Jos haluat luoda uuden tiedoston, napsauta hiiren kakkospainikkeella RTOSDemo -kohdan src -kansiota ja valitse C Lähdetiedosto. Nimeä tämä tiedosto "iic_main_thread.c".
  3. Kopioi koodi mukana tulevasta tiedostosta "iic_main_thread.c" ja liitä se juuri luomaasi tiedostoon.
  4. Toista vaiheet 2 ja 3 muiden tiedostojen kanssa.
  5. vaatii linkittämisohjeen gcc: ssä. Jos haluat lisätä tämän rakennuspolulle, napsauta hiiren kakkospainikkeella RTOSDemo ja valitse "C/C ++ Build Settings".
  6. Uusi ikkuna avautuu. Siirry kohtaan ARM v7 gcc linker-> Libraries. Valitse pieni lisätiedosto oikeasta yläkulmasta ja kirjoita "m". Tähän sisältyy matematiikkakirjasto projektiin.
  7. Luo projekti Ctrl + B: llä ja vahvista, että kaikki toimii. Tarkista annetut varoitukset, mutta voit ehkä jättää ne huomiotta.
  8. Muutamia paikkoja on muutettava, lähinnä nykyisen sijaintisi magneettinen deklinaatio. Selitämme kuinka muuttaa tätä opetusohjelman kalibrointiosassa.

Vaihe 9: 3D -tulostus vakaajalle

3D -tulostus vakaajalle
3D -tulostus vakaajalle

Sinun täytyy tulostaa 3D -projektiin pari osaa. Luultavasti voi ostaa osia, jotka ovat samankokoisia/-kokoisia kuin painetut osat.

  1. Tulosta GoPron varsi ja pidike käyttämällä mukana toimitettuja tiedostoja.
  2. Sinun on lisättävä telineet.stl -tiedostoon.
  3. Leikkaa/puhdista ylimääräisten telineiden osat tulostamisen jälkeen.
  4. Halutessasi voit korvata puisen vaarnan 3D -painetulla osalla.

Vaihe 10: Osien kokoaminen

Osien kokoaminen
Osien kokoaminen

Stabilisaattorin kokoamiseen kuuluu useita osia. Ostettujen kiinnikkeiden mukana tulee 4 itsekierteittävää ruuvia ja 4 mutteria. Koska servoja on 3, yksi servosarveista on esikartoitettava, jotta kaksi pulttia mahtuu läpi.

  1. Juotos 8 nastaa IMU -aukkoon, 4 kummallakin puolella.
  2. IMU on kiinnitetty GoPro -laitteen 3D -tulostettuun pidikkeeseen kannattimen keskellä.
  3. Suuntaa kannatin niin, että servon kiinnitysreiät ovat vasemmalla puolella. Aseta IMU lähimpään reunaan siten, että nastat riippuvat reunasta. Aseta sitten GoPro -kiinnike IMU: n päälle ja kiinnitä IMU ja teline paikalleen kiinnikkeeseen.
  4. Kiinnitä HS-5485HB servokannattimeen, joka on integroitu 3D-tulostettuun varteen.
  5. Kierrä GoPro -kiinnike käsivarsiin kiinnitettyyn servoon ja varmista, että servo on asetettu niin, että se on liikealueensa keskellä.
  6. Kiinnitä seuraavaksi HS-5685MH-servo servokannattimeen. Napauta sitten servosarjaa yhdellä ruuvilla. Kiinnitä nyt servo viimeisen servokannattimen alaosaan.
  7. Kiinnitä nyt viimeinen servo kiinnikkeeseen, johon HS-5685MH-servo on ruuvattu. Kierrä sitten varsi tähän servoon varmistaen, että varsi on ruuvattu kiinni, jotta se voi liikkua 90 astetta kumpaankin suuntaan.
  8. Viimeistele kardaanin rakentaminen lisäämällä pieni pala puusta vaarnasta GoPro -pidikkeen ja 3D -painetun varren välille. Olet nyt koonnut vakaajan.
  9. Lopuksi voit lisätä kahvan, joka on liitetty alempaan servokannattimeen.

Vaihe 11: Zyboyn liittäminen vakaajaan

Zyboyn yhdistäminen vakaajaan
Zyboyn yhdistäminen vakaajaan

On pari asiaa, joita on syytä varoa, kun teet tämän. Haluat varmistaa, että virtalähteen 5 V ei koskaan mene Zybo -korttiin, koska tämä johtaisi ongelmiin piirilevyn kanssa. Varmista, että tarkistat hyppääjäsi uudelleen ja varmistat, ettei johtoja vaihdeta.

  1. Zyboyn kiinnittämiseksi vakaajaan tarvitset 15 uros -miespuolista hyppääjää ja 4 uros -naispuolista hyppääjää.
  2. Liitä ensin kaksi hyppääjää 5V -virtalähteeseesi leipälevyn + ja - kiskoja pitkin. Nämä toimittavat virran servoille.
  3. Liitä sitten 3 paria hyppääjiä leipälevyn + ja - kiskoihin. Tämä on voima jokaiselle servolle.
  4. Kytke + ja - -hyppyjen toinen pää jokaiseen servoon.
  5. Kytke hyppylevy leipälaudan - kiskon ja yhden Zybo JE Pmodin GND -nastojen väliin (katso vaihe 5 kuva). Tämä luo yhteisen maan Zybo -kortin ja virtalähteen välillä.
  6. Liitä seuraavaksi signaalijohto JE Pmodin nastoihin 1, 2 ja 3. Kiinnitä 1 kartat alempaan servoon, nasta 2 karttaa varren päässä olevaan servoon ja kiinnitä 3 karttaa keskimmäiseen servoon.
  7. Kytke 4 naarasjohtoa IMU -katkaisijan GND-, VDD-, SDA- ja SCL -nastoihin. GND ja VDD kytketään JF -nastojen GND- ja 3V3 -liittimiin. Kytke SDA -nasta liittimeen 8 ja SCL liittimeen 7 (katso vaihe 5 kuva).
  8. Lopuksi kytke tietokone korttiin mikro -usb -kaapelilla. Tämä mahdollistaa uart -viestinnän ja voit ohjelmoida Zybo -levyn.

Vaihe 12: Todellinen pohjoisen korjaus

Todellinen pohjoisen korjaus
Todellinen pohjoisen korjaus

Magneettimittarin kalibrointi IMU: ssa on tärkeää laitteen oikean toiminnan kannalta. Magneettinen deklinaatio, joka korjaa magneettisen pohjoisen todelliseen pohjoiseen.

  1. Jos haluat korjata eron magneettisesta ja todellisesta pohjoisesta, sinun on käytettävä kahden palvelun yhdistelmää, Google Mapsia ja NOAA: n magneettikenttälaskuria.
  2. Käytä Google Mapsia löytääksesi nykyisen sijaintisi leveys- ja pituusaste.
  3. Ota nykyinen pituusaste ja leveysaste ja liitä se magneettikenttälaskimeen.
  4. Mitä palautetaan, on magneettinen deklinaatio. Liitä tämä laskelma koodiin rivillä 378 "iic_main_thread.c". Jos deklinaatio on itä, vähennä kääntymisarvosta, jos länsi, lisää sitten kääntöarvoon.

*kuva on otettu Sparkfunin MPU 9250 -liitäntäoppaasta, joka löytyy täältä.

Vaihe 13: Ohjelman suorittaminen

Ohjelman suorittaminen
Ohjelman suorittaminen

Hetki, jota olet odottanut! Parasta projektissa on nähdä sen toimivan. Yksi havaitsemamme ongelma on se, että IMU: n raportoimista arvoista on eroja. Alipäästösuodatin voi auttaa korjaamaan tämän poikkeaman, ja magnetometrin, kiihtyvyyden ja gyroskoopin kalibrointi auttavat myös korjaamaan tämän ajelehtimisen.

  1. Rakenna ensin kaikki SDK: hon, tämä voidaan tehdä painamalla Ctrl + B.
  2. Varmista, että virtalähde on kytketty ja asetettu 5V: iin. Tarkista vielä kerran, että kaikki johdot menevät oikeisiin paikkoihin.
  3. Suorita ohjelma painamalla sitten vihreää kolmiota tehtäväpalkin yläosassa.
  4. Kun ohjelma on käynnissä, kaikki servot palautuvat 0 -asentoihin, joten ole valmis lautan liikkumaan. Kun ohjelma on alustettu, servot napsahtavat takaisin 90 asteen asentoihinsa.
  5. Magnetometrin kalibrointitoiminto käynnistyy ja ohjeet tulostetaan UART -liitäntään, johon voit muodostaa yhteyden sarjamonitorin, kuten "kitin" tai SDK: n mukana toimitetun sarjamonitorin kautta.
  6. Kalibroinnin avulla voit siirtää laitetta kuvassa 8 noin 10 sekunnin ajan. Voit poistaa tämän vaiheen kommentoimalla "iic_main_thread.c" rivin 273. Jos kommentoit sitä, sinun on poistettava rivit 323 - 325 "iic_main_thread.c". Nämä arvot kerättiin aluksi yllä olevasta magnetometrin kalibroinnista ja liitettiin sitten arvoina.
  7. Kalibroinnin jälkeen vakautuskoodi alustetaan ja laite pitää kameran vakaana.

Suositeltava: