Obsah:

Ruční stabilizátor fotoaparátu: 13 kroků (s obrázky)
Ruční stabilizátor fotoaparátu: 13 kroků (s obrázky)

Video: Ruční stabilizátor fotoaparátu: 13 kroků (s obrázky)

Video: Ruční stabilizátor fotoaparátu: 13 kroků (s obrázky)
Video: Stabilizátor DJI Osmo Mobile 6 + iPhone 14 Pro Max | 4K 2024, Červenec
Anonim
Ruční stabilizátor fotoaparátu
Ruční stabilizátor fotoaparátu

Úvod

Toto je průvodce vytvořením 3osé ruční stabilizační kamery pro GoPro pomocí vývojové desky Digilent Zybo Zynq-7000. Tento projekt byl vyvinut pro třídu CPE Real-Time Operating Systems (CPE 439). Stabilizátor používá tři serva a IMU ke korekci pohybu uživatele tak, aby byla kamera v rovině.

Díly požadované pro projekt

  • Vývojová deska Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 serva HiTec HS-5485HB (kupte si pohyb 180 stupňů nebo program od 90 do 180 stupňů)
  • 1 servo HiTec HS-5685MH (kupte si pohyb o 180 stupňů nebo program od 90 do 180 stupňů)
  • 2 standardní držáky serva
  • 1 prkénko
  • 15 propojovacích kabelů typu male-to-male
  • 4 propojovací vodiče muž-žena
  • Horké lepidlo
  • Rukojeť nebo rukojeť
  • Dřevěná hmoždinka o průměru 5 mm
  • GoPro nebo jiný fotoaparát a montážní hardware
  • Napájení schopné výstupu 5V.
  • Přístup k 3D tiskárně

Krok 1: Nastavení hardwaru Vivado

Nastavení hardwaru Vivado
Nastavení hardwaru Vivado

Začněme vytvořením podkladového návrhu bloku pro projekt.

  1. Otevřete Vivado 2016.2, klikněte na ikonu „Vytvořit nový projekt“a klikněte na „Další>“.
  2. Pojmenujte svůj projekt a klikněte na „Další>“.
  3. Vyberte projekt RTL a klikněte na „Další>“.
  4. Zadejte do vyhledávacího pole xc7z010clg400-1 a poté vyberte část a stiskněte „Další>“a „Dokončit“.

Krok 2: Nastavení návrhu bloku

Nyní začneme generovat návrh bloku přidáním a nastavením bloku Zynq IP.

  1. Na levém panelu v části IP Integrator klikněte na „Vytvořit návrh bloku“a poté klikněte na „OK“.
  2. Klikněte pravým tlačítkem na kartu „Diagram“a vyberte „Přidat IP…“.
  3. Zadejte „ZYNQ7 Processing System“a klikněte na výběr.
  4. Poklepejte na zobrazený blok Zynq.
  5. Klikněte na „Importovat nastavení XPS“a importujte dodaný soubor „ZYBO_zynq_def.xml“.
  6. Přejděte na „Konfigurace MIO“, vyberte „Jednotka aplikačního procesoru“a aktivujte časovače Timer 0 a Watchdog.
  7. Na stejné kartě v části „I/O periferie“vyberte ENET 0 (a změňte rozevírací nabídku na „MIO 16.. 27“, USB 0, SD 0, UART 1, I2C 0.
  8. V části „GPIO“zaškrtněte GPIO MIO, ENET Reset, USB Reset a I2C Reset.
  9. Nyní přejděte na „Konfigurace hodin“. Vyberte FCLK_CLK0 pod hodinami PL Fabric. Poté klikněte na „OK“.

Krok 3: Vytvořte vlastní blok IP PWM

Tento IP blok umožňuje desce vyslat signál PWM ven, aby řídil pohyb serva. Práce byla silně založena na tutoriálu Digitronix Nepálu, který najdete zde. Byla přidána logika ke zpomalení hodin, takže puls vycházel správnou rychlostí. Blok převezme číslo od 0 do 180 a převede jej na impuls od 750 do 2150 usec.

  1. Nyní na kartě Nástroje poblíž levého horního rohu klikněte na „Vytvořit a zabalit IP…“a klikněte na Další.
  2. Poté vyberte „Vytvořit novou periferii AXI4“a stiskněte Další.
  3. Pojmenujte svůj blok IP PWM (pojmenovali jsme ho pwm_core) a klikněte na Další a poté na další stránce také na Další.
  4. Nyní klikněte na „Upravit IP“a stiskněte Dokončit. Tím se otevře nové okno pro úpravu bloku pwm.
  5. Na kartě „Zdroje“a v části „Zdroje návrhu“rozbalte „pwm_core_v1_0“(nahraďte pwm_core svým jménem) a otevřete soubor, který bude viditelný.
  6. Zkopírujte a vložte kód poskytnutý pod 'pwm_core_v1_0_S00_AXI.v' do souboru zip v dolní části projektu. Ctrl + Shift + R a nahraďte 'pwm_core' svým jménem pro blok ip.
  7. Dále otevřete 'name _v1_0' a zkopírujte poskytnutý kód do souboru 'pwm_core_v1_0.v'. Ctrl + Shift + R a nahradit 'pwm_core' názvem.
  8. Nyní přejděte na kartu „Balíček IP - název“a vyberte „Parametry přizpůsobení“.
  9. Na této kartě bude v horní části žlutý pruh, který má propojený text. Vyberte toto a v poli se zobrazí „Skryté parametry“.
  10. Nyní přejděte na „Uživatelské GUI“a klikněte pravým tlačítkem na Pwm Counter Max a vyberte „Upravit parametr…“.
  11. Zaškrtněte políčka „Visible in Customization GUI“a „Specify Range“.
  12. Změňte rozevírací nabídku „Typ:“na Rozsah celých čísel a nastavte minimum na 0 a maximum na 65535 a zaškrtněte políčko „Zobrazit rozsah“. Nyní klikněte na OK.
  13. Přetáhněte Pwm Counter Max pod strom 'Stránka 0'. Nyní přejděte na „Zkontrolovat a zabalit“a klikněte na tlačítko „Znovu zabalit IP“.

Krok 4: Přidejte PWM IP blok do návrhu

Přidejte do návrhu PWM IP Block
Přidejte do návrhu PWM IP Block

Přidáme blok IP do návrhu bloku, abychom uživateli umožnili přístup k bloku IP PWM prostřednictvím procesoru.

  1. Klikněte pravým tlačítkem na kartu diagramu a klikněte na „Nastavení IP …“. Přejděte na kartu „Správce úložiště“.
  2. Klikněte na zelené tlačítko plus a vyberte jej. Nyní najděte ip_repo ve Správci souborů a přidejte jej do projektu. Poté stiskněte Použít a poté OK.
  3. Klikněte pravým tlačítkem na kartu diagramu a klikněte na „Přidat IP…“. Zadejte název bloku IP PWM a vyberte jej.
  4. V horní části obrazovky by měl být zelený pruh, nejprve vyberte „Spustit automatizaci připojení“a klikněte na OK. Poté klikněte na „Spustit automatizaci bloků“a klikněte na OK.
  5. Dvakrát klikněte na blok PWM a změňte Pwm Counter Max na 1024 ze 128.
  6. Umístěte ukazatel myši na PWM0 v bloku PWM. Měla by existovat malá tužka, která se objeví, když to uděláte. Klikněte pravým tlačítkem a vyberte „Vytvořit port…“a po otevření okna klikněte na OK. Tím se vytvoří externí port pro přenos signálu.
  7. Opakujte krok 6 i pro PWM1 a PWM2.
  8. Na postranním panelu vyhledejte malou ikonu kruhové dvojité šipky a klikněte na ni. Obnoví rozvržení a návrh vašeho bloku by měl vypadat jako na obrázku výše.

Krok 5: Konfigurujte HDL Wrapper a nastavte soubor omezení

Konfigurujte HDL Wrapper a nastavte soubor omezení
Konfigurujte HDL Wrapper a nastavte soubor omezení

Nyní vygenerujeme High Level Design pro náš Block Design a poté namapujeme PWM0, PWM1 a PWM2 na Pmod piny na desce Zybo.

  1. Přejděte na kartu „Zdroje“. Klikněte pravým tlačítkem na soubor návrhu bloku v části „Zdroje návrhu“a klikněte na „Vytvořit obálku HDL…“. Vyberte „Kopírovat generovaný obal, aby bylo možné provádět úpravy uživatele“, a klikněte na OK. To generuje návrh na vysoké úrovni pro návrh bloku, který jsme vytvořili.
  2. Pmod, na který budeme vystupovat, je JE.
  3. V části Soubor vyberte „Přidat zdroje…“, vyberte „Přidat nebo vytvořit omezení“a klikněte na Další.
  4. Klikněte na Přidat soubory a vyberte zahrnutý soubor „ZYBO_Master.xdc“. Když se podíváte do tohoto souboru, všimnete si, že je vše odkomentováno, kromě šesti řádků „set_property“pod „## Pmod Header JE“. Všimněte si, že PWM0, PWM1 a PWM2 jsou argumenty pro tyto řádky. Mapují na Pin 1, Pin 2 a Pin 3 JE Pmod.

Krok 6: Generování bitového toku

Než budeme pokračovat, musíme vygenerovat bitový tok pro návrh hardwaru, který se má exportovat do SDK.

  1. V části „Program a ladění“na postranním panelu vyberte „Generovat bitstream“. Spustí se syntéza, potom implementace a poté se vygeneruje bitový tok pro návrh.
  2. Opravte všechny chyby, které se objeví, ale varování lze obecně ignorovat.
  3. Přejděte na Soubor-> Spustit SDK a klikněte na OK. Tím se otevře Xilinx SDK.

Krok 7: Nastavení projektu v SDK

Tato část může být trochu frustrující. V případě pochybností vytvořte nový BSP a vyměňte starý. Ušetřilo nám to spoustu času na ladění.

  1. Začněte stažením nejnovější verze FreeRTOS zde.
  2. Extrahujte vše ze stahování a importujte FreeRTOS do SDK kliknutím na Soubor-> Importovat a v části „Obecné“klikněte na „Existující projekty do pracovního prostoru“a poté klikněte na Další.
  3. Ve složce FreeRTOS přejděte na „FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702“. Importujte „RTOSDemo“pouze z tohoto umístění.
  4. Nyní vygenerujte balíček Board Board Package (BSP) kliknutím na Soubor-> Nový balíček podpory Board.
  5. Vyberte „ps7_cortexa9_0“a zaškrtněte „lwip141“a klikněte na OK.
  6. Klikněte pravým tlačítkem na modrou složku RTOSDemo a vyberte „Reference projektu“.
  7. Zrušte zaškrtnutí políčka „RTOSDemo_bsp“a zkontrolujte nový BSP, který jsme právě vytvořili.

Krok 8: Úpravy kódu FreeRTOS

Kód, který poskytujeme, lze rozdělit do 7 různých souborů. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h a iic_imu.h. Kód v iic_main_thread.c byl upraven z knihovny Kris Winer, kterou najdete zde. Převáděli jsme hlavně jeho kód, aby zahrnoval úkoly a aby fungoval s deskou Zybo. Přidali jsme také funkce pro výpočet korekce orientace kamery. Nechali jsme několik tiskových příkazů, které jsou užitečné pro ladění. Většina z nich je komentována, ale pokud cítíte potřebu, můžete je odkomentovat.

  1. Nejjednodušší způsob, jak upravit soubor main.c, je nahradit kód zkopírovaným kódem z našeho zahrnutého souboru main.c.
  2. Chcete -li vytvořit nový soubor, klikněte pravým tlačítkem na složku src pod RTOSDemo a vyberte C Zdrojový soubor. Pojmenujte tento soubor "iic_main_thread.c".
  3. Zkopírujte kód z přiloženého souboru „iic_main_thread.c“a vložte jej do nově vytvořeného souboru.
  4. Opakujte kroky 2 a 3 se zbývajícími soubory.
  5. vyžaduje instrukci propojení v gcc. Chcete -li to přidat do cesty sestavení, klikněte pravým tlačítkem na RTOSDemo a vyberte „Nastavení sestavení C/C ++“.
  6. Otevře se nové okno. Přejděte na ARC v7 gcc linker-> Knihovny. Vyberte malý přidaný soubor v pravém horním rohu a zadejte „m“. To bude zahrnovat matematickou knihovnu v projektu.
  7. Vytvořte projekt pomocí Ctrl + B a potvrďte, že vše funguje. Zkontrolujte generovaná varování, ale můžete je ignorovat.
  8. Existuje několik míst, která budou vyžadovat úpravu, zejména magnetická deklinace vaší aktuální polohy. V kalibrační části tutoriálu vysvětlíme, jak to změnit.

Krok 9: 3D tisk pro stabilizátor

3D tisk pro stabilizátor
3D tisk pro stabilizátor

Pro tento projekt potřebujete 3D tisk několika dílů. Pravděpodobně lze zakoupit díly, které mají podobné rozměry/velikosti jako naše tištěné díly.

  1. Pomocí dodaných souborů vytiskněte držák a držák GoPro.
  2. Do souboru.stl musíte přidat lešení.
  3. Po vytištění ořízněte/očistěte části přebytečného lešení.
  4. Pokud chcete, dřevěnou hmoždinku můžete vyměnit za 3D vytištěný díl.

Krok 10: Sestavení dílů

Sestavení dílů
Sestavení dílů

Existuje několik částí pro montáž stabilizátoru. Zakoupené držáky jsou dodávány se 4 samořeznými šrouby a 4 šrouby s maticemi. Vzhledem k tomu, že existují 3 serva, je třeba na jeden ze servo rohů předem poklepat, aby se dovnitř vešly 2 šrouby.

  1. Pájejte 8 kolíků na průlom IMU, 4 na každé straně.
  2. IMU je připevněna k 3D tištěnému držáku pro GoPro ve středu držáku.
  3. Orientujte držák tak, aby otvory pro upevnění serva byly na levé straně. Umístěte IMU na nejbližší hranu k vám, s kolíky visícími na okraji. Poté umístěte držák GoPro na horní část IMU, přilepte IMU a držák na místo na držáku.
  4. Připojte HS-5485HB k držáku serva, který je integrován do 3D tištěného ramene.
  5. Zašroubujte držák GoPro do servomotoru připevněného k paži a ujistěte se, že je servo nastaveno tak, aby bylo uprostřed svého rozsahu pohybu.
  6. Dále připevněte servo HS-5685MH k držáku serva. Poté klepněte na servo houkačku jedním ze šroubů. Nyní připojte servo ke spodní části posledního držáku serva.
  7. Nyní připevněte poslední servo k držáku, do kterého je našroubováno servo HS-5685MH. Poté přišroubujte rameno k tomuto servu a ujistěte se, že je rameno našroubované tak, aby se mohlo pohybovat o 90 stupňů v každém směru.
  8. Chcete -li dokončit konstrukci kardanového závěsu, přidejte malý kousek dřevěné hmoždinky pro připojení mezi držákem GoPro a ramenem s 3D potiskem. Nyní jste sestavili stabilizátor.
  9. Nakonec můžete přidat držadlo připojené ke spodnímu držáku serva.

Krok 11: Připojení Zybo ke stabilizátoru

Připojení Zybo ke stabilizátoru
Připojení Zybo ke stabilizátoru

Při tom je třeba dávat pozor na několik věcí. Chcete se ujistit, že 5V z napájecího zdroje nikdy nepůjde na desku Zybo, protože by to vedlo k problémům s deskou. Nezapomeňte znovu zkontrolovat propojky, abyste potvrdili, že nejsou přepínány žádné vodiče.

  1. K připevnění Zybo ke stabilizátoru budete potřebovat 15 propojek mezi muži a muži a 4 propojky mezi muži a ženami.
  2. Nejprve připojte dva propojky k vašemu 5V napájení podél kolejnic + a - na desce. Ty budou dodávat energii servům.
  3. Poté připojte 3 páry propojek ke kolejnicím + a - na desce. To bude síla pro každé ze serva.
  4. Druhý konec propojek + a - zapojte do každého ze serva.
  5. Připojte propojku mezi - kolejnici prkénka a jeden z pinů GND na Zybo JE Pmod (viz obrázek kroku 5). Tím se vytvoří společný základ mezi deskou Zybo a napájecím zdrojem.
  6. Dále připojte signální vodič ke kolíku 1, kolíku 2 a kolíku 3 JE Pmod. Pin 1 mapuje na spodní servo, pin 2 mapy na servo na konci ramene a pin 3 mapy na střední servo.
  7. Zapojte 4 zásuvkové vodiče do pinů GND, VDD, SDA a SCL breakout IMU. GND a VDD zapojte do GND a 3V3 na piny JF. Zapojte pin SDA do pinu 8 a SCL do pinu 7 na JF (viz obrázek kroku 5).
  8. Nakonec připojte počítač k desce pomocí kabelu micro USB. To umožní uart komunikaci a umožní vám naprogramovat desku Zybo.

Krok 12: Opravená oprava severu

Opravdová severní oprava
Opravdová severní oprava

Kalibrace magnetometru v IMU je důležitá pro správnou funkci zařízení. Magnetická deklinace, která koriguje magnetický sever na skutečný sever.

  1. Chcete -li napravit rozdíl od magnetického a skutečného severu, musíte použít kombinaci dvou služeb, Google Maps a kalkulačku magnetického pole NOAA.
  2. Pomocí Map Google zjistíte svou zeměpisnou šířku a délku aktuální polohy.
  3. Zjistěte svou aktuální zeměpisnou délku a šířku a zapojte ji do kalkulačky magnetického pole.
  4. To, co se vrací, je magnetická deklinace. Zapojte tento výpočet do kódu na řádku 378 „iic_main_thread.c“. Pokud je vaše deklinace na východě, pak odečtěte od hodnoty vybočení, pokud na západě, pak přidejte k hodnotě stáčení.

*fotografie byla převzata z průvodce připojením MPU 9250 společnosti Sparkfun, který najdete zde.

Krok 13: Spuštění programu

Spuštění programu
Spuštění programu

Okamžik, na který jste čekali! Nejlepší na projektu je vidět, že funguje. Všimli jsme si jednoho problému, že dochází k posunu od hodnot hlášených z IMU. K opravě tohoto driftu může pomoci nízkoprůchodový filtr a korekci tohoto driftu pomůže také manipulace s magnetometrem, akcelerací a gyroskopickou kalibrací.

  1. Nejprve vytvořte vše v sadě SDK, to lze provést stisknutím Ctrl + B.
  2. Ujistěte se, že je napájení zapnuto a nastaveno na 5V. Znovu zkontrolujte, zda jsou všechny vodiče na správných místech.
  3. Poté spusťte program stisknutím zeleného trojúhelníku v horním středu hlavního panelu.
  4. Když se program spustí, všechna serva se resetují do svých 0 poloh, takže buďte připraveni na pohyb soupravy. Jakmile se program inicializuje, serva se poté přichytí zpět do svých 90 stupňových poloh.
  5. Spustí se funkce kalibrace magnetometru a vytisknou se pokyny na terminál UART, ke kterému se můžete připojit pomocí sériového monitoru, například „tmelu“nebo sériového monitoru dodaného v sadě SDK.
  6. Kalibrace vám umožní přesunout zařízení na obrázku 8 přibližně na 10 sekund. Tento krok můžete odebrat přidáním komentáře do řádku 273 „iic_main_thread.c“. Pokud to okomentujete, musíte odkomentovat řádky 323 - 325 "iic_main_thread.c". Tyto hodnoty byly původně shromážděny z výše uvedené kalibrace magnetometru a poté zapojeny jako hodnoty.
  7. Po kalibraci se inicializuje stabilizační kód a zařízení udrží kameru stabilní.

Doporučuje: