Satura rādītājs:

[WIP] Drawbot izveide, ko kontrolē Myo aproce: 11 soļi
[WIP] Drawbot izveide, ko kontrolē Myo aproce: 11 soļi

Video: [WIP] Drawbot izveide, ko kontrolē Myo aproce: 11 soļi

Video: [WIP] Drawbot izveide, ko kontrolē Myo aproce: 11 soļi
Video: Стелс-игра, похожая на Metal Gear Solid. 👥 - Terminal GamePlay 🎮📱 🇷🇺 2024, Jūlijs
Anonim
[WIP] Drawbot izveide, ko kontrolē Myo aproce
[WIP] Drawbot izveide, ko kontrolē Myo aproce

Sveiki visiem!

Pirms dažiem mēnešiem mēs nolēmām mēģināt īstenot ideju izveidot atvērtā rāmja pievilkšanas botu, kura kontrolei tika izmantota tikai Myo josla. Kad mēs pirmo reizi sākām projektu, mēs zinājām, ka tas būs jāsadala vairākos posmos. Mūsu pirmais galvenais posms bija mēģināt apvilkt galvu ap atvērta rāmja dizainu mūsu zīmēšanas robotam. Šī ir nestandarta iestatīšana, un mēs vēlējāmies noskaidrot, kādas ir šī dizaina priekšrocības.

Otrkārt, mēs zinājām, ka šī prototipa izveidošana būs noderīga tikai mums pašiem. Mūsu dizains un plāns bija pārvietot mūsu pēdējo rāmi uz metālu un, izmantojot arduino, iegūt mūsu pozīciju no akselerometra un žiroskopa, kas iebūvēts Myo joslā. Pēc tam šī informācija tiks nosūtīta motoriem un atkārtos lietotāja kustības. Mēs zinājām, ka tas padarīs mūsu otro posmu trīs galvenajos aspektos:

  1. programmēšana no Myo līdz motoriem, izmantojot Arduino
  2. elektriskais dizains, lai mūsu datus pārvērstu kustībā
  3. mehānisku dizainu, lai izveidotu saprātīga izmēra rāmi, kas atvieglos mūsu kustību

Katrs mūsu komandas loceklis jutās visērtāk, izmantojot unikālu mūsu dizaina procesa daļu, tāpēc mēs nolēmām sadalīt savu darbu katras personas vidū. Mēs arī saglabājām emuāru visā mūsu dizaina procesā, lai izsekotu mūsu ikdienas domāšanai, nevis globālākam izskatam.

1. solis: ko mēs plānojām darīt

Image
Image

Mūsu mērķis bija apvienot šos divus produktus tā, kā mēs iepriekš neesam redzējuši nevienu no tiem. Mēs nolēmām izveidot tiešraidi starp mūsu Myo aproci un mūsu pašu dizaina versiju, kuru iedvesmojis Evil Mad Scientist's AxiDraw.

2. darbība. Prototipu sastāvdaļu saraksts

2 2 x 4 koka dēļi 1 Siksnas vai ķēdes izmērs> = 65”4 Koka naglas 3 Zobrati ar zobiem, kas atbilst jostai vai ķēdei 4 3 x 8 vex perforētas plāksnes 30 ⅜” Gumijas starplikas 8 1”diametra paplāksnes 1 1” diametra koka dībelis 1 'garš 8 Vex skrūves 1 "8 ½" Vex skrūves 8 2 "Vex skrūves 8 ¼" Gumijas starplikas 48 Vex uzgriežņi 1 Maza rāvējslēdzēja saite

3. solis: [prototips] Mūsu ieroču un ratiņu iekšpuses kokapstrāde

[Prototips] Koka apstrāde mūsu ieročos un ratiņu interjerā
[Prototips] Koka apstrāde mūsu ieročos un ratiņu interjerā

Mēs paņēmām divus 2x4 un sagriezām tos vienādos garumos (33 collas)

Izmantojot galda zāģi, mēs izveidojām iecirtumu gar šauru dēļu daļu deep”dziļumā un wide” platumā vidū

Sagrieziet dībeli 4 2 collu gabalos un izurbiet dībeļa vidū caurumu apmēram ¼”diametrā, izmantojot urbjmašīnu

4. solis: [prototips] Mūsu ratiņu izgatavošana

[Prototips] Veicam mūsu pārvadājumus
[Prototips] Veicam mūsu pārvadājumus
[Prototips] Veicam mūsu pārvadājumus
[Prototips] Veicam mūsu pārvadājumus
[Prototips] Veicam mūsu pārvadājumus
[Prototips] Veicam mūsu pārvadājumus

Ideālā gadījumā mēs izmantotu divus 7x7 gabalus no perforēta tērauda, bet viss, kas mums bija pieejams, bija 2x7 sloksnes, tāpēc mēs tās pieskrūvējām kopā ar “X” konfigurāciju

Salieciet 5 rubber”gumijas starplikas un nostipriniet vex plākšņu stūrus savā starpā

Brīvi nostipriniet koka dībeļus, kā parādīts 1. attēlā, lai tie brīvi grieztos, atstājot apmēram 2 collu atstarpi starp tiem. Izmantojiet attēlu, lai redzētu, kur šajā brīdī ir jānovieto pārnesumi, mēs izmantojām paplāksnes, bet vēlāk atklājām, ka mazie plastmasas vex pārnesumi darbojas labāk.

Izmantojot ½ “skrūves, ¼” gumijas starplikas un 1”diametra paplāksnes, nostipriniet paplāksnes paaugstinātā stāvoklī, kā parādīts 1. attēlā (mēs izmantojām zaļus plastmasas zobratus, jo nevarējām atrast pareizās paplāksnes), pārliecinieties, vai paplāksnes spēj viegli griezties un iekļauties dēļa iecirtumos.

5. solis: [prototips] Visu saliek kopā

[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā
[Prototips] Visu saliekot kopā

Novietojiet dēli uz virsmas un pabīdiet ratiņus vidū, lai paplāksnes turētu ratiņus virs dēļa un abās dēļa pusēs nolaistu zobratus tā, lai tie brīvi grieztos. Piestipriniet zobratu pie otrā dēļa viena gala, pārliecinoties, ka tas ir centrēts, un pabīdiet to uz ratiņiem perpendikulāri pirmajam dēlim.

Tagad jostai jābūt izlocītai caur sistēmu, kā parādīts attēlā, uzmanīgi pievērsiet uzmanību tam, kā dībeļi atrodas jostas ārpusē un vai šasijas centrā nav nekas, kas varētu traucēt jostai kustēties.

Tagad josta ir jāpiestiprina tā dēļa pusē, kurai nav pārnesumu. Mēs izmantojām papildu naglu un rāvējslēdzēju, lai piestiprinātu mūsējo. Bet izmantotajai metodei nav nozīmes, kamēr josta ir noenkurota šajā vietā

6. solis: [prototips] ir pabeigts un pārvietojas

Image
Image

Tā tam vajadzētu būt, pavelciet jostu dažādās kombinācijās un redziet, kā tas ietekmē roku!

7. solis: pārveidojiet mūsu modeli mūsu gatavajā dizainā

Mūsu modeļa tulkošana mūsu gatavajā dizainā
Mūsu modeļa tulkošana mūsu gatavajā dizainā
Mūsu modeļa tulkošana mūsu gatavajā dizainā
Mūsu modeļa tulkošana mūsu gatavajā dizainā

Kad mēs pabeidzām savu prototipu, mēs bijām sajūsmā. Pirms montāžas neviens no mums nebija pārliecināts, kā sistēma darbojas. Bet, tiklīdz mūsu detaļas sanāca kopā, mēs ātri atklājām, kas mums patika un kā mēs to uzlabosim, veidojot galīgo dizainu. Mūsu galvenās sūdzības par sistēmas risināšanu bija:

  1. Mērogs

    1. Mūsu prototips bija masīvs un apgrūtinošs, tāpēc tas bija tendēts apgāzties mūsu roku malā
    2. Ratiņš bija daudz lielāks nekā nepieciešams, un tajā bija daudz izšķērdētas vietas
    3. Mūsu josta (vex tvertnes protektors) bija daudz lielāka nekā nepieciešams, kas radīja lieko atstarpi starp rokām
  2. Berze

    1. Mūsu vieglie protektori visos punktos viegli netika pāri koka dībeļu veltņiem
    2. Plastmasa uz koka daudzos gadījumos ratiņus nevēlējās pārvietot
  3. Motorizējošs

    Mums vajadzēja padarīt sistēmu jaudīgu

Paturot prātā šīs lietas, mēs izstrādājām galīgā dizaina plānus. Mēs vēlējāmies, lai vilcējs tiktu kontrolēts ar Myo, izmantojot arduino, un mēs vēlējāmies padarīt rāmi alumīniju un mazāku.

Lai to izdarītu, mēs paņēmām procentus no mūsu sākotnējā prototipa un sākām strādāt no šī izmēra. Izmantojot lokšņu metālu, kas būtu apstrādāts tā, lai kanāli būtu pietiekami plaši, lai caur to varētu pārvietoties ekranēts gultnis, mums būtu viegls, taču izturīgs dizains, kam būtu lielāka pielaide lietošanai.

Mūsu prototips arī dažu minūšu laikā ļāva mums noteikt, kā motora rotācija ietekmēja mūsu vilcēja galvu. Tas mums lika saprast, ka mūsu vadības dizains būs vienkāršāks, nekā bijām paredzējuši. Rūpīgāk pārbaudot, mēs sapratām, ka motora kustība ir piedeva! Tas nozīmē, ka katram motoram ir neatkarīga vēlamā ietekme uz mūsu kustību, bet, apvienojot tos kopā, tie sāk atcelt.

Piemēram, ja to uzskata par koordinātu plakni, motoram, kas atrodas negatīvajā x ekstremitātē, vienmēr būs tendence ievilkt mūsu atvilktni otrajā un ceturtajā kvadrantā. Un otrādi, motors, kas atrodas uz pozitīvās x ekstremitātes, vienmēr novirzīs atvilktni pirmajā un trešajā kvadrantā. Ja mēs apvienosim savu motoru kustību, tas atcels šī konflikta vadīšanas daļas un pastiprinās daļas, kas piekrīt.

8. darbība: kodēšana

Lai gan pirms dažiem gadiem strādāju diezgan plaši C, man nebija pieredzes ar lua vai C ++, un tas nozīmēja, ka man vajadzēja pavadīt ievērojamu laiku, izskatot dokumentāciju. Es zināju, ka galvenais uzdevums, ko es centīšos paveikt, bija iegūt lietotāja stāvokli noteiktos laika intervālos un pēc tam nodot to motoriem. Es nolēmu sadalīt uzdevumu sev, lai labāk sagremotu man nepieciešamās daļas.

1. Iegūt datus no Myo (lua)

Es zināju, ka man ir jāizdomā veids, kā savākt informāciju no Myo. Šī bija pirmā izaicinājuma daļa, kurai vēlējos tuvoties. Lai to izdarītu, es vēlējos, lai lietotājs pirms zīmēšanas sāk kalibrēt audekla izmēru. Tas ļautu man noteikt robežu, no kuras strādāt. Pēc tam es varētu normalizēt programmu starp dažādiem lietotājiem, vienkārši paņemot procentus no maksimālā audekla kā savus datu punktus. Es nolēmu sarīkot scenāriju, kurā ik pēc sekundes tiktu veikta getOrientation pārbaude, jo tas ļautu pārbaudēm nekad neveikt negaidītu lēcienu, no kura jums vajadzētu uzminēt (piemēram, ja lietotājs mežonīgi šūpojas atpakaļ un uz priekšu).

Tas radīja pirmo šķērsli, pa kuru es trāpīju. Es atklāju ļoti lielu lua ierobežojumu un ka tas neļaus man gaidīt, pirms turpināt skriptu. Vienīgais veids, kā veikt šo darbību, bija vai nu apturēt CPU (kas to apturētu globāli, pat turot sistēmas pulksteni), vai arī izmantot OS specifiskas komandas. Koda paraugā es atstāju sākotnējo OS pārbaudi, ko veicu (komentēju). Tas notika pēc liela apjoma pētījumu veikšanas lua dokumentācijā, un tas tika darīts, pārbaudot sistēmas ceļa formatējumu. Tas bija tad, kad es nolēmu, ka man jāaplūko iepriekš publicēto projektu dokumentācija. Es uzreiz sapratu, cik daudz laika esmu izšķērdējis, un uzreiz noveda pie platformas mainīgā. Ar to es gandrīz uzreiz varēju ieviest OS specifiskas gaidīšanas komandas, atšķirībā no dienām, kas man vajadzēja, lai kopīgi sakopotu savu iepriekšējo risinājumu.

Ap šo projektēšanas laiku sākās darbs pie elektriskā aspekta, un es pārtraucu darbu pie šī koda aspekta. Mērķis ir uzzināt, kā mūsu motori sasaistījās ar arduino.

2. Darbs ap Arduino (C ++)

Tā kā darbs ar mūsu maizes dēli kļuva arvien sarežģītāks, es uzzināju, ka arduino nav spējīgs strādāt ar vairākiem pavedieniem. Šī bija liela uzgriežņu atslēga manā sākotnējā koda dizainā, un, izlasot vairāk par mūsu kontroliera ierobežojumiem, es uzzināju, ka man būs jāprogrammē, kā arduino pārslēgtos starp abiem. Tuvojoties mūsu termiņam, tas kļuva par manu centienu fokusu. Man bija jāiznīcina lielas sākotnējā skripta daļas, jo tās bija paredzētas datu ierakstīšanai failā sinhroni ar motora kontrolieri, kas nolasa failu. Tas ļāva izveidot rindas funkciju, lai pārliecinātos, ka pat tad, ja lietotājs būs priekšā mūsu atvilktnei, tas nesabojās projektu.

Es nolēmu, ka rindas funkcija ir jāsaglabā, ja tā netiek ieviesta tāpat kā iepriekš. Lai to izdarītu, es izveidoju masīvu vektoru. Tas ļāva man ne tikai saglabāt salīdzinoši neskartu mana iepriekšējā dizaina garu, bet arī nozīmēja, ka man nebija jāseko līdzi savai vietai failā lasīšanai vai rakstīšanai. Tā vietā tagad viss, kas man bija jādara, bija vienkārši pievienot jaunu vērtību manam vektoram, ja lietotājs pārvietojās (sākotnējā pārbaude bija mazāka par 1% no audekla izmēru atšķirības gan x, gan y no pēdējās ierakstītās pozīcijas, kā rezultātā dati netika ierakstīti). Pēc tam es varētu ņemt vecāko vērtību savā vektorā un vienā mirklī nosūtīt to motora vadībai, ierakstīt to mūsu failā un pēc tam noņemt to no sava vektora. Tas novērsa daudzas manas bažas par pastāvīgu IO plūsmu.

9. solis: elektriskā

Image
Image
Elektriskā
Elektriskā

Kamēr agrāk esmu apmeklējis elektronikas klasi un strādājis ar arduinos diezgan daudz. Es nekad neesmu iedziļinājies, lai arduino saņemtu informāciju no ārēja avota (myo), man ir tikai pieredze informācijas izvadīšanā, izmantojot arduino. Tomēr es ķēros pie mūsu vadāmā motora vadu savienošanas un strādāju pie koda, lai viņi varētu strādāt ar myo kodu.

Materiāli, kurus izmantoju:

2 x pakāpju motori

1 x maizes dēlis

1 x Arduino (Uno)

2 x draivera IC L293DE

40 x Jumper vadi

2 x ventilatori

1. Pakāpju motoru un ventilatora savienošana ar maizes dēli

Ievērojot shēmas shēmu, mēs varam pieslēgt vienu pakāpju motoru vadītājam uz maizes dēļa. Pēc tam, ievērojot to pašu diagrammu, kas attiecas uz otro vadītāju un motoru, džempera vadi būs jāpievieno citam arduino tapu komplektam (jo pirmais motors aizņem 4 citu vietu).

Brīdinājums/padoms:

Vadītāji ir ļoti mazi, un tapas ir ļoti tuvu viena otrai. Būtu saprātīgi atstāt divus vadītājus, lai vadi netiktu sajaukti.

Nākamais ir ventilatoru vads. Tas ir diezgan vienkārši, man pieejamie ventilatori bija pamata datoru procesoru ventilatori, kuriem ir pozitīvs un pamatots raksturs. Pievienojiet šos divus +/- tapām uz maizes dēļa un pagrieziet katru no tiem pret katru vadītāju. (Mēs noskaidrojām, ka, tā kā pakāpju motori ilgu laiku saņem informācijas un komandu pārrāvumus, draiveri mēdz pārkarst un smaržot. Pievienojot ventilatoru, lai to atdzesētu, šī problēma tika novērsta).

2. Arduino kods

Šī ir vieglā daļa!

Atveriet Arduino IDE, dodieties uz cilni “Fails”, pēc tam atveriet cilni “piemērs”, kas nokritīs vēl tālāk un parādīs cilni “pakāpiens”. Pēc tam vēlaties atvērt “Stepper_OneStepAtATime”

Tas priekšielādēs koda paraugu, kas ir gandrīz plug-and-play arduino/motora vadiem. Mums būs jāveic nelieli pielāgojumi, jo darbināsim divus motorus, kurus es parādīšu zemāk. Jums, iespējams, būs jāveic nelieli pielāgojumi atkarībā no tā, kuras tapas esat nolēmis izmantot, jo Arduino IDE noklusējuma vērtība ir 8-11.

Tālāk ir norādīts kods, ko esmu izmantojis, lai abi motori darbotos “sinhronizācijā”:

//#ietver

const int soļiPerRevolution = 200;

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

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

int stepCount = 0;

void setup () {// inicializēt seriālo portu: Serial.begin (9600); }

void loop () {

myStepper1.solis (1);

Serial.print ("steps:");

Serial.println (stepCount);

stepCount ++;

kavēšanās (0,5);

myStepper2.step (1); kavēšanās (0,5); }

3. Iespējamās problēmas

Problēmas, ar kurām es saskāros šī procesa laikā, nebija pareizā koda piemēra izmantošana, slikta savienojuma stieples izmantošana, nepareiza draivera IC izmantošana.

Pārliecinieties, vai jūsu izmantotais draiveris spēj vadīt motoru

Pārbaudiet sērijas numuru un pārbaudiet tā specifikācijas

Es saskāros ar problēmu, ka man bija miris džemperis, un tas lika maniem motoriem griezties dīvaini

Man bija jāizmanto multimetrs, lai pārbaudītu katru vadu

Un vienmēr vēlreiz pārbaudiet savu kodu, vai tajā nav nelielu kļūdu, piemēram, trūkst beigu “;” komandu

10. solis: mehāniski

Mehānisks
Mehānisks
Mehānisks
Mehānisks
Mehānisks
Mehānisks
Mehānisks
Mehānisks

1. Materiāls

Pilnīgam ieroču ražošanas modelim ieteicams tos izgatavot no izturīga, bet viegla materiāla, un mēs uzskatījām, ka alumīnijs ir ideāli piemērots.

Mēs izmantojām 032 alumīnija loksnes, kas sagrieztas līdz 9,125 x 17,5 collas, un izsekojām paraugam no zīmējuma, kas parādīts iepriekšējā solī.

2. Izgatavošana

Izmantojot hemeru (zilo mašīnu), mēs pievienojām apmales, kas vērstas pretējos virzienos, lai tad, kad gabals ir salauzts un salocīts, abi apmales sasaistītos, veidojot vienu veselu gabalu.

Lielajiem līkumiem mēs izmantojām tenismītu, jo tas ir ļoti precīzs.

Tagad, veicot mazākus līkumus, jūs vēlēsities izmantot mašīnu ar mazāku kāju, un šeit tiek izmantota tāda mašīna kā roto-die. Mazākās pēdas dēļ tas ļauj veikt mazākus pārtraukumus, diemžēl, mūsu rīcībā esošais roto-die joprojām bija pārāk liels mūsu sliedei, un tas bija deformēts.

** Alternatīvi, ja jums nav piekļuves atbilstošam aprīkojumam vai instrumentiem, varat to aizstāt. **

Mūsu gadījumā mēs, izmantojot plazmas griezēju, nogriezām rokas no alumīnija saules paneļu sliedēm un gludus galus sasmalcinājām, pēc tam pieskrūvējām atpakaļ, lai izveidotu divpusēju sliežu sistēmu. Ideālā gadījumā mēs vēlētos sametināt sliedes kopā, tomēr, nepiekļūstot metināšanas stacijai, mēs tā vietā sasprindzinājām sliedes un urbām cauri, tad pieskrūvējām kopā. Bet, ja tiek izvēlēts šis ceļš, tad īpaša uzmanība jāpievērš bloķēšanas uzgriežņa un paplāksnes izmantošanai, lai nodrošinātu, ka gabals ir pēc iespējas mazāk saliekts.

3. Josta

Jostām mēs izmantojām dažas vecas 3D printera jostas, kuras mēs varējām izglābt.

Jostas sākotnēji nebija pietiekami garas, tāpēc, izmantojot dažas termiski saraušanās caurules, mēs apvienojām divus gabalus, lai izveidotu vienu, kas būtu pietiekami garš.

Zaļos zobratus un koka tapas nomainīja disku gultņi ar īpaši platām paplāksnēm, kuras izmantoja, lai josta neslīdētu no vietas.

4. Kariete

Visbeidzot, ratiņi tika izgatavoti no 5 x 5 collu 032 alumīnija loksnes ar urbtiem caurumiem, kur vajadzīgas atbilstošās skrūves un paplāksnes. Attālums mainīsies atkarībā no tā, cik plata ir jūsu sliede un cik daudz vietas ir jūsu paplāksnēm.

11. solis: pārdomas

Diemžēl visas mūsu projekta puses nonāca lielajā laika barikādē, un mēs nevarējām pabeigt savu dizainu līdz mūsu noteiktajam datumam. Katrs mūsu komandas loceklis vismaz zināmā mērā sadarbojās visos citos mūsu dizaina aspektos, izraisot zināmu mācību līknes laika samazināšanos. Tas kopā ar vēlmi izstrādāt izstrādājumu ar pēc iespējas mazākiem ārējiem resursiem (kā mēs visi vēlējāmies izveidot savas detaļas no jauna) radīja lielu daudzumu jaunu riteņu.

Visi, kas strādāja pie projekta, uzzināja vairāk par citiem projekta aspektiem. Likt programmatūrai veikt kādu konkrētu darbību ir viena lieta, bet panākt, lai programmatūra darbotos kopā ar aparatūru, ir cita lieta. Es teiktu, ka ir svarīgi, lai ikviens, kas strādā pie šī projekta kodēšanas aspekta, būtu tikpat pazīstams kā mūsu projekta kodētājs.

Kopumā mēs nevarējām sasniegt tieši to, ko gribējām. Tomēr es uzskatu, ka mēs bijām uz pareizā ceļa un mēs visi atklājām un apguvām jaunas koncepcijas, kuras varēsim izmantot turpmākajos projektos.

Ieteicams: