Kazalo:

[WIP] Ustvarjanje risanega robota, ki ga nadzira Myo trak: 11 korakov
[WIP] Ustvarjanje risanega robota, ki ga nadzira Myo trak: 11 korakov

Video: [WIP] Ustvarjanje risanega robota, ki ga nadzira Myo trak: 11 korakov

Video: [WIP] Ustvarjanje risanega robota, ki ga nadzira Myo trak: 11 korakov
Video: Стелс-игра, похожая на Metal Gear Solid. 👥 - Terminal GamePlay 🎮📱 🇷🇺 2024, Julij
Anonim
[WIP] Ustvarjanje Drawbota, ki ga nadzira Myo Armband
[WIP] Ustvarjanje Drawbota, ki ga nadzira Myo Armband

Pozdravljeni vsi!

Pred nekaj meseci smo se odločili poskusiti uresničiti zamisel o izgradnji odprtega okvirja, ki bi za nadzor uporabljal le pasok Myo. Ko smo se prvič lotili projekta, smo vedeli, da ga bo treba razdeliti na nekaj različnih faz. Naša prva glavna faza je bila, da poskušamo zaviti glavo okoli odprtega okvira za našega žrebanja. To je nestandardna nastavitev in želeli smo videti, kakšne so prednosti te zasnove.

Drugič, vedeli smo, da bi bila izdelava tega prototipa uporabna le zase. Naš načrt in načrt je bil prestaviti naš zadnji okvir v kovino in z arduinom prejeti naš položaj iz merilnika pospeška in žiroskopa, vgrajenega v pas Myo. Ti podatki bi bili nato poslani motorjem in bi ponovili gibanje uporabnika. Vedeli smo, da bo tako naša druga faza razdeljena na tri glavne vidike:

  1. programiranje od Myo do motorjev preko Arduina
  2. električno zasnovo, ki naše podatke pretvori v gibanje
  3. mehansko oblikovanje za ustvarjanje okvirja primerne velikosti, ki bo olajšal naše gibanje

Vsak član naše ekipe se je z edinstvenim delom našega oblikovalskega procesa počutil najbolj prijetno, zato smo se odločili, da svoje delo razdelimo med posameznike. Med celotnim oblikovalskim procesom smo vodili tudi blog, da bi sledili našemu vsakodnevnemu razmišljanju, v nasprotju z bolj globalnim videzom.

1. korak: Kaj smo načrtovali

Image
Image

Naš cilj je bil združiti ta dva izdelka na način, ki ga doslej še nismo videli. Odločili smo se, da bomo ustvarili prenos v živo med našim trakom Myo in lastno različico dizajna, ki ga je navdihnil AxiDraw Evil Mad Scientist.

2. korak: Seznam sestavin prototipa

2 2 x 4 lesene plošče 1 Merjenje pasu ali verige> = 65”4 Leseni žeblji 3 Zobniki z zobmi, ki ustrezajo pasu ali verigi 4 3 x 8 vex perforiranih plošč 30 ⅜” Gumijasti distančniki 8 1”premer podložke 1 1” premer leseni moznik 1 'dolg 8 Vex vijaki 1”8 ½” Vex vijaki 8 2”Vex vijaki 8 ¼” Gumijasti distančniki 48 Vex matice 1 Mala vezica na zadrgo

3. korak: [Prototip] Obdelava lesa Naša notranjost orožja in prevoza

[Prototip] Obdelava lesa Naša notranjost orožja in prevoza
[Prototip] Obdelava lesa Naša notranjost orožja in prevoza

Vzeli smo dva 2x4 in jih razrezali na enake dolžine (33 ¼”)

Z namizno žago smo ob strani naredili zarezo ozkega dela desk deep "globoko in ⅛" široko na sredini

Razrežite moznik na 4 2 "kosov in na sredini vrtalnika s pomočjo vrtalnika izvrtajte luknjo v premeru približno ¼"

4. korak: [Prototip] Prevoz

[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage

V idealnem primeru bi uporabili dva 7x7 kosov vex perforiranega jekla, vendar so nam bili na voljo le trakovi 2x7, zato smo jih privijačili skupaj v konfiguraciji "X"

Zložite 5 gumijastih distančnikov ⅜”in pritrdite vogale vex plošč drug na drugega

Ohlapno pritrdite lesene moznike, kot je prikazano na sliki 1, tako da se prosto vrtijo s približno 2 -palčnim razmikom med njimi. Uporabite sliko, da vidite, kje naj bodo na tem mestu postavljeni zobniki, smo uporabili podložke, vendar smo pozneje ugotovili, da majhni plastični zobniki delujejo bolje.

S pomočjo ½ “vijakov iz veksa, ¼” gumijastih distančnikov in podložk s premerom 1”pritrdite podložke v dvignjenem položaju, kot je prikazano na sliki 1 (uporabili smo zelene plastične zobnike, ker nismo mogli najti pravih podložk), da zagotovimo, da so podložke sposobne za enostavno vrtenje in namestitev v zareze deske.

5. korak: [Prototip] Vse skupaj

[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj
[Prototip] Vse skupaj

Desko položite na površino in potisnite voziček na sredino, tako da podložke držijo voziček nad desko in na obeh straneh deske pribijejo zobnike navzdol, da se prosto vrtijo. Pribijte zobnik na en konec druge plošče in se prepričajte, da je na sredini, in ga potisnite na nosilec pravokotno na prvo ploščo.

Zdaj je treba pas prepeti skozi sistem, kot je prikazano, pozorno pazite na to, kako so mozniki na zunanji strani pasu in kako v središču podvozja ni ničesar, kar bi lahko oviralo pas med premikanjem.

Zdaj je treba pas pritrditi na stran deske, ki nima prestave. Za pritrditev smo uporabili dodaten žebelj in kravato na zadrgo. Toda uporabljena metoda ni pomembna, dokler je pas pritrjen na to mesto

6. korak: [Prototip] Končano in premikanje

Image
Image

To bi moralo biti to, potegnite pas v različnih kombinacijah in si oglejte različne učinke, ki jih ima na roko!

7. korak: Preoblikovanje našega modela v dokončano zasnovo

Prevajanje našega modela v naš dokončan dizajn
Prevajanje našega modela v naš dokončan dizajn
Prevajanje našega modela v naš dokončan dizajn
Prevajanje našega modela v naš dokončan dizajn

Ko smo dokončali prototip, smo bili navdušeni. Nihče od nas ni bil prepričan, kako je sistem deloval pred montažo. Ko pa so se naši deli združili, smo hitro odkrili, kaj nam je všeč in kako bi to izboljšali pri ustvarjanju končne zasnove. Naše glavne pritožbe pri sistemu za reševanje so bile:

  1. Lestvica
    1. Naš prototip je bil masiven in težak, zaradi česar se je nagibal k prevrnitvi na robu rok
    2. Voziček je bil veliko večji, kot je bilo potrebno, in imel je veliko zapravljenega prostora
    3. Naš pas (tekalna plast tanka) je bil veliko večji, kot je bilo potrebno, kar je prineslo presežek med rokami
  2. Trenje

    1. Naše vex tekalne plasti na vseh mestih niso zlahka prešle lesenih valjev za moznike
    2. Plastika na lesu je v mnogih primerih povzročila, da se voziček ne želi premikati
  3. Motoriziranje

    Morali smo narediti sistem zmogljiv

S temi mislimi smo pripravili načrte za končno zasnovo. Želeli smo, da bi robot upravljali z Myo prek arduina, okvir pa smo želeli narediti aluminijast in manjši.

Da bi to naredili, smo vzeli odstotek našega prvotnega prototipa in se lotili dela od te velikosti. Z uporabo pločevine, ki bi bila obdelana tako, da bi imeli kanale dovolj široke, da bi lahko šel skozi zaščitni ležaj, bi imeli lahko, a robustno zasnovo, ki bi imela večjo toleranco pri uporabi.

Naš prototip nam je tudi v nekaj minutah omogočil, da smo ugotovili, kako je vrtenje motorja vplivalo na glavo našega vlečnega mehanizma. To nas je pripeljalo do spoznanja, da bi bila naša zasnova krmiljenja bolj preprosta, kot smo pričakovali. Ob natančnejšem pregledu smo ugotovili, da je gibanje motorja aditivno! To pomeni, da ima vsak motor neodvisen želeni učinek na naše gibanje, ko pa jih združimo skupaj, se začnejo odpravljati.

Na primer, če ga obravnavamo kot koordinatno ravnino, bo motor, ki leži v negativnem okraju x, vedno potegnil naš predal v drugi in četrti kvadrant. Nasprotno pa bo motor, ki leži na pozitivnem kraku x, vedno nagnil predal v prvi in tretji kvadrant. Če združimo gibanje naših motorjev, bo preklical dele usmerjanja tega konflikta in povečal dele, ki se strinjajo.

8. korak: Kodiranje

Medtem ko sem pred nekaj leti precej delal v jeziku C, nisem imel izkušenj z luo ali C ++, kar je pomenilo, da sem moral porabiti precej časa za brskanje po dokumentaciji. Vedel sem, da je splošna naloga, ki jo bom poskušal doseči, to, da v določenih časovnih presledkih pridobim položaj uporabnika in ga nato posredujem motorjem. Odločil sem se, da bom sam prekinil nalogo, da bom bolje prebavil dele, ki jih potrebujem.

1. Pridobite podatke od Myo (lua)

Vedel sem, da moram najti način zbiranja podatkov iz Myo. To je bil prvi del izziva, ki sem se ga želel približati. V ta namen sem želel, da bi uporabnik pred začetkom risanja umeril velikost svojega platna. To bi mi omogočilo, da imam mejo za delo. Program bi lahko nato normaliziral med različnimi uporabniki, tako da bi za prenos podatkov uporabil odstotek največjega platna. Odločil sem se, da bom imel napisan dogodek, ki bo preverjal getOrientation vsake pol sekunde, saj bo omogočil, da preverjanja nikoli ne bodo izvedla divjega skoka, po katerem bi morali uganiti (na primer, če je uporabnik divje zanihal nazaj in naprej).

Tako sem dosegel prvo oviro. Odkril sem zelo veliko omejitev lua in da mi ne dovoljuje čakati, preden nadaljujem scenarij. Edini način za izvedbo tega dejanja je bil bodisi zaustavitev procesorja (ki bi ga zaustavil globalno, tudi pri sistemski uri), bodisi uporaba ukazov za OS. V moji vzorčni kodi sem pustil prvotno preverjanje OS, ki sem ga opravil (komentiral). To je bilo storjeno po obsežni raziskavi v luini dokumentaciji in s preverjanjem oblikovanja sistemske poti. Takrat sem se odločil, da moram pogledati dokumentacijo za projekte, ki so bili prej objavljeni. Takoj sem spoznal, koliko časa sem zapravil, in me takoj pripeljal do spremenljivke platforme. Z njim sem lahko skoraj takoj uresničil posebne ukaze za čakanje v OS, v nasprotju z dnevi, ko sem potreboval, da sem sestavil svojo prejšnjo rešitev.

V tem času oblikovanja se je začelo delo na električnem vidiku, zato sem delo na tem vidiku kode prekinil. Namen je izvedeti, kako so se naši motorji povezali z arduinom.

2. Delo okoli Arduina (C ++)

Ker je delo z našo mizo postajalo vse bolj zapleteno, sem izvedel, da arduino ni sposoben večnitnega. To je bil v moji prvotni zasnovi kode velik ključ, in ko sem prebral več o omejitvah, ki jih predstavlja naš krmilnik, sem ugotovil, da bom moral programirati, kako bo arduino preklapljal med obema. To je postalo v središču mojih prizadevanj, ko se je približal rok. Odrezati sem moral velike dele svojega prvotnega skripta, saj so bili zasnovani tako, da so zapisali podatke v datoteko sinhrono z krmilnikom motorja, ki je bral datoteko. To je omogočilo funkcijo čakalne vrste, da se prepriča, da tudi če bi bil uporabnik pred našim predalom, projekt ne bi bil uničen.

Odločil sem se, da je treba shraniti čakalno vrsto, če se ne izvaja na enak način kot prej. Da bi to naredil, sem ustvaril vektor nizov. To mi je omogočilo ne le ohranitev duha mojega prejšnjega oblikovanja relativno nedotaknjenega, ampak tudi to, da mi ni bilo treba brati ali pisati, da bi spremljal svoje mesto v datoteki. Namesto tega je bilo treba preprosto dodati novo vrednost v svoj vektor, če se je uporabnik premikal (predhodno testiranje je bilo manj kot 1% razlike v velikosti platna v x in y od zadnjega posnetega mesta, kar ni povzročilo snemanja podatkov). Nato sem lahko vzel najstarejšo vrednost v svoj vektor in z enim zamahom poslal v krmilnik motorja, jo zapisal v našo datoteko in jo nato odstranil iz vektorja. To je odpravilo veliko mojih pomislekov glede stalnega izvajanja IO toka.

9. korak: Električno

Image
Image
Električno
Električno

Čeprav sem v preteklosti hodil na tečaj elektronike in precej delal z arduini. Nikoli se nisem poglobil v to, da bi arduino prejemal informacije iz zunanjega vira (myo), imam le izkušnje z oddajanjem informacij prek arduina. Vendar sem se lotil ožičenja motorjev na našem vlečnem mehanizmu in delal na kodi, da bi lahko delali s kodo myo.

Materiali, ki sem jih uporabil:

2 x koračni motorji

1 x Ogledna plošča

1 x Arduino (Uno)

2 x gonilnik IC L293DE

40 x mostične žice

2 x Ventilatorji

1. Priključitev koračnih motorjev in ventilatorja na ploščico

Po shemi vezja lahko en koračni motor priključimo na gonilnik na plošči. Nato po istem diagramu uporabite to za drugi gonilnik in motor, vendar bo treba mostične žice priključiti na drug sklop zatičev v arduinu (ker prvi motor zaseda prostor 4 drugih).

Opozorilo/Nasvet:

Gonilniki so zelo majhni, zatiči pa zelo blizu skupaj. Pametno bi bilo razmakniti oba gonilnika, da se žice ne zmedejo.

Naslednja je ožičenje ventilatorjev. To je dokaj preprosto, ventilatorji, ki sem jih imel na voljo, so bili osnovni ventilatorji računalniških procesorjev, ki imajo pozitivno in utemeljeno. Priključite oba v ustrezna zatiča +/- na plošči in vsakega usmerite proti vsakemu vozniku. (Ugotovili smo, da zaradi tega, ker koračni motorji v daljšem časovnem obdobju prejemajo množico informacij in ukazov, se vozniki pregrejejo in zadišijo. Dodajanje ventilatorja za hlajenje je odpravilo to težavo).

2. Koda Arduino

To je enostaven del!

Odprite Arduino IDE, pojdite na zavihek »Datoteka«, nato spustite na zavihek »primer«, ki se bo še bolj spuščal in prikazal zavihek »koračni«. Nato želite odpreti »Stepper_OneStepAtATime«

To bo vnaprej naložilo primer kode, ki je skoraj plug-and-play na ožičenje arduino/motorja. Morali bomo narediti majhne prilagoditve, ker bomo poganjali dva motorja, kar bom pokazal spodaj. Morda boste morali narediti tudi manjše prilagoditve glede na to, katere zatiče ste se odločili uporabiti, saj je privzeti IDU Arduino na zatičih 8-11.

Koda, ki sem jo uporabil za premikanje dveh motorjev v "sinhronizaciji", je spodaj:

//#vključi

const int stepsPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicializira serijska vrata: Serial.begin (9600); }

void loop () {

myStepper1.step (1);

Serial.print ("koraki:");

Serial.println (stepCount);

stepCount ++;

zamuda (0,5);

myStepper2.step (1); zamuda (0,5); }

3. Možne težave

Težave, s katerimi sem se srečal med tem postopkom, niso bile uporaba pravega primera kode, uporaba slabe mostične žice in uporaba napačnega IC gonilnika.

Prepričajte se, da vaš voznik, ki ga uporabljate, lahko upravlja motor

Preverite serijsko številko in njene specifikacije

Naletel sem na težavo z mrtvo mostičkovo žico, zaradi česar so se mi motorji čudno vrteli

Za preverjanje vsake žice sem moral uporabiti multimeter

In kodo vedno znova preverite glede majhnih napak, na primer manjka konca “;” ukaz

10. korak: Mehanski

Mehanski
Mehanski
Mehanski
Mehanski
Mehanski
Mehanski
Mehanski
Mehanski

1. Material

Za celoten model orožja je priporočljivo, da so izdelani iz močnega, a lahkega materiala, menili smo, da se aluminij odlično prilega.

Uporabili smo aluminijaste liste 032, razrezane na 9,125 "x 17,5", in izsledili vzorec iz risbe, prikazane v prejšnjem koraku.

2. Izdelava

Z robom (modri stroj) smo dodali robove, ki so obrnjeni v nasprotni smeri, tako da bi se ob lomu in zloženju kosa dva roba med seboj povezala in tvorila en sam celoten kos.

Za velike ovinke smo uporabili tennismith zaradi visoke natančnosti.

Zdaj za manjše ovinke boste želeli uporabiti stroj z manjšo nogo, tu pride stroj, kot je roto-matrica. Zaradi manjše noge, na žalost omogoča manjše odmore., roto-matrica, ki nam je bila na voljo, je bila še vedno prevelika za našo tirnico in se je deformirala.

** Če pa nimate dostopa do ustrezne opreme ali orodij, lahko zamenjate. **

V našem primeru smo si s plazemskim rezalnikom odrezali roke iz aluminijastih tirnic za sončne plošče in konce gladko brusili ter jih pritrdili nazaj, da smo naredili dvostranski sistem tirnic. V idealnem primeru bi želeli tirnice zvariti skupaj, vendar smo brez dostopa do varilne postaje namesto tega pritrdili tirnice in jih izvrtali, nato pa jih pritrdili skupaj. Če pa gremo po tej poti, moramo biti še posebej previdni pri uporabi protimatice in podložke, da se kos čim manj upogne.

3. Pas

Za pasove smo uporabili nekaj starih pasov 3D tiskalnikov, ki smo jih lahko rešili.

Pasovi sprva niso bili dovolj dolgi, zato smo z uporabo nekaterih toplotno skrčljivih cevi združili dva kosa, da smo naredili primerno dolgega.

Zelene zobnike in lesene moznike so zamenjali diskovni ležaji z zelo širokimi podložkami, ki preprečujejo zdrs pasu.

4. Prevoz

Končno je bil voziček izdelan iz 5 "x 5" pločevine iz aluminija 032, z vrtanjem lukenj, kamor so namenjeni ustrezni vijaki in podložke. Razdalja se bo razlikovala glede na to, kako široka je vaša tirnica in koliko prostora imate na podložkah.

11. korak: Razmišljanja

Na žalost je vsaka stran našega projekta naletela na glavno barikado časa in naše zasnove nismo mogli dokončati do ciljnega datuma. Vsak član naše ekipe je na koncu vsaj do neke mere sodeloval pri vseh drugih vidikih našega oblikovanja, kar je povzročilo nekaj časovnih odmikov. To, skupaj z željo po oblikovanju izdelka s čim manj zunanjimi viri (saj smo vsi želeli ustvariti svoje dele iz nič), je privedlo do velike količine prenovljenih koles.

Vsi, ki so sodelovali pri projektu, so izvedeli več o drugih vidikih projekta. Ena stvar je, da programska oprema naredi določeno dejanje, drugo pa je, da programska oprema deluje skupaj s strojno opremo. Rekel bi, da je pomembno, da je kdor koli, ki dela na vidiku kodiranja tega projekta, tako poznan kot naš kodirnik projekta.

Na splošno nam ni uspelo doseči točno tistega, kar smo želeli. Vendar menim, da smo bili na pravi poti in smo vsi odkrili in se naučili novih konceptov, ki jih bomo lahko uporabili pri prihodnjih projektih.

Priporočena: