Bygga en robotarm för Science Olympiad (12 / 14 steg)

Steg 12: P.3, kod: omvänd kinematik och annan kod bitar



Ifrån manuellt försökande till räkna ut de exakta vinklar som krävs att få armen till varje plats, omvänd kinematik är det enda sättet att räkna ut hur man placera servon att föra armen till en önskad plats. Matten är gymnasiet-nivå trigonometri, så jag kommer inte att täcka det här; Det finns flera användbara online miniräknare.

Först, vi ansåg inklusive omvända kinematiska beräkningar i vår Objective-C kod, men detta visade sig vara en dålig idé eftersom det finns massor av beräkningar att göra vid initiering, och efter de är gjort en gång, det finns ingen anledning att upprepa dem igen. Det faktum att objekt inte flytta runt är ju grunden för vår kontrollsystem. I stället vi hårdkoda vinklar.

En mycket viktig del av koden är en metod som kommer att sakta ner på armen som det att närma sig sin destination, i stället för knuffande det hela vägen och hoppas det inte börjar svänga (kanske i en perfekt värld med perfekta servon).

Först, vi Pausar körning för en liten tid att låta servo att flytta till vinkeln vi ge dem (första gången denna metod kallas, servo vilja inte ännu vara i rörelse):

[NSThread sleepForTimeInterval:0.03];

Nästa, vi jämför servo är nuvarande kantiga position till önskad slutposition - om det har nära nog (som vi definierat vara 2 grader), då anger du variabeln som lagrar den aktuella rotationsvinkel lika till önskad slutposition (du får se till detta är meningsfullt i en stund):

om (abs(targetAngle-angle) < = 2) {vinkel = targetAngle;}

Nu, beräkna en tiondel skillnaden mellan den aktuella rotationsvinkel och mål - om aktuella vinkeln är lika med vinkeln mål, då återgår noll:

dubbel diff = (targetAngle - vinkel) * 0.1;

Nu flytta servo till nuvarande kantiga position plus en tiondel skillnaden - om aktuella vinkeln är lika med vinkeln mål, detta kommer att orsaka servo att flytta hela vägen till målet vinkel:

[själv moveActualTo:(angle + diff)];

Se video beskrivningen nedan för att få en bättre förståelse för hur någon varför detta sker. Du kan hitta här koden i metoden calculateChange i Motor.m, som fästas som en del av en zip-fil i nästa steg.

Den första versionen av vår kod används endast elektromagneten (detta är vad vi tog till regionals - videon togs runt 06: 00 dag, efter en all-nighter att få det att fungera!) och såg ut ungefär så här:

YouTube video Beskrivning:

"Detta är den första fullständiga testet av våra robotarm för Massachusetts Science Olympiad. Vi hade en av koordinaterna fel i vårt program (Ja, det visade sig vara en programvaruproblem - mycket bättre än en slumpmässig "MOSFET inte aktivera" glitch!), så det inte gick att plocka upp en av spikarna, men vi fick den fast i tid för händelsen regionala senare samma dag och vann en jordskredsseger!

Ett av de problem vi hade tidigare (och många av lagen hade vid regionals) oscillerande servon och servon som rör alltför snabbt och svinga armen i oförutsägbara vägar. För att åtgärda detta, skrev vi en algoritm som saktar ner servon när de närmar sin slutdestination genom att ge dem en kontinuerlig ström av koordinater som är exponentiellt närmare och närmare mål vinkeln till servo är inom några delta, vanligtvis en eller två grader, i denna vinkel och nära nog för att bara gå direkt dit. Varje iteration beräknas genom att hitta en tiondel av den vinkel som servo återstår att resa för att slutföra steget. Istället för att använda rekursion har metoden vinkel-beräkning av kalla sig tills steget är klar, använde vilket är det självklara valet, vi en NSTimer i en egen tråd för att undvika att behöva lägga till förseningar i vårt program att hänga beräkningarna med servon (servon gå mycket långsammare än datorn kan spotta ut vinklar).

Anledningen till att vi använda exponentiell förruttnelse snarare än bara avtog linjär rörelse är att armen i huvudsak fungerar som en dämpad Harmonisk oscillator (om vi antar att den proportionella termen i servo är inre PID-regulator dominerar runt börvärdet, vilket verkar passa vad jag observerade när armen oscillerande), så om vi kör det linjärt, det kommer att börja med några inledande kinetisk energi när den är på resmålet och svänga runt det snarare än komma till ett stopp. Den enda lösningen (om vi insisterar på att köra det linjärt) är att bromsa armen för att minska amplituden av svängningen tills vi anser det acceptabelt, vilket inte är önskvärt när man betraktar detta som en begränsad konkurrens. Istället, om vi tvingar det till nästa vinkel med i ett exponentiellt ruttnande mönster, det bör komma det med väldigt lite rörelseenergi, med fel orsakade endast av faktumet att vi ger det diskreta data.

Varje position som servon måste nå beräknas använda omvänd kinematik och därefter justeras individuellt med hjälp av vårt program manuellt läge vara så korrekt som möjligt. En av de saker vi arbetar med för nästa månad är realtid inverse kinematic kontroll som gör det möjligt att flytta den arm slutet effektor i någon exakt väg som vi väljer, i stället för bara flytta servon till varje vinkel en i taget som vi gör nu.

Även om vi bara har en elektromagnet, och inte en universell gripdon eller klo, som man kan plocka upp föremål (vilket tvingade oss att lämna hälften av spelplanen orörda), automatisk kontroll innebär att denna arm kan plocka upp föremål snabbt och utan mänskliga fel, så att vi framgångsrikt placera 100% av objekt vi siktar på att placera varje gång vi kör armen."

Se Steg
Relaterade Ämnen

Robotarm Trifecta (Science Olympiad)

)Välkommen 2016 Science Olympiad lag! Robotarm händelsen är tillbaka och är du redo att göra några kick-butt robotar? Lämna gärna en kommentar nedan att messaging oss så att gemenskapen kan växa som helhet. Vi älskade denna händelse och är glada att...

Air bana för Science Olympiad

Min 13-åriga dotter utformade detta projekt för Science Olympiad konkurrens. Även avsedd att uppfylla vissa krav, är det ett trevligt projekt för stammen, 4H, Boy/Girl Scouts aktivitet.Detta var min dotters planen. så jag var tvungen att motstå frest...

Sumo-Bot (TSA och Science Olympiad regler)

detta är min Sumo-Bot för min teknik studenter Association (TSA) club http://www.nystsa.org/ . Denna robot passar också in alla Science Olympiad regler också. I grunden för händelsen du måste bygga en sumo-bot som passar alla krav regler och tävla ro...

Hur man gör en Sumo Bot (Science Olympiad 2011 regler)

denna Sumo Bot var talet High School, från Rochester, Minnesota, Science Olympiad lagets träder staten konkurrensen på mars 5, 2011. Även om vi inte gjorde så bra (25 av 32 lag), jag bestämde mig ändå för att visa upp mitt hårda arbete, och ge tips f...

2011 Science Olympiad torn händelse Division C

detta år jag tävlade i händelsen Science Olympiad torn och placerade 6 anläggning alla vikten krävs. Reglerna var ganska svårt att förstå, och det är den främsta anledningen vi endast placeras 6. I reglerna står det att lasten stöds inte överstiga 15...

Hur man bygger en robotarm

Uppdatera: https://www.youtube.com/watch?v=BILiuqRmLRIvill bygga registeransvarige gå till härvideon är:http://www.youtube.com/watch?v=N9z7OQLlhrEhttp://www.youtube.com/watch?v=jozshuI246o&feature=youtu.behttp://www.youtube.com/watch?v=onQIzR5C8qkhtt...

Bygga en robotarm

Har du någonsin undrat vilken framtid ser ut? Hela världen kommer att fyllas med teknik och robotar kommer att vara överallt. Vi kan även bild massor av människor njuter av karriärer inom teknik och robotteknik! Robotar är extremt precisa när de arbe...

Bygga en akustikgitarr

jag gjorde denna gitarr för min science Olympiad event. Science Olympiad är en konkurrenskraftig turnering där studenter deltar i olika vetenskapliga evenemang mot andra skolor. En av mina händelser kallas ljud av musik där du har att bygga två olika...

Hur man bygger en Hank Drum

denna handledning omfattar hur man konstruerar en hank trumma, ett instrument som uppfunnits av Dennis Havlena som imiterar den extremt dyrt och svårt att få Hang Drum. Detta instrument kan byggas för $27 om man har alla nödvändiga verktyg. Ett fynd...

ROBOTARM Arduino kontrollerade

En robotarm ansvarar för mycket komplicerade processer som krävs för en rigorös och komplex programmering; jag är en elektronisk teknolog och jag har alltid fångat min uppmärksamhet dessa projekt så jag bestämde mig för "Jag vill bygga en robotarm.&q...

Kontrollera ArmLinkLibrary-master robotarm med Arm länk programvara

Vill vara cool som Simone Giertz men ArmLinkSerial n't vet var du ska börja?InterbotiX Arm länk programvaran ger ett enkelt gränssnitt för GlobalArm.h -kompatibel robotarmar. Med denna programvara kan du styra robotarm via en mängd rörelse lägen inkl...

Rörelse, styrda robotarm

* detta instructable är inte klar, jag kommer att lägga kod snartArm:Detta instructable visar processen för att bygga en robotarm med servon, Arduino mikroprocessor, ett gyroskop och flera bend sensorer.Användaren bär en handske som innehåller gyrosk...

Robotarm med servomotorer

en del av min PhD forskning på NYU-Poly innebär förutsäga energiförbrukning i robotsystem, så jag behövde ett robotsystem att arbeta med som forskningsplattform att validera resultaten. Så jag övertygad om min grupp kompisar i min klass mekatronik i...

Hemgjord robotarm med hjälp av standarddelar använder Arduino och en bearbetning GUI

Jag nyligen pensionerad och saker jag lovat mig själv var att när jag slutar jag skulle slutföra alla de projekt som jag hade sprungit runt i mitt huvud sedan jag var tonåring. Det är omkring 50 år eller så av projekt. På den tiden fanns det inga mik...

Kontrollera din robotarm, Cool sätt

Hej alla!lik några av er kanske vet är att jag måste bygga en robotarm i past(see link)Hur man bygger en robotarmDet var bara ett problem, registeransvarige.länk till videosom du kan se i detta instructable, är att armen kontrolleras av några potenti...

Bluetooth+Infrared Controlled Robotic Arm

Hi. Jag är Darren en 17-årig hobby, och detta är den första Instructable jag meddelanden här, så jag ber om ursäkt om det kinda suger! Jag hoppas det är bra nog...Så hur kom idén om en robotarm till mig? Tja, är det första jag minns vår kemilärare (!...

Remote Control Robot Arm

detta är talet High School Science Olympiad Robot Arm som tävlade på Minnesota 2012 staten Science Olympiad turneringen med 32 andra lag. Jag byggde och körde denna fjärrkontroll robotarm för turneringen, utsläppande 8 (på grund av oförutsedda proble...

10 enkla steg för att göra din egen cello!

* Uppdaterad 12/13/15 jag ber om ursäkt för något trauma ellerkroppsskada som orsakats av min 9: e klass grammatikMin vän och jag försökte bygga en cello för min 9: e klass Science Olympiad ljud av musiktävling--detta är resultatet.Trä:-Kropp: plywoo...

Prisvärd TV fjärrstyrda Clawbot

Denna robot kan styras av TV remote, och kan programmeras att göra olika uppgifter. Det använder en Arduino och kan byggas för under $125. Denna robot gjordes för en konkurrens för Science Olympiad. Det användes för att plocka upp föremål i olika sto...