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, Oktobar
Anonim
Robotska ruka: Jensen
Robotska ruka: Jensen

Jensen je robotska ruka izgrađena na Arduino platformi s fokusom na intuitivno planiranje pokreta, rađena 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, želio sam naučiti kako koristiti CAD softver i želio sam napraviti napredni Arduino projekt. Vidio sam ovo kao priliku da učinim sve te stvari.

Korak 1: Originalni dizajn i opseg

Originalni dizajn i opseg
Originalni dizajn i opseg

CAD softver koji sam odabrao za učenje na ovom projektu 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 po razumnoj cijeni. Takođe je poslužila 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 šta ž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 štampanje na mom 3D štampaču. Zato je baza koju vidite na gornjoj fotografiji relativno primitivan kvadrat.

Tokom ove faze projekta, takođe sam razmišljao o tome kako želim da kontrolišem ruku. Jedna robotizirana ruka koju sam inspirisao u proizvođačkom prostoru koristila je lutkarsku ruku za kontrolu. Drugi je koristio intuitivnu metodu programiranja putanje u kojoj je ruku korisnik pomaknuo u različite položaje. Ruka bi se zatim vratila kroz te položaje.

Moj prvobitni plan je bio završiti konstrukciju kraka, a zatim primijeniti obje ove metode kontrole. Takođe sam želeo da napravim kompjutersku aplikaciju za kontrolu u nekom trenutku nakon toga. Kao što vjerovatno možete reći, na kraju sam smanjio opseg ovog aspekta projekta. Kada sam počeo raditi na te prve dvije metode upravljanja, brzo sam otkrio da je programiranje intuitivnog 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

Kontrola
Kontrola

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 pozicija, pritisnite dugme za reprodukciju i ruka se vraća u svaku od tih pozicija u nizu.

U ovoj metodi kontrole bilo je potrebno otkriti mnogo toga. Da bi se svaki servo pogon vratio u sačuvani ugao, morao sam nekako "sačuvati" te uglove. To je zahtijevalo Arduino Uno koji sam koristio da bi mogao primiti trenutni kut svakog serva. Moj prijatelj Jeremy Paradie, koji je napravio robotsku ruku koja koristi ovu metodu upravljanja, nagovestio me je da koristim unutrašnji 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 unutrašnjeg 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 dolazi sa srednjeg pina. Ovaj problem je 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, upotreba analognog ulaznog pina Arduina za očitavanje napona na srednjem pinu potenciometra dok pomičete servo trubu između 0 i 180 stupnjeva vraća poseban 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 sačuvanu ulaznu vrijednost u izlaznu vrijednost, preciznost se izgubila. Tada sam zaključio da mi je potrebna kontrolna petlja kako bih svoje servomotore doveo tamo gdje trebaju.

Napisao sam kod za PID kontrolnu 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 su predstavljali uglove, pa je dodavanje proporcionalne i izvedene kontrole imalo za posljedicu da dođe do prekoračenja ili do neželjenog ponašanja. Nakon podešavanja integralne kontrole, ostala su dva problema. Prvo, ako je početna greš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 servo servera na gornju sliku. Napravio sam i objekt kontrolne petlje za svaki servo u softveru.)

Problem prebrzog ubrzanja riješio sam stavljanjem eksponencijalno ponderiranog pomičnog prosjeka (EWMA) filtra na izlaz. 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 dešavaju brzinom od 50Hz. Slučajno sam znao da je PWM signal koji se šalje na servosisteme također bio na frekvenciji 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 zauzvrat 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 čitanje nego što je imao Arduino Uno, pa sam u ovom trenutku prešao i na Arduino Mega. U svom kodu promijenio sam kutni ulaz sa 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.

Sastavio sam sve zajedno i testirao, ali skokovi su se i dalje događali. Ono što je trebalo da uradim u ovom trenutku je da istražim svoj teren. Umjesto toga, moja sljedeća ideja je 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 mogu napajati. Također sam presjekao vezu između upravljačke ploče i V+ pina u svakom servo -u. Sastavio sam sve zajedno, vratio kut unosa ugla 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 pokvarilo unutarnje petlje upravljanja servo pogona. 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 čak i 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 servo motorima morale su mjeriti napon na srednjem pinu potenciometra u odnosu na napon na V+ i referentne pinove. Napajanje potenciometara zasebno je poremetilo to relativno mjerenje jer se sada umjesto skoka napona 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, ponovo spojio žicu koju sam presjekao i dodao treću žicu koja dolazi iz referentnog pina na potenciometru. U svom kodu, kutni ulaz sam napravio ekvivalentnom sljedećem izrazu: (srednji pin - referentni pin) / (V+pin - referentni pin). Testirao sam ga i uspješno je smanjio efekte skokova napona. Osim toga, na ovaj ulaz sam stavio i EWMA filter. Ovaj obrađeni signal i originalni signal su prikazani gore.

Korak 4: Zaključite stvari

Završavanje stvari
Završavanje stvari

Budući da je problem s bukom riješen po 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. Odštampao sam i hvataljku i malo je brusio da bi radila.

Veoma sam zadovoljan konačnim rezultatom. Intuitivno planiranje pokreta radi dosljedno, a kretanje je glatko i precizno, uzimajući u obzir sve. Ako bi netko drugi htio napraviti ovaj projekt, prvo bih ga snažno ohrabrio da napravi jednostavniju verziju. Gledajući unatrag, izrada takvog nečega pomoću hobi servo motora bila je vrlo naivna, a poteškoće koje sam imao s tim da to funkcionira pokazuju to. Smatram čudom da ruka radi jednako dobro. Još uvijek želim napraviti robotsku ruku koja se može spojiti s računarom, pokretati 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 na koje sam naišao u ovom projektu.

CAD dokument:

cad.onshape.com/documents/818ea878dda7ca2f…

Preporučuje se: