Obsah:

[WIP] Vytvoření kreslícího robota ovládaného páskem Myo: 11 kroků
[WIP] Vytvoření kreslícího robota ovládaného páskem Myo: 11 kroků

Video: [WIP] Vytvoření kreslícího robota ovládaného páskem Myo: 11 kroků

Video: [WIP] Vytvoření kreslícího robota ovládaného páskem Myo: 11 kroků
Video: Jak vydělávat love beatama #2 ✅ FL STUDIO TUTORIÁL 91 📂 @VOODOO808 (Český Návod) 2024, Červenec
Anonim
[WIP] Vytvoření kreslícího robota ovládaného páskem Myo
[WIP] Vytvoření kreslícího robota ovládaného páskem Myo

Ahoj všichni!

Před několika měsíci jsme se rozhodli pokusit se vypořádat s myšlenkou vybudovat otevřený rámový robot, který k ovládání používal pouze pásmo Myo. Když jsme se poprvé pustili do projektu, věděli jsme, že bude nutné jej rozdělit na několik různých fází. Naší první hlavní fází bylo pokusit se omotat hlavu kolem designu s otevřeným rámem pro našeho kreslícího robota. Toto je nestandardní nastavení a chtěli jsme zjistit, jaké jsou výhody tohoto designu.

Za druhé, věděli jsme, že vybudování tohoto prototypu bude užitečné pouze pro nás. Náš návrh a plán byl přesunout náš konečný rám do kovu a pomocí arduina získat naši polohu z akcelerometru a gyroskopu zabudovaného do pásma Myo. Tyto informace by pak byly odeslány do motorů a kopírovaly by pohyb uživatele. Věděli jsme, že díky tomu se naše druhá fáze rozdělí na tři hlavní aspekty:

  1. programování od Myo k motorům, přes Arduino
  2. elektrický design k převodu našich dat do pohybu
  3. mechanický design pro vytvoření přiměřeně velkého rámu, který usnadní náš pohyb

Každý člen našeho týmu se cítil nejpohodlněji s jedinečnou součástí našeho procesu navrhování, a proto jsme se rozhodli rozdělit naši práci mezi každého člověka. Během celého procesu navrhování jsme také udržovali blog, abychom sledovali naše každodenní myšlení, na rozdíl od globálnějšího vzhledu.

Krok 1: Co jsme plánovali udělat

Image
Image

Naším cílem bylo spojit tyto dva produkty způsobem, který jsme dříve neviděli. Vydali jsme se vytvořit živé relé mezi páskem Myo a naší vlastní verzí designu inspirovaného AxiDraw od Evil Mad Scientist.

Krok 2: Seznam složek prototypu

2 2 x 4 dřevěné desky 1 Měření řemene nebo řetězu> = 65”4 Dřevěné hřebíky 3 Ozubená kola se zuby, které se hodí k řemenu nebo řetězu 4 3 x 8 vex děrovaných desek 30 ⅜” Gumové podložky 8 Podložky průměru 1 1 1 dřevěný průměr hmoždinka 1 'dlouhá 8 šroubů Vex 1”8 ½” šroubů Vex 8 2”šroubů Vex 8 ¼” gumové distanční podložky 48 matic matice 1 malý pásek na zip

Krok 3: [Prototyp] Zpracování dřeva našimi zbraněmi a interiérem kočáru

[Prototyp] Zpracování dřeva naše zbraně a interiér kočáru
[Prototyp] Zpracování dřeva naše zbraně a interiér kočáru

Popadli jsme dva 2x4 a rozřezali je na stejné délky (33 ¼”)

Pomocí stolní pily jsme vytvořili zářez podél úzké části desek ¼”hluboké a ⅛” široké uprostřed

Rozřízněte hmoždinku na 4 2”kusy a vyvrtejte do středu hmoždinky otvor o průměru asi ¼” pomocí vrtačky

Krok 4: [Prototyp] Výroba našeho kočáru

[Prototyp] Výroba našeho kočáru
[Prototyp] Výroba našeho kočáru
[Prototyp] Výroba našeho kočáru
[Prototyp] Výroba našeho kočáru
[Prototyp] Výroba našeho kočáru
[Prototyp] Výroba našeho kočáru

V ideálním případě bychom použili dva kusy 7x7 vex perforované oceli, ale jediné, co jsme měli k dispozici, byly pásy 2x7, takže jsme je spojili v konfiguraci „X“

Skládejte 5 gumových podložek ⅜”a zajistěte rohy desek vex k sobě

Volně zajistěte dřevěné hmoždinky, jak je znázorněno na obrázku 1, aby se volně točily s prostorem mezi nimi asi 2 palce. Pomocí obrázku zjistíte, kde by v tomto místě měly být umístěny převody. Použili jsme podložky, ale později jsme zjistili, že drobné plastové převody fungují lépe.

Pomocí šroubů ½ “vex, ¼” gumových distančních podložek a podložek o průměru 1”zajistěte podložky ve zvýšené poloze, jak ukazuje obrázek 1 (použili jsme zelené plastové převody, protože jsme nemohli najít správné podložky) a ujistěte se, že jsou podložky schopné snadno se točí a zapadá do zářezů desky.

Krok 5: [Prototyp] Dát to všechno dohromady

[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady
[Prototyp] Dát to všechno dohromady

Umístěte desku na povrch a zasuňte vozík doprostřed tak, aby podložky držely vozík nad deskou a na obou stranách desky přibily převody dolů, aby se volně točily. Na jeden konec druhé desky přibijte ozubené kolo a ujistěte se, že je vycentrované, a zasuňte jej na vozík kolmo na první desku.

Nyní musí být řemen smyčkován systémem, jak je znázorněno na obrázku, věnujte zvýšenou pozornost tomu, jak jsou hmoždinky na vnější straně pásu a jak ve středu podvozku není nic, co by mohlo bránit pásu při jeho pohybu.

Nyní musí být pás upevněn na straně desky, která nemá ozubené kolo. K upevnění našich jsme použili extra hřebík a zip. Na použité metodě ale nezáleží, pokud je pás v tomto místě ukotven

Krok 6: [Prototyp] skončil a pohybuje se

Image
Image

To by mělo být vše, natáhněte opasek v různých kombinacích a podívejte se na různé efekty, které má na paži!

Krok 7: Převedení našeho modelu do našeho hotového designu

Převedení našeho modelu do našeho hotového designu
Převedení našeho modelu do našeho hotového designu
Převedení našeho modelu do našeho hotového designu
Převedení našeho modelu do našeho hotového designu

Jakmile jsme dokončili náš prototyp, byli jsme u vytržení. Před montáží si nikdo z nás nebyl jistý, jak systém funguje. Jakmile se ale naše části spojily, rychle jsme zjistili, co se nám líbí a jak bychom to při vytváření konečného návrhu vylepšili. Naše hlavní stížnosti na řešení systému byly tyto:

  1. Měřítko

    1. Náš prototyp byl masivní a těžkopádný, takže byl náchylný k převrhnutí na okraji paží
    2. Kočár byl mnohem větší, než bylo nutné, a měl spoustu zbytečného prostoru
    3. Náš pás (běhoun tanku) byl mnohem větší, než bylo nutné, což představovalo nadbytečný prostor mezi pažemi
  2. Tření

    1. Naše odporné nášlapy neprošly po dřevěných válečcích kolíků snadno ve všech bodech
    2. Plast na dřevě způsobil, že se kočár v mnoha případech nechtěl pohybovat
  3. Motorizace

    Potřebovali jsme, aby byl systém schopný napájení

S ohledem na tyto věci jsme nakreslili plány konečného návrhu. Chtěli jsme, aby byl drawbot ovládán Myo prostřednictvím arduina, a chtěli jsme rám vyrobit hliníkový a menší.

Abychom to mohli udělat, vzali jsme procento našeho původního prototypu a od té velikosti jsme se pustili do práce. Použitím plechu, který by byl opracován tak, aby měl kanály dostatečně široké na to, aby jím prošlo stíněná ložiska, bychom měli lehký, ale robustní design, který by měl vyšší toleranci použití.

Náš prototyp nám také během několika minut umožnil určit, jak rotace motoru ovlivnila hlavu našeho zvedacího robota. Díky tomu jsme pochopili, že náš návrh ovládání bude jednodušší, než jsme očekávali. Při bližším zkoumání jsme zjistili, že pohyb motoru je aditivní! To znamená, že každý motor má na náš pohyb nezávislý požadovaný účinek, ale když je spojíme dohromady, začnou se rušit.

Pokud je například uvažován jako souřadnicová rovina, motor ležící v záporné x krajnosti bude mít vždy tendenci zatáhnout naši zásuvku do druhého a čtvrtého kvadrantu. Naopak motor ležící na kladné x končetině vždy zasune zásuvku do prvního a třetího kvadrantu. Pokud spojíme pohyb našich motorů, zruší to části řízení tohoto konfliktu a zesílí se části, které souhlasí.

Krok 8: Kódování

Zatímco jsem před několika lety pracoval v C poměrně rozsáhle, neměl jsem žádné zkušenosti s lua nebo C ++, a to znamenalo, že jsem potřeboval strávit znatelné množství času procházením dokumentace. Věděl jsem, že obecným úkolem, který se budu snažit splnit, bylo získat polohu uživatele v časových intervalech a poté ji předat motorům. Rozhodl jsem se úkol rozdělit na sebe, abych lépe strávil části, které bych potřeboval.

1. Získejte data z Myo (Lua)

Věděl jsem, že musím vymyslet způsob, jak sbírat informace od Myo. Toto byla první část výzvy, ke které jsem se chtěl přiblížit. K tomu jsem chtěl, aby uživatel před začátkem kresby zkalibroval svou velikost plátna. To by mi umožnilo mít hranici, ze které bych mohl pracovat. Poté jsem mohl normalizovat program mezi různými uživateli pouhým odebráním procenta maximálního plátna jako mých datových bodů. Rozhodl jsem se mít skriptovanou událost, která by každou půl sekundy provedla kontrolu getOrientation, protože by to umožnilo, aby kontroly nikdy neprovedly divoký skok, ze kterého byste museli hádat (například pokud se uživatel divoce houpal zpět a dále).

Tím se stal první zátaras, na který jsem narazil. Objevil jsem velmi velké omezení Lua a to mi nedovolilo čekat, než budu pokračovat ve skriptu. Jediným způsobem, jak tuto akci provést, bylo buď pozastavit procesor (což by jej pozastavilo globálně, dokonce i při podržení systémových hodin), nebo použít příkazy specifické pro OS. V mém ukázkovém kódu jsem nechal původní kontrolu OS, kterou jsem provedl (okomentoval). To bylo poté, co provedl velké množství výzkumu v dokumentaci Lua, a bylo provedeno kontrolou formátování systémové cesty. Tehdy jsem se rozhodl, že se musím podívat do dokumentace projektů, které byly dříve publikovány. Okamžitě jsem si uvědomil, kolik času jsem promarnil, a okamžitě jsem byl veden k proměnné platformy. S ním jsem byl schopen implementovat čekající příkazy specifické pro operační systém téměř okamžitě, na rozdíl od dnů, které mi trvalo dláždit mé předchozí řešení.

V této době návrhu začaly práce na elektrickém aspektu a já jsem pozastavil práci na tomto aspektu kódu. Účelem je zjistit, jak se naše motory propojily s arduino.

2. Práce kolem Arduina (C ++)

Jak byla práce s naším prkénkem stále složitější, dozvěděl jsem se, že arduino není schopné vícevláknových procesů. To byl velký klíč v mém původním návrhu kódu, a poté, co jsem si přečetl více o omezeních představených naším ovladačem, jsem zjistil, že budu muset naprogramovat, jak arduino přepne mezi těmito dvěma. To se stalo středem mého úsilí, když se blížil náš termín. Musel jsem sešrotovat velké části mého původního skriptu, protože byly navrženy tak, aby zapisovaly data do souboru synchronně s tím, že soubor čte regulátor motoru. To mělo umožnit funkci zařazování do fronty, aby se zajistilo, že i kdyby byl uživatel před naší zásuvkou, projekt to nezničí.

Rozhodl jsem se, že funkce fronty by měla být uložena, pokud není implementována stejným způsobem jako dříve. Za tímto účelem jsem vytvořil vektor polí. To mi umožnilo nejen zachovat ducha mého předchozího návrhu relativně nedotčeného, ale také to znamenalo, že jsem nemusel sledovat své místo v souboru ani při čtení, ani při psaní. Místo toho teď vše, co jsem potřeboval udělat, bylo jednoduše přidat novou hodnotu do mého vektoru, pokud se uživatel pohyboval (předběžné testování bylo menší než 1% rozdílu velikosti plátna jak v xay, tak od poslední zaznamenané pozice nevedlo k záznamu dat). Pak jsem mohl vzít nejstarší hodnotu ve svém vektoru a jedním úderem, odeslat ji do řízení motoru, zapsat ji do našeho souboru a poté ji odstranit z mého vektoru. To vyčistilo mnoho mých obav z toho, že běží konstantní proud IO.

Krok 9: Elektřina

Image
Image
Elektrický
Elektrický

Zatímco jsem v minulosti absolvoval kurz elektroniky a pracoval jsem s arduinomi dost. Nikdy jsem se nepustil do toho, aby arduino přijímalo informace z vnějšího zdroje (myo), mám pouze zkušenosti s výstupem informací přes arduino. Začal jsem však zapojovat motory na náš drawbot a pracovat na kódu, aby mohli pracovat s myo kódem.

Materiály, které jsem použil:

2 x krokové motory

1 x prkénko

1 x Arduino (Uno)

2 x IC ovladače L293DE

40 x propojovací vodiče

2 x ventilátory

1. Připojení krokových motorů a ventilátoru k prkénku

Podle schématu zapojení můžeme k vodiči na prkénku připojit jeden krokový motor. Poté, podle stejného schématu, platí pro druhý ovladač a motor, propojovací vodiče však budou muset být zapojeny do jiné sady kolíků v arduinu (protože první motor zabírá prostor 4 dalších).

Varování/Tip:

Ovladače jsou velmi malé a kolíky jsou velmi blízko sebe. Bylo by rozumné tyto dva ovladače rozmístit, aby nedošlo k záměně vodičů.

Další je zapojení ventilátorů. To je docela jednoduché, fanoušci, které jsem měl k dispozici, byli základními fanoušky počítačových procesorů, které mají kladné i záporné stránky. Zapojte tyto dva do příslušných +/- kolíků na prkénku a každý natočte směrem ke každému ovladači. (Zjistili jsme, že protože krokové motory přijímají po dlouhou dobu shluky informací a příkazů, mají ovladače tendenci se přehřívat a zapáchat. Problém vyřešil přidání ventilátoru k ochlazení).

2. Arduino kód

Toto je snadná část!

Otevřete Arduino IDE, přejděte na kartu „Soubor“a poté přejděte na kartu „příklad“, která se rozbalí ještě dále a zobrazí se vám karta „stepper“. Poté chcete otevřít „Stepper_OneStepAtATime“

Tím se předem načte ukázkový kód, který je téměř plug-and-play do zapojení arduino/motoru. Budeme muset provést malé úpravy, protože budeme provozovat dva motory, které ukážu níže. Možná budete muset také provést drobné úpravy podle toho, které piny jste se rozhodli použít, protože Arduino IDE je standardně nastaveno na piny 8-11.

Kód, který jsem použil k tomu, aby se dva motory pohybovaly „synchronizovaně“, je níže:

//#zahrnout

const int stepsPerRevolution = 200;

Stepper myStepper1 (stepsPerRevolution, 9, 10, 11, 12);

Stepper myStepper2 (stepsPerRevolution, 4, 5, 6, 7);

int stepCount = 0;

void setup () {// inicializace sériového portu: Serial.begin (9600); }

prázdná smyčka () {

myStepper1.step (1);

Serial.print ("kroky:");

Serial.println (stepCount);

stepCount ++;

zpoždění (0,5);

myStepper2.step (1); zpoždění (0,5); }

3. Možné problémy

Problémy, na které jsem během tohoto procesu narazil, nebylo použití správného příkladu kódu, použití špatného propojovacího vodiče a použití nesprávného IC ovladače.

Ujistěte se, že váš ovladač, který používáte, je schopen ovládat motor

Zkontrolujte sériové číslo a zkontrolujte jeho specifikace

Narazil jsem na problém s mrtvým propojovacím drátem, což způsobilo, že se moje motory podivně točí

Musel jsem použít multimetr ke kontrole každého drátu

A vždy dvakrát zkontrolujte, zda váš kód neobsahuje malé chyby, jako je chybějící konec „;“příkaz

Krok 10: Mechanické

Mechanické
Mechanické
Mechanické
Mechanické
Mechanické
Mechanické
Mechanické
Mechanické

1. Materiál

U plně produkčního modelu ramen se doporučuje, aby byly vyrobeny ze silného, ale lehkého materiálu, cítili jsme, že hliník se perfektně hodí.

Použili jsme hliníkové plechy o rozměru 032 rozřezané na 9,125 "x 17,5" a vysledovali vzor z výkresu zobrazeného v předchozím kroku.

2. Výroba

Pomocí lemovače (modrý stroj) jsme přidali lemy, které směřují opačným směrem, takže když je kus zlomený a složený, oba lemy se spojí a vytvoří jeden kompletní kus.

Pro velké ohyby jsme použili tennismith, protože je vysoce přesný.

Nyní pro menší ohyby budete chtít použít stroj s menší nohou, zde přichází stroj jako rotační matrice. Díky své menší noze umožňuje bohužel provádět menší přestávky, rotační matrice, kterou jsme měli k dispozici, byla pro naši kolejnici stále příliš velká a byla zdeformována.

** Alternativně, pokud nemáte přístup ke správnému vybavení nebo nástrojům, lze provést náhradu. **

V našem případě jsme řezali ruce z hliníkových kolejnic solárních panelů pomocí plazmové řezačky a brousili konce hladce a pak je přišroubovali zády k sobě, abychom vytvořili oboustranný kolejnicový systém. V ideálním případě bychom chtěli svařovat kolejnice dohromady, ale bez přístupu ke svařovací stanici jsme místo toho sevřeli kolejnice a provrtali je, pak je přišroubovali. Pokud je ale tato trasa vedena, pak by měla být věnována zvláštní pozornost použití pojistné matice a podložky, aby se zajistilo, že kus má co nejmenší ohyb.

3. Pás

Pro pásy jsme použili nějaké staré pásy pro 3D tiskárny, které jsme dokázali zachránit.

Pásy nebyly zpočátku dostatečně dlouhé, takže jsme pomocí tepelně smrštitelných hadic spojili dva kusy, abychom vytvořili jeden dostatečně dlouhý.

Zelená ozubená kola a dřevěné hmoždinky byly nahrazeny kotoučovými ložisky s extra širokými podložkami, které zabraňovaly vyklouznutí pásu z místa.

4. Přeprava

A nakonec byl vozík vyroben z plechu 5 "x 5" z hliníku 032, přičemž byly vylisovány otvory, do kterých měly zamířit odpovídající šrouby a podložky. Vzdálenost se bude lišit v závislosti na tom, jak široká je vaše kolejnice a kolik vůle máte na podložkách.

Krok 11: Úvahy

Bohužel každá strana našeho projektu narazila na velkou barikádu času a my jsme nebyli schopni dokončit náš návrh do našeho cílového data. Každý člen našeho týmu skončil alespoň v určité míře spoluprací na všech ostatních aspektech našeho designu, což vedlo k určitému poklesu času křivky učení. To spolu s touhou navrhnout produkt s co nejmenšími vnějšími zdroji (jak jsme všichni chtěli vytvořit příslušné součásti od nuly), vedlo k velkému množství nově objevených kol.

Každý, kdo pracoval na projektu, se dozvěděl více o dalších aspektech projektu. Přinutit software provést konkrétní akci je jedna věc, pak zajistit, aby software fungoval společně s hardwarem, je věc druhá. Řekl bych, že je důležité, aby ten, kdo pracuje na aspektu kódování tohoto projektu, byl stejně známý jako náš kodér projektu.

Celkově jsme nebyli schopni dosáhnout přesně toho, co jsme chtěli. Cítím však, že jsme byli na dobré cestě a všichni jsme objevili a naučili se nové koncepty, které budeme moci aplikovat na budoucí projekty.

Doporučuje: