Obsah:

Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na radiči motora DC RoboClaw a Arduino: 5 krokov (s obrázkami)
Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na radiči motora DC RoboClaw a Arduino: 5 krokov (s obrázkami)

Video: Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na radiči motora DC RoboClaw a Arduino: 5 krokov (s obrázkami)

Video: Posuvník kamery na sledovanie objektov s rotačnou osou. 3D tlačené a postavené na radiči motora DC RoboClaw a Arduino: 5 krokov (s obrázkami)
Video: 6 способов уменьшить поток с IP камеры 2024, November
Anonim
Image
Image
Hardvérový dizajn + zostava + 3D tlač
Hardvérový dizajn + zostava + 3D tlač

Projekty Fusion 360 »

Tento projekt je jedným z mojich obľúbených projektov, odkedy som spojil svoj záujem o tvorbu videa s DIY. Vždy som sa pozeral na tieto filmové zábery a chcel som ich napodobniť vo filmoch, kde sa kamera pohybuje po obrazovke a pri posúvaní sleduje objekt. Inak dodávanému 2d videu to dodáva veľmi zaujímavý hĺbkový efekt. Keďže som to chcel zopakovať bez toho, aby som míňal tisíce dolárov na hollywoodsku výstroj, rozhodol som sa postaviť taký posuvník fotoaparátu sám.

Celý projekt je postavený na častiach, ktoré môžete 3D tlačiť, a kód beží na populárnej doske Arduino. Všetky projektové súbory, ako sú súbory CAD a kód, sú k dispozícii na stiahnutie nižšie.

Súbory CAD/ 3D tlače sú k dispozícii tu

Súbor kódu Arduino je k dispozícii tu

Projekt sa točí okolo 2 prevodových kartáčovaných jednosmerných motorov a ovládača motora Basic Micro Roboclaw Motor. Tento ovládač motora môže transformovať kartáčované jednosmerné motory na vynikajúci typ servo s neuveriteľnou polohovou presnosťou, tonami krútiaceho momentu a celých 360 stupňov otáčania. Viac o tom neskôr.

Predtým, ako budeme pokračovať, si najskôr pozrite video tutoriál, ktorý je tu prepojený. Tento tutoriál vám poskytne prehľad o tom, ako vytvoriť tento projekt, a táto príručka s pokynmi sa bude podrobnejšie zaoberať tým, ako som tento projekt postavil.

Materiály-

  • 2x 1 meter dlhé závitové tyče m10 slúžiace na spojenie všetkých dielov
  • 8x matice M10 na upevnenie dielov k závitovým tyčiam
  • 2x 95 cm dlhé 8 mm hladké oceľové tyče, na ktoré sa môže posúvač posúvať
  • 4x ložiská lm8uu, aby sa posúvač hladko posúval na oceľové tyče
  • 4x 10 mm dlhé m3 matice na montáž motora
  • 2 x skateboardové ložiská (vonkajší priemer 22 mm, vnútorný priemer 8 mm) pre os otáčania
  • 1x 15 mm ložisko pre voľnobežnú stranu
  • 1x 4 cm dlhá skrutka m4 s poistnou maticou m4 na upevnenie ložiska vodiaceho kolesa na 3D tlačenú časť vloženého kolesa.
  • Prevodovka s 20 zubami a vnútorným priemerom 4 mm pre motor posúvača. Presná kladka nie je veľmi dôležitá, pretože váš jednosmerný motor by mal byť vybavený dostatočným krútiacim momentom. Uistite sa, že je rovnaká ako výška vášho opaska
  • 2 metre dlhý pás GT2. Opäť môžete použiť akýkoľvek pás, pokiaľ sa zhoduje s rozstupom zubov vašich kladiek.

Elektronika

  • 2 * Prevodové jednosmerné motory s kodérmi (jeden riadi bočný pohyb, druhý ovláda os otáčania). Tu je ten, ktorý som použil. Viac o tom v elektronickej časti príručky
  • Ovládač motora DC RoboClaw. (Použil som duálny 15Amp regulátor, pretože mi umožňoval ovládať oba motory jedným ovládačom)
  • Akékoľvek Arduino. Použil som Arduino UNO
  • Batéria/ zdroj energie. (Použil som 7,4 V 2 -článkovú LiPo batériu)
  • Obrazovka (Na zobrazenie ponuky. Funguje akákoľvek obrazovka kompatibilná s U8G, použil som túto 1,3 -palcovú obrazovku OLED)
  • Rotačný snímač (Na navigáciu a konfiguráciu možností v ponuke)
  • Fyzické tlačidlo (na spustenie pohybu posúvača)

Krok 1: Návrh hardvéru + zostava + 3D tlač

Elektronika
Elektronika

Ďalej prejdeme k elektronike. Elektronika je miesto, kde má tento projekt veľkú flexibilitu.

Začnime s jadrom tohto projektu- 2 kartáčované jednosmerné motory.

Brúsené jednosmerné motory som si vybral z niekoľkých dôvodov.

  1. Kartáčované motory sú v porovnaní s krokovými motormi oveľa jednoduchšie na zapojenie a ovládanie
  2. Kartáčované jednosmerné motory sú oveľa ľahšie ako jednosmerné motory, čo je obzvlášť dôležité pre motor s rotačnou osou, pretože tento motor sa fyzicky pohybuje bočne s kamerou a zaistiť, aby bolo čo najľahšie, aby sa zabránilo nadmernému namáhaniu motora posúvača primárnej kamery.

Vybral som si tento konkrétny jednosmerný motor. Tento motor mi poskytol extrémne vysoký krútiaci moment, ktorý bol potrebný na presun takého veľkého zaťaženia kamery. Vysoký prevodový stupeň navyše znamenal, že špičkové otáčky boli pomalé, čo znamenalo, že som mohol filmovať pomalšie pohyby a vysoké prevody tiež viedli k vyššej polohovej presnosti, pretože jedno otočenie výstupného hriadeľa o 360 stupňov znamenalo 341,2 impulzov snímača motora.

Tým sa dostávame k pohybovému ovládaču RoboClaw. Radič motora DC s dvojitým jednosmerným motorom Roboclaw preberá jednoduché pokyny z vášho Arduina prostredníctvom jednoduchých kódových príkazov a robí všetko náročné spracovanie a dodávku energie, aby váš motor fungoval tak, ako mal. Arduino môže posielať signály do Roboclaw prostredníctvom PWM, analógového napätia, jednoduchého sériového alebo paketového sériového pripojenia. Paketové sériové čísla sú najlepšou cestou, pretože vám umožňujú získať späť informácie z robota, ktoré sú potrebné na sledovanie polohy. V ďalšom kroku (programovanie) sa ponorím hlbšie do softvérovej/programovacej časti Roboclaw.

V zásade môže Roboclaw transformovať DC kartáčovaný motor pomocou enkodéra tak, aby bol viac ako servo, vďaka schopnosti RoboClaw vykonávať polohové ovládanie. Na rozdiel od tradičného serva má teraz váš kartáčovaný jednosmerný motor oveľa vyšší krútiaci moment, oveľa väčšiu polohovú presnosť vďaka vysokému prevodu motora a čo je najdôležitejšie, váš jednosmerný motor sa môže nepretržite otáčať o 360 stupňov, pričom tradičné servo to nedokáže.

Ďalšou elektronickou časťou je obrazovka. Pre svoju obrazovku som si vybral tento panel OLED kvôli jeho veľkosti a vysokému kontrastu. Tento vysoký kontrast je neuveriteľný a používanie obrazovky na priamom slnečnom svetle je veľmi jednoduché, pričom nevydáva príliš veľa svetla, ktoré by mohlo rušiť potenciálny tmavý záber kamery. Túto obrazovku je možné ľahko vymeniť za inú obrazovku kompatibilnú s U8G. Úplný zoznam kompatibilných obrazoviek je k dispozícii tu. V skutočnosti bol tento projekt zámerne kódovaný okolo knižnice U8G, aby majitelia kutilov ako vy mali väčšiu flexibilitu vo svojich častiach.

Konečnými časťami elektroniky pre tento projekt boli rotačný snímač a tlačidlo na spustenie pohybu posúvača. Kodér vám umožňuje navigáciu v ponuke obrazovky a konfiguráciu celej ponuky posuvníka jediným otočným voličom. Rotačný kodér nemá žiadnu „koncovú“polohu ako tradičný potenciometer, čo je obzvlášť užitočné na vyladenie súradníc x a y sledovania objektu na obrazovke. Tlačidlo slúži výlučne na spustenie pohybu posúvača bez toho, aby ste museli manipulovať s rotačným snímačom.

Krok 3: Programovanie posuvníka kamery

Programovanie posuvníka kamery
Programovanie posuvníka kamery
Programovanie posuvníka kamery
Programovanie posuvníka kamery

Kódovanie bolo zďaleka najťažšou výzvou tohto projektu. Viete, od začiatku som chcel, aby bol posuvník ovládateľný z obrazovky. Aby bol tento projekt kompatibilný s čo najväčším počtom obrazoviek, musel som pre Arduino použiť Knižnicu U8Glib. Táto knižnica podporuje viac ako 32 obrazoviek. Knižnica U8Glib však na vykreslenie ponuky na obrazovke použila obrazovú slučku, čo bolo v rozpore so schopnosťou Arduina súčasne zbierať informácie o polohe kamery, ktorá bola potrebná pre funkciu výpočtu uhla kamery (Toto je popísané v nasledujúcich pár odsekoch). U8Glib2 má alternatívu k obrazovej slučke tým, že používa niečo, čo sa nazýva možnosť vyrovnávacej pamäte celej stránky, ale knižnica spotrebovala príliš veľa pamäte a sťažila prispôsobenie zvyšku kódu vzhľadom na obmedzenia pamäte Arduino Uno. To znamenalo, že som uviazol na U8G a musel som problém vyriešiť tak, že som zabránil aktualizácii obrazovky vždy, keď bol posuvník v pohybe a Arduino potrebovalo zbierať pozičné údaje z Roboclaw. Tiež som bol nútený spustiť posúvač, aby sa začal pohybovať mimo slučky ponúk, pretože akonáhle som vstúpil do podponúk, bol by som vo vnútri obrazovej slučky a posúvač by nefungoval podľa plánu. Tento problém som tiež obišiel tým, že pohyb posuvníka spúšťalo samostatné fyzické tlačidlo.

Ďalej sa porozprávajme o prvku sledovania rotácie. Zdá sa, že integrácia tejto časti je veľmi zložitá, ale v skutočnosti je dosť jednoduchá. Implementácia je pod funkciou „motor ()“v mojom kóde Arduino. Prvým krokom je vytvorenie dvojrozmernej mriežky a rozhodnutie, kde je umiestnený objekt, ktorý chcete sledovať. Na základe toho môžete nakresliť trojuholník k vašej aktuálnej polohe. Aktuálnu polohu môžete získať z hodnoty enkodéra motora. Ak chcete konfigurovať polohu sledovaného objektu v cm/mm, budete musieť preložiť hodnotu vášho snímača na hodnotu cm/mm. To sa dá jednoducho dosiahnuť posunutím posúvača fotoaparátu o 1 cm a meraním nárastu hodnoty kodéra. Túto hodnotu môžete zadať v hornej časti kódu pod premennou encoder_mm.

Pokračujeme ďalej, teraz použijeme funkciu inverznej tangenty, aby sme získali uhol, ktorým musí kamera smerovať, aby ukazovalo na váš objekt. Inverzná dotyčnica zaberá opačnú a priľahlú stranu trojuholníka. Opačná strana trojuholníka sa nikdy nezmení, pretože je to vzdialenosť y od vášho posuvníka k objektu. Priľahlá strana posúvača fotoaparátu sa však zmení. Túto susednú stranu je možné vypočítať tak, že zoberiete polohu x objektu a odčítate od neho svoju aktuálnu polohu. Keď sa posúvač pohybuje svojim rozsahom pohybu, bude aktualizovať Arduino na hodnotu kodéra. Arduino bude opakovane prevádzať túto hodnotu kodéra na pozičnú hodnotu cm/mm x a potom vypočítať dĺžku susednej strany a nakoniec vypočítať uhol, ku ktorému musí fotoaparát vždy smerovať, aby ukázal na objekt.

Teraz, keď naše Arduino dynamicky spracováva uhol kamery, môžeme sa zaoberať konverziou tohto uhla na polohovú hodnotu, na ktorú sa má rotačný motor presunúť. Tým sa dostávame k najväčšej funkcii RoboClaw pre tento projekt. Tým, že Roboclaw uvedie hodnotu polohy, môže v podstate spôsobiť, že sa DC kartáčovaný motor správa ako servo. Na rozdiel od serva, náš motor má oveľa vyšší krútiaci moment, oveľa väčšiu presnosť a dokáže sa otáčať aj o 360 stupňov.

Kód Arduino na presunutie Roboclawa do určitej polohy je nasledujúci:

roboclaw. SpeedAccelDeccelPositionM1 (adresa, „rýchlosť“, „zrýchlenie“, „spomalenie“, „poloha, do ktorej chcete ísť“, 1);

Na to, aby ste pozičnú hodnotu motora vyladili tak, aby zodpovedala vášmu uhlu kamery, budete musieť kameru kamery manuálne posunúť o 180 stupňov. Ďalej uvidíte, ako veľmi sa hodnota kodéra zmenila z pohybu dosky kamery z 0 stupňov na 180 stupňov. To vám poskytne rozsah kodéra. Tento rozsah môžete zadať vo funkcii motora, ktorá mapuje uhol kamery Arduina na pozičnú hodnotu. Toto je tiež uvedené v kóde, takže by malo byť ľahké nájsť *****

RoboClaw mi tiež dal možnosť naladiť ďalšie faktory, ako sú hodnoty zrýchlenia, spomalenia a PID. To mi ďalej umožnilo vyhladiť pohyb osi otáčania, najmä keď boli zmeny uhlov malé a pridali sa trhania bez vysokej hodnoty „D“PID. Hodnoty PID môžete tiež automaticky doladiť prostredníctvom počítačovej aplikácie Roboclaw.

Krok 4: Ovládanie posúvača fotoaparátu

Ovládanie posúvača fotoaparátu
Ovládanie posúvača fotoaparátu

Teraz sa dostávame k zábavnej časti, obsluhe posúvača Menu má 4 hlavné karty. Horná karta je venovaná ovládaniu rýchlosti. Stredný riadok ponuky obsahuje karty na konfiguráciu polohy X & Y sledovaného objektu v mm a tiež konfiguráciu, či chceme, aby sa posuvník otáčal a sledoval náš objekt, alebo len robíme jednoduchý posuvný pohyb bez otáčania. Otočením otočného enkodéra sa môžete pohybovať v rôznych možnostiach ponúk. Ak chcete konfigurovať niektorú z možností, prejdite na ňu a stlačte otočný snímač. Po stlačení otáčaním rotačného enkodéra sa zmení hodnota zvýraznenej podponuky, a nie listovaním v ponuke. Akonáhle dosiahnete požadovanú hodnotu, môžete znova kliknúť na rotačný snímač. Teraz ste späť v hlavnej ponuke a môžete sa pohybovať medzi rôznymi kartami. Keď ste pripravení, jednoducho stlačte tlačidlo Prejsť vedľa obrazovky a posúvač robí svoje!

Uistite sa, že akonáhle budete s posuvníkom fotoaparátu hotoví, fotoaparát bude v „domovskej“polohe: na bočnej strane posúvača, na ktorej sa spustil. Dôvodom je to, že enkodér motora nie je absolútny kodér, čo znamená, že Roboclaw/Arduino nemôže povedať, kde je kodér. Môžu iba povedať, ako veľmi sa kodér zmenil od posledného zapnutia. To znamená, že keď vypnete posúvač fotoaparátu, posúvač „zabudne“polohu posúvača a resetuje kodér na hodnotu 0. Ak teda posuvník vypnete na druhej strane, keď ho zapnete, posuvník sa skúste sa posunúť ďalej ako na okraj a naraziť do steny posuvníka. Toto správanie kodéra je tiež dôvodom, prečo kamera resetuje uhol natočenia po každom pohybe posúvania kamery. Rotačná os sa tiež chráni pred nárazom na koniec rozsahu pohybu.

Môžete to napraviť pridaním koncových zarážok a postupu návratu po spustení. Práve to používajú 3D tlačiarne.

Krok 5: Záverečné myšlienky + budúce vylepšenia

Dôrazne odporúčam, aby každý staviteľ vytvoril svoje vlastné verzie tohto posúvača, než aby staval presne ten istý posúvač. Vylepšenie môjho dizajnu vám umožní zostaviť posúvač podľa vašich presných špecifikácií a zároveň lepšie porozumieť fungovaniu elektroniky a kódu.

Kód som urobil tak, aby bol čo najčitateľnejší a najkonfigurovateľnejší, aby ste mohli vyladiť/kalibrovať rôzne premenné kódu pre svoje špecifikácie posuvníka. Kód je tiež plne postavený na funkciách, takže ak chcete skopírovať/ vyladiť/ prepísať určité správanie posuvníka, nemusíte spätne analyzovať a prepracovávať celý kód, ale iba časti, ktoré chcete upraviť.

Nakoniec, ak by som urobil verziu 2.0, tu je niekoľko vylepšení, ktoré by som urobil

  1. Vyšší prevodový pomer pre motor s rotačnou osou. Vyšší prevodový pomer znamená, že môžem vykonávať presnejšie malé pohyby. Toto je obzvlášť dôležité, keď je fotoaparát ďaleko od vášho predmetu a uhol kamery sa mení veľmi pomaly. V súčasnej dobe môj motor nie je zaradený príliš vysoko a môže to mať za následok mierne trhavé pohyby, keď jazdec fotoaparátu beží príliš pomaly alebo keď dochádza k veľmi malým zmenám uhla rotácie. Pridanie vysokej hodnoty PID „D“mi to pomohlo zbaviť sa, ale stálo to za cenu mierne nižšej presnosti sledovania objektov.
  2. Modulárna dĺžka. Je to neprijateľný cieľ, ale bol by som rád, keby bol posuvník fotoaparátu modulárny, čo znamená, že k nemu môžete ľahko pripevniť dlhšie dráhy. To je dosť ťažké, pretože človek bude musieť perfektne zarovnať obe stopy a zistiť, ako funguje systém pásov. Napriek tomu by to bol skvelý upgrade!
  3. Kľúčový rámček s vlastným pohybom. Rád by som do tohto posúvača fotoaparátu zaviedol koncept pohybov s kľúčovými snímkami. Keyframing je technika veľmi bežne používaná vo video a audio produkcii. Umožnilo by to nelineárne pohyby kamery, kde kamera prejde do polohy, čaká, potom sa presunie do inej polohy inou rýchlosťou, čaká, potom prejde na tretiu pozíciu atď.
  4. Bluetooth/ bezdrôtové ovládanie telefónu. Bolo by skutočne skvelé, keby ste mohli bezdrôtovo konfigurovať parametre posuvníka kamery a byť schopní nasadiť posúvač kamery na ťažko prístupných miestach. Telefónna aplikácia by mohla tiež otvoriť príležitosti na integráciu rámcov kľúčov, ako je uvedené v poslednom odseku.

To je pre tento návod všetko. Neváhajte položiť akékoľvek otázky v sekcii komentárov nižšie.

Ak chcete získať ďalšie pokyny pre obsah a elektroniku, môžete sa tiež pozrieť na môj kanál YouTube tu.

Odporúča: