Sadržaj:

Robotska ruka: Jensen: 4 koraka
Robotska ruka: Jensen: 4 koraka

Video: Robotska ruka: Jensen: 4 koraka

Video: Robotska ruka: Jensen: 4 koraka
Video: Как выглядит 70 кг сухой мышечной массы в футболке и без неё. 2024, Studeni
Anonim
Robotska ruka: Jensen
Robotska ruka: Jensen

Jensen je robotska ruka izgrađena na Arduino platformi s fokusom na intuitivno planiranje kretanja, izvedena kao 1 kreditno neovisan projekt pod mentorstvom doktora Charlesa B. Mallocha. Može ponoviti niz pokreta programiranih ručnim pomicanjem ruke. Inspiraciju za izgradnju dobio sam gledajući druge robotske ruke izgrađene u UMass Amherst M5 prostoru za izradu. Nadalje, htio sam naučiti koristiti CAD softver i želio sam napraviti napredni Arduino projekt. Vidio sam ovo kao priliku za sve te stvari.

Korak 1: Izvorni dizajn i opseg

Originalni dizajn i opseg
Originalni dizajn i opseg

CAD softver koji sam odabrao naučiti za ovaj projekt bio je OnShape, a prvo što sam modelirao bio je analogni servo HiTec HS-422. Odabrao sam servo jer mi je bio dostupan lokalno i bila je prihvatljive cijene. Također je poslužio kao dobra praksa za učenje OnShape -a prije nego što sam prešao na dizajniranje vlastitih dijelova. U ovoj ranoj fazi projekta imao sam opću ideju o tome za što želim da ruka bude sposobna. Željela sam da ima pristojan raspon pokreta i hvataljku za hvatanje stvari. Ove opće specifikacije informirale su dizajn dok sam ga nastavljao modelirati u CAD -u. Još jedno ograničenje u dizajnu koje sam imao u ovom trenutku bila je veličina ležišta za ispis na mom 3D pisaču. Zato je baza koju vidite na gornjoj fotografiji relativno primitivan kvadrat.

Tijekom ove faze projekta također sam razmišljao o tome kako želim kontrolirati ruku. Jedna robotska ruka koja me inspirirala u prostoru za izradu upotrijebila je lutkarsku ruku za kontrolu. Drugi je koristio intuitivnu metodu programiranja puta u kojoj je ruku korisnik pomaknuo u različite položaje. Ruka bi se zatim vratila kroz te položaje.

Moj je prvotni plan bio dovršiti konstrukciju kraka, a zatim primijeniti obje ove metode kontrole. Također sam htio napraviti računalnu aplikaciju za kontrolu u nekom trenutku nakon toga. Kao što vjerojatno možete zaključiti, na kraju sam smanjio opseg ovog aspekta projekta. Kad sam počeo raditi na te prve dvije metode upravljanja, brzo sam otkrio da je intuitivno programiranje puta kompliciranije nego što sam mislio da će biti. Tada sam odlučio staviti svoj fokus i staviti ostale metode kontrole na neodređeno vrijeme.

Korak 2: Kontrola

Kontrolirati
Kontrolirati

Metoda kontrole koju sam odabrao funkcionira ovako: pomaknete ruku rukama u različite položaje i "spremite" te položaje. Svaki položaj ima podatke o kutu između svake karike ruke. Nakon što ste završili sa spremanjem položaja, pritisnite gumb za reprodukciju i ruka se vraća u svaki od tih položaja u nizu.

U ovoj metodi kontrole trebalo je shvatiti mnogo toga. Kako bi se svaki servo pogon vratio u spremljeni kut, morao sam nekako uopće "spasiti" te kutove. To je zahtijevalo Arduino Uno koji sam koristio da bi mogao primiti trenutni kut svakog servo -a. Moj prijatelj Jeremy Paradie, koji je napravio robotsku ruku koja koristi ovu metodu upravljanja, nagovijestio me da koristim unutarnji potenciometar svakog servera za hobi. Ovo je potenciometar koji servo sam koristi za kodiranje svog kuta. Odabrao sam probni servo, lemio žicu na srednju iglu unutarnjeg potenciometra i izbušio rupu u kućištu za napajanje žice izvana.

Sada bih mogao primiti trenutni kut čitanjem napona na srednjem pinu potenciometra. Međutim, pojavila su se dva nova problema. Prvo, došlo je do šuma u obliku skokova napona na signalu koji je dolazio sa srednjeg pina. Taj je problem kasnije postao pravi problem. Drugo, raspon vrijednosti za slanje kuta i primanje kuta bio je različit.

Govoriti hobi servo motorima da se pomaknu pod nekim kutom između 0 i 180 stupnjeva uključuje slanje PWM signala s visokim vremenom koje odgovara kutu. Nasuprot tome, upotrebom analognog ulaznog pina Arduina za očitavanje napona na srednjem pinu potenciometra tijekom pomicanja servo trube između 0 i 180 stupnjeva vraća se zaseban raspon vrijednosti. Stoga je bila potrebna neka matematika za prevođenje spremljene ulazne vrijednosti u odgovarajuću izlaznu vrijednost PWM -a potrebnu za vraćanje servo u isti kut.

Moja prva pomisao bila je upotreba jednostavne karte raspona za pronalaženje odgovarajuće izlazne PWM za svaki spremljeni kut. Ovo je uspjelo, ali nije bilo baš precizno. U slučaju mog projekta, raspon visokih vremenskih vrijednosti PWM -a koji odgovaraju rasponu kutova od 180 stupnjeva bio je mnogo veći od raspona analognih ulaznih vrijednosti. Osim toga, oba ova raspona nisu kontinuirana i sastavljena su samo od cijelih brojeva. Stoga, kada sam preslikao spremljenu ulaznu vrijednost u izlaznu vrijednost, preciznost se izgubila. Tada sam zaključio da mi je potrebna kontrolna petlja kako bih doveo svoje servomotore na mjesto gdje trebaju biti.

Napisao sam kod za PID upravljačku petlju u kojoj je ulaz bio srednji pin napon, a izlaz PWM izlaz, ali sam brzo otkrio da mi je potrebna samo integralna kontrola. U ovom scenariju, izlaz i ulaz predstavljali su kutove, pa je dodavanje proporcionalne i izvedene kontrole imalo za posljedicu prekomjerno prekoračenje ili nepoželjno ponašanje. Nakon podešavanja integralne kontrole, ostala su dva problema. Prvo, ako je početna pogreška između trenutnog i željenog kuta velika, servo bi se ubrzao. Mogao bih smanjiti konstantu za integralnu kontrolu, ali je to učinilo ukupno kretanje presporim. Drugo, pokret je bio nervozan. To je rezultat šuma na analognom ulaznom signalu. Upravljačka petlja je kontinuirano čitala ovaj signal, pa su skokovi napona uzrokovali nervozno kretanje. (U ovom trenutku sam također prešao sa svog jednog test serva na gornju sliku. Sastavio sam i objekt kontrolne petlje za svaki servo u softveru.)

Problem prebrzog ubrzanja riješio sam stavljanjem na izlaz filtra eksponencijalno ponderiranog pomičnog prosjeka (EWMA). Usrednjavanjem izlaza smanjeni su veliki udarci u kretanju (uključujući i podrhtavanje od buke). Međutim, šum na ulaznom signalu i dalje je bio problem, pa je sljedeća faza mog projekta pokušavala to riješiti.

Korak 3: Buka

Buka
Buka

Na slici iznad

Crveno: izvorni ulazni signal

Plavom bojom: ulazni signal nakon obrade

Prvi korak u smanjenju šuma na ulaznom signalu bilo je razumijevanje njegovog uzroka. Ispitivanjem signala na osciloskopu otkriveno je da se skokovi napona događaju brzinom od 50Hz. Slučajno sam znao da je PWM signal koji se šalje na servosisteme također bio brzinom od 50Hz, pa sam pretpostavio da skokovi napona imaju veze s tim. Pretpostavio sam da je kretanje servomotora na neki način uzrokovalo skokove napona na V+ pinu potenciometara, što je opet poremetilo očitanje na srednjem pinu.

Ovdje sam prvi put pokušao smanjiti buku. Ponovno sam otvarao svaki servo i dodao žicu koja dolazi s V+ pina na potenciometru. Trebalo mi je više analognih ulaza za njihovo čitanje nego što je imao Arduino Uno, pa sam se također u ovom trenutku preselio na Arduino Mega. U svom sam kodu promijenio kutni ulaz iz analognog očitanja napona na srednjem pinu u omjer između napona na srednjem pinu i napona na V+ pinu. Nadao sam se da će se, ako dođe do skoka napona na pinovima, poništiti u omjeru.

Sastavila sam sve natrag i testirala, ali skokovi su se i dalje događali. Ono što sam trebao učiniti u ovom trenutku je ispitivanje mog tla. Umjesto toga, moja je sljedeća ideja bila staviti potenciometre na potpuno zasebno napajanje. Isključio sam V+ žice s analognih ulaza na Arduinu i spojio ih na zasebno napajanje. Prije sam ispitivao pinove pa sam znao na koji ih napon napajati. Također sam presjekao vezu između upravljačke ploče i V+ pina u svakom servu. Ponovno sam sastavio sve, vratio kutni kut unosa na ono što je bio prije, a zatim ga testirao. Očekivano, na ulaznom pinu nije bilo više skokova napona. Međutim, pojavio se novi problem - stavljanje potenciometara na zasebno napajanje potpuno je poremetilo unutarnje upravljačke petlje servomotora. Iako su pinovi V+ primali isti napon kao i prije, kretanje servomotora bilo je nestabilno i nestabilno.

Nisam razumio zašto se to događa, pa sam konačno ispitao svoju zemaljsku vezu u servo pogonima. Došlo je do prosječnog pada napona od oko 0,3 Volta na tlu, a on se povećao još više kada su servomotori napajali struju. Tada mi je bilo jasno da se te igle više ne mogu smatrati "uzemljenim", a bolje bi ih bilo opisati kao "referentne" igle. Upravljačke ploče u servomotorima morale su mjeriti napon na srednjem pinu potenciometra u odnosu na napon na V+ i referentne pinove. Napajanje potenciometara zasebno je pokvarilo to relativno mjerenje jer se umjesto skoka napona koji se događa na svim pinovima, to dogodilo samo na referentnom pinu.

Moj mentor, dr. Malloch, pomogao mi je u rješavanju svih ovih problema i predložio mi je da izmjerim i napon na srednjem pinu u odnosu na ostale pinove. To sam i učinio za svoj treći i posljednji pokušaj smanjenja šuma ulaznog ugla. Otvorio sam svaki servo, ponovno spojio žicu koju sam presjekao i dodao treću žicu koja dolazi od referentne iglice na potenciometru. U svom sam kodu kutni ulaz učinio ekvivalentnim sljedećem izrazu: (srednji pin - referentni pin) / (V+pin - referentni pin). Testirao sam ga i uspješno je smanjio učinke skokova napona. Osim toga, na ovaj ulaz sam stavio i EWMA filter. Ovaj obrađeni signal i izvorni signal prikazani su gore.

Korak 4: Zaključite stvari

Završavajući stvari
Završavajući stvari

Budući da je problem s bukom riješen prema mojim mogućnostima, krenuo sam u popravljanje i izradu posljednjih dijelova dizajna. Ruka je stavljala preveliku težinu na servo u bazi, pa sam napravio veliku podlogu koja podržava težinu ruke koristeći veliki ležaj. Također sam ispisao hvataljku i malo sam je brusio kako bi radila.

Jako sam zadovoljan konačnim rezultatom. Intuitivno planiranje pokreta radi dosljedno, a kretanje je glatko i točno, uzimajući u obzir sve. Ako bi netko drugi htio napraviti ovaj projekt, najprije bih ga snažno ohrabrio da napravi njegovu jednostavniju verziju. Gledajući unatrag, izrada takvog nečega pomoću hobi servo motora bila je vrlo naivna, a teškoće koje sam imao pri pokretanju to pokazuju. Smatram čudom što ruka radi jednako dobro. I dalje želim napraviti robotsku ruku koja se može spojiti s računalom, izvoditi složenije programe i kretati se s većom preciznošću, pa ću to učiniti za svoj sljedeći projekt. Koristit ću visokokvalitetne servo sisteme za digitalnu robotiku i nadam se da će mi to omogućiti da izbjegnem mnoge probleme s kojima sam se susreo u ovom projektu.

CAD dokument:

cad.onshape.com/documents/818ea878dda7ca2f…

Preporučeni: