Orodha ya maudhui:

Mkono wa Roboti: Jensen: Hatua 4
Mkono wa Roboti: Jensen: Hatua 4

Video: Mkono wa Roboti: Jensen: Hatua 4

Video: Mkono wa Roboti: Jensen: Hatua 4
Video: ХАБИБ - Ягода малинка (Премьера клипа) 2024, Oktoba
Anonim
Mkono wa Roboti: Jensen
Mkono wa Roboti: Jensen

Jensen ni mkono wa roboti uliojengwa kwenye jukwaa la Arduino ukizingatia upangaji mwendo wa angavu, uliofanywa kama mradi wa kujitegemea wa mkopo 1 chini ya ushauri kutoka kwa Charles B. Malloch, PhD. Inaweza kuiga mfululizo wa harakati zilizowekwa kwa kusonga mkono kwa mikono. Nilipata msukumo wa kuijenga kutokana na kuona mikono mingine ya roboti imejengwa katika UMass Amherst M5 makerspace. Kwa kuongezea, nilitaka kujifunza jinsi ya kutumia programu ya CAD na nilitaka kufanya mradi wa hali ya juu wa Arduino. Niliona hii kama fursa ya kufanya mambo yote hayo.

Hatua ya 1: Ubunifu wa asili na Upeo

Ubunifu wa asili na Upeo
Ubunifu wa asili na Upeo

Programu ya CAD niliyochagua kujifunza kwa mradi huu ilikuwa OnShape, na kitu cha kwanza nilichoiga ni servo ya Analog ya HiTec HS-422. Nilichagua servo kwa sababu ilikuwa inapatikana kwangu na ilikuwa bei nzuri. Pia ilitumika kama mazoezi mazuri ya kujifunza OnShape kabla ya kuendelea kubuni sehemu zangu mwenyewe. Wakati huu wa mapema katika mradi huo, nilikuwa na wazo la jumla la kile nilitaka mkono uweze. Nilitaka iwe na mwendo mzuri na gripper kwa kuokota vitu. Maelezo haya ya jumla yalifahamisha muundo wakati niliendelea kuiga mfano katika CAD. Kizuizi kingine cha kubuni ambacho nilikuwa nacho wakati huu ilikuwa saizi ya kitanda cha kuchapisha kwenye printa yangu ya 3D. Ndio sababu msingi unaona kwenye picha hapo juu ni mraba wa zamani.

Wakati wa hatua hii ya mradi, nilikuwa pia nikifikiria jinsi nilivyotaka kudhibiti mkono. Mkono mmoja wa roboti nilikuwa nimeongozwa na kwenye nafasi ya makers nikatumia mkono wa bandia kudhibiti. Mwingine alitumia njia ya programu ya angavu ambayo mkono ulihamishiwa katika nafasi anuwai na mtumiaji. Kisha mkono ungezunguka kupitia nafasi hizo.

Mpango wangu wa asili ilikuwa kumaliza ujenzi wa mkono na kisha kutekeleza njia zote hizi za kudhibiti. Nilitaka pia kufanya programu ya kompyuta kwa kuidhibiti wakati fulani baada ya hapo. Kama unavyoweza kusema, niliishia kupunguza upeo wa kipengele hiki cha mradi. Nilipoanza kufanya kazi kwa njia hizo mbili za kwanza za kudhibiti, niligundua haraka kuwa programu ya njia ya angavu ilikuwa ngumu zaidi kuliko vile nilifikiri itakuwa. Hapo ndipo nilipoamua kuilenga na kuzingatia njia zingine za kudhibiti kwa kushikilia kwa muda usiojulikana.

Hatua ya 2: Udhibiti

Udhibiti
Udhibiti

Njia ya kudhibiti ambayo nilichagua inafanya kazi kama hii: unahamisha mkono na mikono yako katika nafasi anuwai na "kuokoa" nafasi hizo. Kila nafasi ina habari juu ya pembe kati ya kila kiunga cha mkono. Baada ya kumaliza kuokoa nafasi, unapiga kitufe cha kucheza na mkono unarudi kwa kila moja ya nafasi hizo kwa mlolongo.

Katika njia hii ya kudhibiti, kulikuwa na mambo mengi ya kubaini. Ili kila servo irudi kwenye pembe iliyookolewa, ilibidi kwa njia fulani "kuokoa" hizo pembe mahali pa kwanza. Hii ilihitaji Arduino Uno niliyokuwa nikitumia kuweza kupokea pembe ya sasa ya kila servo. Rafiki yangu Jeremy Paradie, ambaye alitengeneza mkono wa roboti unaotumia njia hii ya kudhibiti, alinidokeza kutumia potentiometer ya ndani ya kila servo ya kupendeza. Hii ndio potentiometer ambayo servo hutumia yenyewe kusimba pembe yake. Nilichagua servo ya jaribio, nikatia waya kwa pini ya kati ya potentiometer ya ndani, na nikachimba shimo kwenye ua kulisha waya nje.

Ningeweza sasa kupokea pembe ya sasa kwa kusoma voltage kwenye pini ya kati ya potentiometer. Walakini, kulikuwa na shida mbili mpya. Kwanza, kulikuwa na kelele kwa njia ya spikes za voltage kwenye ishara inayotoka kwenye pini ya kati. Shida hii ikawa suala la kweli baadaye. Pili, anuwai ya maadili ya kutuma pembe na kupokea pembe ilikuwa tofauti.

Kuambia motors ya hobby ya hobby kuhamia pembe fulani kati ya digrii 0 na 180 inajumuisha kuipeleka ishara ya PWM na wakati mzuri unaolingana na pembe. Kinyume chake, kutumia pini ya pembejeo ya Analog ya Arduino kusoma voltage kwenye pini ya kati ya potentiometer wakati unahamisha pembe ya servo kati ya digrii 0 na 180 inarudi anuwai ya maadili. Kwa hivyo, hesabu zingine zilihitajika kutafsiri thamani iliyoingizwa ya pembejeo katika thamani inayolingana ya PWM inayohitajika ili kurudisha servo kwa pembe ile ile.

Mawazo yangu ya kwanza ilikuwa kutumia ramani anuwai rahisi kupata PWM inayofanana ya kila pembe iliyohifadhiwa. Hii ilifanya kazi, lakini haikuwa sahihi sana. Kwa upande wa mradi wangu, anuwai ya viwango vya juu vya muda wa PWM vinavyolingana na kiwango cha pembe ya digrii 180 vilikuwa kubwa zaidi kuliko anuwai ya maadili ya pembejeo ya analog. Kwa kuongezea, safu hizi zote mbili hazikuendelea na zinajumuisha nambari tu. Kwa hivyo wakati nilichora ramani ya pembejeo iliyohifadhiwa kwa thamani ya pato, usahihi ulipotea. Ilikuwa wakati huu nilifikiri ninahitaji kitanzi cha kudhibiti kupata huduma zangu mahali ambapo zinahitajika kuwa.

Niliandika nambari ya kitanzi cha kudhibiti PID ambayo pembejeo ilikuwa voltage ya pini ya kati na pato lilikuwa pato la PWM, lakini haraka nikagundua kuwa nilihitaji tu udhibiti muhimu. Katika hali hii, pato na pembejeo zote ziliwakilisha pembe, kwa hivyo kuongeza udhibiti sawia na inayotokana na kuifanya iwe juu au iwe na tabia isiyofaa. Baada ya kurekebisha udhibiti muhimu, bado kulikuwa na shida mbili. Kwanza, ikiwa kosa la mwanzo kati ya pembe ya sasa na inayotakiwa ilikuwa kubwa, servo ingeharakisha haraka sana. Ningeweza kupunguza kila wakati kwa udhibiti muhimu, lakini hiyo ilifanya mwendo wa jumla kuwa polepole sana. Pili, mwendo ulikuwa wa kuchekesha. Hii ilikuwa matokeo ya kelele kwenye ishara ya pembejeo ya analog. Kitanzi cha kudhibiti kilikuwa kikiendelea kusoma ishara hii, kwa hivyo spikes za voltage zilisababisha mwendo wa jittery. (Kwa wakati huu pia nilihama kutoka kwa servo yangu moja ya jaribio kwenda kwenye mkutano ulioonyeshwa hapo juu. Pia nilifanya kitu cha kudhibiti kitanzi kwa kila servo kwenye programu.)

Nilisuluhisha shida ya kuongeza kasi zaidi kwa kuweka kichungi cha wastani cha kusonga (EWMA) kwenye pato. Kwa wastani wa pato, spikes kubwa katika mwendo zilipunguzwa (pamoja na jitter kutoka kwa kelele). Walakini, kelele kwenye ishara ya kuingiza ilikuwa bado shida, kwa hivyo hatua inayofuata ya mradi wangu ilikuwa ikijaribu kutatua hilo.

Hatua ya 3: Kelele

Kelele
Kelele

Pichani Juu

Kwa nyekundu: ishara ya kuingiza asili

Katika bluu: ishara ya kuingiza baada ya usindikaji

Hatua ya kwanza ya kupunguza kelele kwenye ishara ya kuingiza ilikuwa kuelewa sababu yake. Kuchunguza ishara kwenye oscilloscope ilifunua kuwa spikes za voltage zilikuwa zikitokea kwa kiwango cha 50Hz. Nilitokea kujua kwamba ishara ya PWM iliyokuwa ikitumwa kwa servos pia ilikuwa kwa kiwango cha 50Hz, kwa hivyo nilidhani spikes za voltage zilikuwa na uhusiano wowote na hiyo. Nilidhani kuwa harakati za servos kwa namna fulani zilisababisha spikes za voltage kwenye pini ya V + ya potentiometers, ambayo nayo ilikuwa ikisumbua usomaji kwenye pini ya kati.

Hapa ndipo nilifanya jaribio langu la kwanza kupunguza kelele. Nilifungua kila servo tena na nikaongeza waya inayotoka kwenye pini ya V + kwenye potentiometer. Nilihitaji pembejeo zaidi za analog ili kuzisoma kuliko ile ya Arduino Uno, kwa hivyo pia nilihamia Arduino Mega wakati huu. Katika nambari yangu, nilibadilisha pembejeo ya pembe kutoka kuwa usomaji wa analog ya voltage kwenye pini ya kati hadi uwiano kati ya voltage kwenye pini ya kati hadi voltage kwenye pini ya V +. Matumaini yangu ilikuwa kwamba ikiwa kulikuwa na mwinuko wa voltage kwenye pini, ingeweza kufuta kwa uwiano.

Niliweka kila kitu pamoja na kuipima, lakini miiba bado ilikuwa ikitokea. Kile ambacho nilipaswa kufanya katika hatua hii ilikuwa kuchunguza ardhi yangu. Badala yake, wazo langu lililofuata lilikuwa kuweka nguvu za umeme kwenye umeme tofauti kabisa. Nilikata waya za V + kutoka kwa pembejeo za Analog kwenye Arduino, na kuziunganisha hadi kwa umeme tofauti. Nilikuwa nimechunguza pini hapo awali kwa hivyo nilijua ni nguvu gani ya kuzipa nguvu. Nilikata pia unganisho kati ya bodi ya kudhibiti na pini ya V + katika kila servo. Niliweka kila kitu pamoja, nikarudisha nambari ya kuingiza pembe kwa jinsi ilivyokuwa hapo awali, na kisha nikaijaribu. Kama inavyotarajiwa, hakukuwa na spikes za voltage kwenye pini ya kuingiza. Walakini, kulikuwa na shida mpya - kuweka potentiometers kwenye usambazaji tofauti wa umeme kulisumbua kabisa vitanzi vya udhibiti wa ndani wa servos. Ingawa pini za V + zilikuwa zikipokea voltage sawa na hapo awali, harakati za servos zilikuwa zisizofaa na zisizo na utulivu.

Sikuelewa ni kwanini hii ilikuwa ikitokea, kwa hivyo mwishowe nilichunguza unganisho langu la ardhini kwenye servos. Kulikuwa na kushuka kwa wastani wa voltage ya Volts 0.3 kote ardhini, na iliongezeka zaidi wakati servos zilipanda sasa. Ilikuwa wazi kwangu wakati huo kuwa pini hizo haziwezi kuzingatiwa tena kama "ardhi", na inaweza kuelezewa vizuri kama pini za "kumbukumbu". Bodi za kudhibiti kwenye servos lazima zilikuwa zikipima voltage kwenye pini ya kati ya potentiometer ikilinganishwa na voltage zote kwenye V + na pini za kumbukumbu. Kuweka nguvu kwa potentiometers kando kiliharibu kipimo hicho cha jamaa kwa sababu sasa badala ya mwiko wa voltage kutokea kwenye pini zote, ilitokea tu kwenye pini ya kumbukumbu.

Mshauri wangu, Dk Malloch, alinisaidia kutatua haya yote na akapendekeza pia nipime voltage kwenye pini ya kati inayohusiana na pini zingine. Hiyo ndivyo nilifanya kwa jaribio langu la tatu na la mwisho la kupunguza kelele za pembejeo la pembe. Nilifungua kila servo, nikaunganisha waya niliyokuwa nimepiga, na kuongeza waya wa tatu kutoka kwa pini ya kumbukumbu kwenye potentiometer. Katika nambari yangu, nilifanya pembejeo ya pembe kuwa sawa na usemi ufuatao: (pini ya kati - pini ya kumbukumbu) / (V + pini - pini ya kumbukumbu). Niliijaribu na ilifanikiwa kupunguza athari za spikes za voltage. Kwa kuongeza, pia niliweka kichujio cha EWMA kwenye pembejeo hii. Ishara hii iliyosindika na ishara ya asili imeonyeshwa hapo juu.

Hatua ya 4: Kufunga vitu juu

Kufunga Mambo Juu
Kufunga Mambo Juu

Pamoja na shida ya kelele kutatuliwa kwa uwezo wangu wote, nilianza kurekebisha na kutengeneza sehemu za mwisho za muundo. Mkono ulikuwa unaweka uzito sana kwenye servo kwenye msingi, kwa hivyo nilitengeneza msingi mpya unaounga mkono uzito wa mkono ukitumia fani kubwa. Nilichapisha pia gripper na nikapanga mchanga kidogo juu yake ili ifanye kazi.

Nimefurahishwa sana na matokeo ya mwisho. Mpangilio wa mwendo wa angavu hufanya kazi kila wakati na harakati ni laini na sahihi, kwa kuzingatia kila kitu. Ikiwa mtu mwingine alitaka kufanya mradi huu, ningewatia moyo kwanza wafanye toleo rahisi zaidi. Kwa mtazamo wa nyuma, kutengeneza kitu kama hiki kwa kutumia motors ya hobby ya servo ilikuwa ujinga sana, na ugumu niliokuwa nao kuufanya ufanye kazi unaonyesha hiyo. Ninaona kama muujiza kwamba mkono unafanya kazi kama vile unavyofanya. Bado ninataka kutengeneza mkono wa roboti ambao unaweza kuunganishwa na kompyuta, kuendesha programu ngumu zaidi, na kusonga kwa usahihi zaidi, kwa hivyo kwa mradi wangu unaofuata nitafanya hivyo. Nitatumia servos za roboti za dijiti zenye ubora wa hali ya juu, na kwa matumaini hiyo itaniruhusu niepuke shida nyingi nilizozipata katika mradi huu.

Hati ya CAD:

cad.onshape.com/documents/818ea878dda7ca2f…

Ilipendekeza: