Sisukord:
Video: Robotkäsi: Jensen: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Jensen on robotkäsi, mis on ehitatud Arduino platvormile ja keskendub intuitiivsele liikumise planeerimisele. See on tehtud 1 krediidist sõltumatu projektina, mille juhendajaks on Charles B. Malloch, PhD. See võib korrata käe käsitsi liigutamisega programmeeritud liigutusi. Selle ehitamiseks sain inspiratsiooni, nähes teisi UMass Amherst M5 tegijaruumis ehitatud robotrelvi. Lisaks tahtsin õppida kasutama CAD -tarkvara ja teha täiustatud Arduino projekti. Ma nägin selles võimalust kõiki neid asju teha.
Samm: algne disain ja ulatus
CAD-tarkvara, mille ma selle projekti jaoks õppisin, oli OnShape ja esimene asi, mida modelleerisin, oli HiTec HS-422 analoog-servo. Valisin servo, kuna see oli mulle kohapeal saadaval ja see oli mõistliku hinnaga. See oli ka hea tava OnShape'i õppimiseks enne oma osade kujundamise juurde asumist. Projekti varases staadiumis oli mul üldine ettekujutus sellest, milleks soovin, et käsi oleks võimeline. Tahtsin, et sellel oleks korralik liikumisulatus ja haarats asjade ülesvõtmiseks. Need üldised spetsifikatsioonid teavitasid disaini, kui jätkasin selle modelleerimist CAD -is. Veel üks disainipiirang, mis mul sel hetkel oli, oli minu 3D -printeri prindikihi suurus. Seetõttu on ülaltoodud fotol näha olev alus suhteliselt primitiivne ruut.
Projekti selles etapis tegin ka ajurünnakuid, kuidas tahtsin kätt kontrollida. Üks robotkäsi, millest olin valmistusruumis inspiratsiooni saanud, kasutas juhtimiseks nukuvarre. Teine kasutas intuitiivset tee programmeerimismeetodit, mille käigus kasutaja liigutas käe erinevatesse asenditesse. Seejärel liiguks käsi neid positsioone tagasi.
Minu esialgne plaan oli lõpetada käe ehitus ja seejärel rakendada mõlemad juhtimismeetodid. Tahtsin ka mingil hetkel pärast seda teha arvutirakenduse selle juhtimiseks. Nagu te ilmselt teate, vähendasin lõpuks projekti selle aspekti ulatust. Kui hakkasin nende kahe esimese juhtimismeetodi kallal töötama, leidsin kiiresti, et intuitiivne tee programmeerimine oli keerulisem, kui ma arvasin. Siis otsustasin keskenduda ja panna muud kontrollimeetodid määramata ajaks ootele.
2. samm: kontrollige
Juhtimismeetod, mille valisin, toimib järgmiselt: liigutate käega kätt erinevatesse asenditesse ja "salvestage" need asendid. Igal positsioonil on teave käe iga lüli vahelise nurga kohta. Kui olete positsioonide salvestamise lõpetanud, vajutate taasesitusnuppu ja käsi naaseb järjestikku igasse asendisse.
Selle kontrollimeetodi puhul tuli välja mõelda palju asju. Selleks, et iga servo pöörduks tagasi salvestatud nurga alla, pidin ma need nurgad kõigepealt kuidagi "salvestama". Selleks oli vaja Arduino Unot, mida ma kasutasin, et saada vastu iga servo praegune nurk. Mu sõber Jeremy Paradie, kes valmistas robotkäe, mis kasutab seda juhtimismeetodit, andis mulle vihje iga hobi servo sisemise potentsiomeetri kasutamiseks. See on potentsiomeeter, mida servo kasutab oma nurga kodeerimiseks. Valisin test -servo, jootsin traadi sisemise potentsiomeetri keskmise tihvti külge ja puurisin korpuses augu, et juhtme väljast välja toita.
Nüüd sain praeguse nurga kätte, lugedes potentsiomeetri keskmise tihvti pinget. Siiski tekkis kaks uut probleemi. Esiteks oli keskmisest tihvtist tulev signaal müra pingepiikide kujul. Sellest probleemist sai tõeline probleem hiljem. Teiseks olid nurga saatmise ja nurga vastuvõtmise väärtuste vahemikud erinevad.
Hobiservomootorite käskimine mõne nurga alla liikuda vahemikus 0 kuni 180 kraadi hõlmab selle PWM -signaali saatmist, mille aeg vastab nurgale. Vastupidi, kasutades Arduino analoogsisendit, et lugeda potentsiomeetri keskmise tihvti pinget, liigutades servosarve vahemikus 0 kuni 180 kraadi, eraldatakse eraldi väärtuste vahemik. Seetõttu oli vaja mõningast matemaatikat, et teisendada salvestatud sisendväärtus vastavaks PWM -väljundväärtuseks, mida on vaja servo sama nurga alla tagasipööramiseks.
Minu esimene mõte oli kasutada lihtsat vahemikukaarti, et leida iga salvestatud nurga jaoks vastav väljund PWM. See töötas, kuid see ei olnud väga täpne. Minu projekti puhul oli 180 -kraadise nurga vahemikule vastavate PWM -i kõrgete ajaväärtuste vahemik palju suurem kui analoogsisendi väärtuste vahemik. Lisaks ei olnud mõlemad vahemikud pidevad ja koosnesid ainult täisarvudest. Seetõttu kadus salvestatud sisendväärtuse väljundväärtusele kaardistamisel täpsus. Just sel hetkel arvasin, et mul on vaja juhtimisahelat, et viia oma servod sinna, kus nad peavad olema.
Kirjutasin koodi PID -juhtimisahelale, milles sisendiks oli keskmine pinge ja väljundiks PWM -väljund, kuid avastasin kiiresti, et vajan ainult integreeritud juhtimist. Selle stsenaariumi korral kujutasid väljund ja sisend mõlemad nurki, nii et proportsionaalse ja tuletatud kontrolli lisamine kippus seda ületama või tal oli soovimatu käitumine. Pärast integreeritud juhtimise häälestamist oli veel kaks probleemi. Esiteks, kui esialgne viga praeguse ja soovitud nurga vahel oleks suur, kiirendaks servo liiga kiiresti. Ma saaksin integraalse juhtimise konstanti vähendada, kuid see muutis üldise liikumise liiga aeglaseks. Teiseks oli liigutus närviline. Selle põhjuseks oli analoogsignaali müra. Juhtimisahel luges seda signaali pidevalt, nii et pingepiigid põhjustasid närvilist liikumist. (Siinkohal liikusin ka oma ühelt test -servolt ülaltoodud pildile. Tegin ka tarkvara iga servo jaoks juhtimisahela objekti.)
Lahendasin liiga kiire kiirenduse probleemi, pannes väljundisse eksponentsiaalselt kaalutud libiseva keskmise (EWMA) filtri. Väljundi keskmistamisega vähendati suuri liikumispiike (sealhulgas mürast tingitud värinat). Kuid sisendsignaali müra oli endiselt probleem, nii et minu projekti järgmine etapp püüdis seda lahendada.
Samm: müra
Pildil ülal
Punane: algne sisendsignaal
Sinine: pärast töötlemist sisendsignaal
Esimene samm sisendsignaali müra vähendamiseks oli selle põhjuse mõistmine. Ostsilloskoobi signaali uurimisel selgus, et pinge tõuseb sagedusega 50 Hz. Juhtusin teadma, et ka servodele saadetav PWM -signaal oli sagedusega 50 Hz, nii et ma arvasin, et pingepiikidel on sellega midagi pistmist. Ma püstitasin hüpoteesi, et servode liikumine tekitab kuidagi potentsiomeetrite V+ tihvtil pingepiike, mis omakorda ajab keskmise tihvti näidu sassi.
Siin tegin oma esimese katse müra vähendamiseks. Avasin iga servo uuesti ja lisasin potentsiomeetri V+ tihvtist tuleva traadi. Nende lugemiseks vajasin rohkem analoogsisendeid kui Arduino Unol, nii et kolisin ka sel hetkel Arduino Mega. Oma koodis muutsin nurgasisendit keskmise tihvti pinge analoognäiduks keskmise tihvti pinge ja V+ tihvti pinge suhteks. Ma lootsin, et kui tihvtidel on pingepiik, tühistatakse see suhe.
Panin kõik uuesti kokku ja katsetasin, kuid naelu ikka tekkis. See, mida ma oleksin pidanud sel hetkel tegema, oli minu pinnase uurimine. Minu järgmine idee oli hoopis panna potentsiomeetrid eraldi toiteallikale. Ühendasin V+ juhtmed Arduino analoogsisenditest lahti ja ühendasin need eraldi toiteallikaga. Olin tihvte enne proovinud, nii et teadsin, millise pingega neid toita. Lõikasin ära ka juhtpaneeli ja V+ tihvti vahelise ühenduse igas servos. Panin kõik uuesti kokku, taastasin nurga sisestuskoodi selliseks, nagu see oli enne, ja siis katsetasin seda. Ootuspäraselt ei olnud sisendpoldil enam pingepiike. Siiski tekkis uus probleem - potentsiomeetrite eraldi toiteallikale asetamine oli servode sisemised juhtimisahelad täiesti sassi ajanud. Ehkki V+ tihvtid said sama pinget kui varem, oli servode liikumine ebaühtlane ja ebastabiilne.
Ma ei saanud aru, miks see nii oli, nii et uurisin lõpuks oma maaühendust servodes. Maapinnal oli keskmine pingelangus umbes 0,3 volti ja servade voolu tõmbamisel tõusis see veelgi. Mulle oli siis selge, et neid tihvte ei saa enam pidada "jahvatatud" ja neid saab paremini kirjeldada kui "võrdlusnööpe". Servode juhtpaneelid pidid mõõtma potentsiomeetri keskmise tihvti pinget nii V+ kui ka võrdlustappide pinge suhtes. Potentsiomeetrite eraldi sisselülitamine ajas selle suhtelise mõõtmise sassi, sest nüüd juhtus pingepiigi asemel kõigil tihvtidel see ainult võrdluspoldil.
Minu juhendaja dr Malloch aitas mul seda kõike siluda ja soovitas mul mõõta ka keskmise tihvti pinget teiste tihvtide suhtes. Seda tegin oma kolmanda ja viimase katse puhul nurga sisendi müra vähendamiseks. Avasin iga servo, ühendasin uuesti katkestatud juhtme ja lisasin kolmanda juhtme, mis tuli potentsiomeetri võrdluspoldist. Oma koodis muutsin nurgasisendi võrdseks järgmise avaldisega: (keskmine tihvt - võrdlusnõel) / (V+tihvt - võrdlusnõel). Testisin seda ja see vähendas edukalt pingepiikide mõju. Lisaks panin sellele sisendile ka EWMA filtri. See töödeldud signaal ja algne signaal on kujutatud ülal.
4. samm: asjade mähkimine
Kui müraprobleem oli parimate võimaluste piires lahendatud, asusin disaini fikseerima ja valmistama. Käsi pani liiga palju raskust põhjas olevale servole, nii et tegin suure laagri abil uue aluse, mis toetab käe raskust. Trükkisin ka haaratsi ja lihvisin natuke, et see tööle hakkaks.
Olen lõpptulemusega väga rahul. Intuitiivne liikumise planeerimine töötab järjepidevalt ning liikumine on kõike arvestades sujuv ja täpne. Kui keegi teine sooviks seda projekti teha, julgustaksin teda kõigepealt tungivalt sellest lihtsama versiooni tegema. Tagantjärele mõeldes oli sellise hobi -servomootorite abil tegemine väga naiivne ja seda näitavad raskused, mis mul selle tööle saamisel tekkisid. Pean imeks, et käsi töötab nii hästi. Ma tahan ikkagi teha robotkäe, mis suudab arvutiga liidestuda, keerukamaid programme käivitada ja suurema täpsusega liikuda, nii et oma järgmise projekti jaoks teen seda. Kasutan kvaliteetseid digitaalseid robootika servosid ja loodetavasti võimaldab see mul vältida paljusid selle projektiga seotud probleeme.
CAD -dokument:
cad.onshape.com/documents/818ea878dda7ca2f…
Soovitan:
Haaratsiga robotkäsi: 9 sammu (piltidega)
Haaratsiga robotkäsi: Sidrunipuude koristamist peetakse raskeks tööks, kuna puud on suured, ja ka sidrunipuude istutamise piirkondade kuuma kliima tõttu. Sellepärast on meil vaja midagi muud, mis aitaks põllumajandustöötajatel oma tööd rohkem lõpule viia
3D -robotkäsi Bluetooth -juhitavate samm -mootoritega: 12 sammu
3D-robotrool Bluetooth-juhitavate samm-mootoritega: Selles õpetuses näeme, kuidas teha 3D-robotkäsi koos 28byj-48 samm-mootorite, servomootori ja 3D-prinditud osadega. Minu veebisaidil on trükiplaat, lähtekood, elektriskeem, lähtekood ja palju teavet
Moslty 3D-trükitud robotkäsi, mis jäljendab nukukontrollerit: 11 sammu (koos piltidega)
Moslty 3D-trükitud robotkäsi, mis jäljendab nukukontrollerit: Olen Indiast pärit masinaehituse üliõpilane ja see on minu alamastme kraadiprojekt. See projekt on keskendunud odava robotkäe väljatöötamisele, mis on enamasti 3D-trükitud ja millel on 5 kahe sõrmega DOF-i haarats. Robotkäsi juhitakse
Robotkäsi: 3 sammu
Robotikäsi: Ciao a tutti! Vediamo on siinkandis ja braccio robotico kontrollitav da remoto
Hääljuhtimise robotkäsi: 4 sammu
Hääljuhtimise robotkäsi: olen loonud robotkäe, mis töötab teie häälkäsklusega. Robotikätt juhitakse loomuliku ühendatud kõnesisendiga. Keele sisend võimaldab kasutajal suhelda robotiga enamikule inimestele tuttavates mõistetes. Edusamm