Institutionen för systemteknik Department of Electrical Engineering Examensarbete Automatisk trimning av en flexibel manipulator Examensarbete utfört i Reglerteknik vid Tekniska högskolan i Linköping av Patrik Axelsson LITH-ISY-EX--09/4189--SE Linköping 2009 Department of Electrical Engineering Linköpings universitet SE-581 83 Linköping, Sweden Linköpings tekniska högskola Linköpings universitet 581 83 Linköping
Automatisk trimning av en flexibel manipulator Examensarbete utfört i Reglerteknik vid Tekniska högskolan i Linköping av Patrik Axelsson LITH-ISY-EX--09/4189--SE Handledare: Examinator: Stig Moberg abb ab Robotics Mikael Norrlöf abb ab Robotics Johanna Wallén isy, Linköpings universitet Erik Wernholt isy, Linköpings universitet Linköping, 27 januari, 2009
Avdelning, Institution Division, Department Division of Automatic Control Department of Electrical Engineering Linköpings universitet SE-581 83 Linköping, Sweden Datum Date 2009-01-27 Språk Language Svenska/Swedish Engelska/English Rapporttyp Report category Licentiatavhandling Examensarbete C-uppsats D-uppsats Övrig rapport ISBN ISRN LITH-ISY-EX--09/4189--SE Serietitel och serienummer Title of series, numbering ISSN URL för elektronisk version http://www.control.isy.liu.se http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-16322 Titel Title Automatisk trimning av en flexibel manipulator Automatic tuning of a flexible manipulator Författare Author Patrik Axelsson Sammanfattning Abstract Industrial robots are more complex today than they were a few years ago. The control is based on mathematical models and in order to keep the performance or make it even better it is desirable to adjust the models so that they fit the individual robot. It is therefore necessary to adjust the model parameters. The report deals with how to tune the model parameters, that affect the joint flexibility, to decrease the oscillation of the tool. A joint is dependent on the motion of the other joints and therefore it becomes a six-dimensional optimization problem. The problem can be simplified to a number of subproblems with at most three dimensions by selecting joint positions which minimizes the coupling between the joints. The objective function is calculated as the L2-norm over a sequence of the motor torque. The sequence is defined to be where the torque reference is constant. A robot which is poorly tuned oscillate a lot, which implies a large function value. The oscillation can be decreased by a careful tuning of the model parameters. Nyckelord Keywords Automatisk trimning, Flexibelt mekaniskt system, Heltalsoptimering, Complex
Abstract Industrial robots are more complex today than they were a few years ago. The control is based on mathematical models and in order to keep the performance or make it even better it is desirable to adjust the models so that they fit the individual robot. It is therefore necessary to adjust the model parameters. The report deals with how to tune the model parameters, that affect the joint flexibility, to decrease the oscillation of the tool. A joint is dependent on the motion of the other joints and therefore it becomes a six-dimensional optimization problem. The problem can be simplified to a number of subproblems with at most three dimensions by selecting joint positions which minimizes the coupling between the joints. The objective function is calculated as the L2-norm over a sequence of the motor torque. The sequence is defined to be where the torque reference is constant. A robot which is poorly tuned oscillate a lot, which implies a large function value. The oscillation can be decreased by a careful tuning of the model parameters. Sammanfattning Dagens industrirobotar är mycket mer komplexa än vad de var för några år sedan. Regleringen baseras på matematiska modeller och för att prestandan ska var lika bra eller bättre än förr krävs det att modellerna är anpassade till individen. Det krävs därför att modellparametrarna justeras för att stämma överens med den aktuella roboten. Rapporten handlar om hur de flexibla modellparametrarna ska trimmas för robotens leder så att verktygets svängningar minskar. På grund av att en rörelse på en axel påverkar de övriga axlarna, blir detta ett sexdimensionellt minimeringsproblem. Detta kan dock lösas genom att låsa vissa leder i olika positioner och på så sätt delas minimeringen upp i flera steg med som mest tre variabler att minimera över. Målfunktionen beräknas som L2-normen över den del av momentsignalen som, enligt momentframkopplingen, ska var konstant. En dåligt trimmad robot svänger mycket vilket ger ett högt målfunktionsvärde. Genom att justera de flexibla modellparametrarna kan svängningen minimeras. v
Tack Jag skulle först vilja tacka mina handledare Stig Moberg och Mikael Norrlöf på ABB Robotics i Västerås för deras hjälp under arbetet. Jag vill också tacka alla andra på ABB Robotics som har hjälp mig och svarat på mina frågor. Ett speciellt tack riktas även till min exminator Erik Wernholt och min handledare Johanna Wallén på Linköpings universitet för deras granskning av rapporten och svar på frågor om L A TEX. Till sist vill jag tacka Robert Henriksson, som har gjort sitt examensarbete parallellt med mitt på ABB Robotics, för hans hjälp under arbetets gång. vii
Innehåll 1 Inledning 1 1.1 Bakgrund................................ 1 1.2 Syfte................................... 1 1.3 Metod.................................. 1 1.4 Uppdelning och begränsningar.................... 2 1.5 Rapportens disposition......................... 3 2 Systemöversikt 5 2.1 Koordinatsystem............................ 7 2.2 Simuleringsmodell........................... 8 2.3 Trimningsparametrar.......................... 10 2.4 Synkronisering mellan PC och robot................. 10 3 Kinematiska och dynamiska modeller 13 3.1 Translation och rotation av koordinatsystem............. 13 3.1.1 Hastighetstransformering................... 17 3.1.2 Kvaternioner.......................... 18 3.2 Kinematik................................ 19 3.2.1 Framåtkinematik........................ 19 3.2.2 Inverskinematik......................... 19 3.2.3 Hastighetskinematik...................... 20 3.3 Dynamik................................ 21 3.3.1 Stelkroppsdynamik....................... 21 3.3.2 Flexibla leder och friktion................... 22 3.4 Två-axlig robotmodell......................... 22 3.4.1 Kinematik............................ 23 3.4.2 Dynamik............................ 24 4 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 27 4.1 Målfunktion............................... 27 4.2 Experimentdesign............................ 30 4.2.1 Frekvensanalys......................... 32 4.3 Sammanfattning............................ 35 ix
x Innehåll 5 Validering på robot 37 5.1 Simulering jämfört med experiment.................. 39 5.2 Analys av mätdata........................... 40 6 Minimering av antalet funktionsanrop 45 6.1 Complex................................. 45 6.2 Parameterinställning.......................... 48 7 Experimentella resultat för axel 1, 4, 5 och 6 51 7.1 Axel 1.................................. 51 7.2 Axel 1 och 4............................... 52 7.3 Axel 1 och 5............................... 54 7.4 Axel 1, 4 och 6............................. 54 7.5 Sammanfattning............................ 55 8 Processbaserad trimning 57 8.1 Målfunktion............................... 57 8.2 Resultat................................. 59 8.2.1 Optimering med hjälp av Complex.............. 61 9 Sammanfattning och framtida arbete 63 9.1 Sammanfattning............................ 63 9.2 Framtida arbete............................. 64 Litteraturförteckning 65 A Utvärdering av mätdata för axel 2 och 3 67 A.1 Υ-värden................................ 67 A.2 Målfunktionsvärden.......................... 70
Kapitel 1 Inledning 1.1 Bakgrund Dagens industrirobotar används i många olika tillämpningar med varierande prestandakrav. Dagens robotar innehåller billigare motorer och växlar samt vekare armar än förr, vilket innebär att mer komplexa modeller med fler parametrar behövs för att kunna beskriva robotens rörelse. För att behålla prestandan krävs det mer avancerade regulatorer som ska vara robusta mot modell- och parameterosäkerheter. Skillnader i parametrarna mellan olika individer kräver en individuell trimning så att regleringen baseras på en korrekt modell för den aktuella roboten. I dagsläget kan det göras manuellt, men det är ett svårt och tidskrävande arbete som kräver goda kunskaper i hur parametrarna påverkar systemet. 1.2 Syfte Syftet med arbetet är att undersöka hur vekhetsparametrarna i modellen för en robot kan trimmas. Mer specifikt gäller det vekhetsparametrarna för robotens sex leder. Målet är att utveckla en metod som kan trimma vekheterna i samtliga leder. Figur 1.1 visar var lederna och verktyget finns på roboten. 1.3 Metod Arbetet börjar med att simulera ett två-axligt system för att testa olika tillvägagångssätt för att trimma vekhetsparametrarna. Det två-axliga systemet motsvarar axel två och tre på en robot. Efter att ha kommit fram till ett kriterium att minimera som ger ett mått på hur bra regleringen fungerar under simuleringen görs mätningar på en robot för att validera resultatet. För varje funktionsanrop körs roboten. Varje sådant experiment är kostsamt och därför behövs det en optimeringsmetod som minskar antalet funktionsanrop och på ett intelligent sätt väljer parametervärdena. När allt detta är gjort ska ett system implementeras som hittar 1
2 Inledning Figur 1.1. Axlarna/lederna för en abb irb6600 med punktsvetsverktyg. de optimala parametrarna automatiskt. Till utvärderingen används ett lasermätningssystem från Leica, se [1], som mäter verktygets position. 1.4 Uppdelning och begränsningar Arbetet är uppdelat i två delar som kallas för Generell AutoTune och Processbaserad AutoTune. I första hand kommer arbetet att fokusera på Generell AutoTune. Generell AutoTune Här behandlas individskillnader och skillnad i robotens omgivning. Även om parametrarna skattas nästan perfekt på en robot, kommer nästa robot som tillverkas av samma typ att skilja sig lite från den som användes vid parameterskattningen. Det blir då individskillnader som måste tas om hand för att få en bra reglering. Omgivningen påverkar också reglerprestandan. Står roboten på ett stativ som inte är tillräckligt styvt kommer roboten att svänga lite mer än vad som är fallet om den står på ett styvare stativ. Stativets vekhet kan inte trimmas direkt, utan görs indirekt genom att trimma vekheterna i lederna. Robotens rörelse kommer att vara begränsad till en punkt till punkt-rörelse, både för att minska komplexiteten och för att det är en typ av stegsvarsexperiment som visar upp systemets viktiga egenskaper. Processbaserad AutoTune Här fokuseras arbetet på banföljning. En robot kan vara perfekt trimmad för individskillnader och omgivningen och klara de flesta banorna. Men en viss typ av bana som roboten måste klara av kan ge problem. Därför måste roboten kunna trimmas för att klara av den specifika banan bättre. Här tillåts roboten göra en godtycklig rörelse. Arbetet är begränsat till att trimma vekhetsparametrarna i lederna och att endast sensorer som redan sitter på roboten får användas. Verktygspositionen är
1.5 Rapportens disposition 3 därför inte tillgänglig vilket skulle kunna vara ett naturligt val att basera målfunktionen på. 1.5 Rapportens disposition Rapportens olika kapitel handlar om följande. Kapitel 2: En översikt av de olika delarna i ett robotsystem presenteras i detta kapitel. Även en beskrivning av simuleringmodellen ges. Kapitel 3: Här presenteras en sammanfattning av de kinematiska och dynamiska modeller som används för simulering och modellering. Kapitel 4: Resultatet från simulering av en två-axlig modell presenteras här. Vilken typ av målfunktion som används och hur den påverkas av värdet på trimparametern förklaras också. Kapitel 5: Här sammanfattas valideringen av målfunktionen på en robot. Kapitel 6: För att minska antalet experiment krävs det en optimeringsmetod. I det här kapitlet anges vilken optimeringsmetod som används samt på vilket sätt den kan ställas in för att maximera träffsäkerheten. Kapitel 7: Här presenteras resultatet för axel 1, 4, 5 och 6. Kapitel 8: Tidigare kapitel har behandlat Generell AutoTune. Här sammanfattas resultaten för Processbaserad AutoTune. Kapitel 9 Här sammanfattas rapporten och även framtida arbete presenteras.
Kapitel 2 Systemöversikt En industrirobot har som uppgift att utföra arbeten där hög precision krävs vid snabb produktionstakt eller utföra uppgifter i miljöer där det är farligt för människor att vistas. En robot behöver därför vara slitstark, ha hög precision vid höga hastigheter och vara robust mot störningar. De två sista kraven kräver bra modeller och regulatorer. Exempel på arbetsuppgifter är punktsvetsing, bågsvetsning, limning och skärning. Det finns två typer av industrirobotar. Den vanligaste har armarna i serie, se figur 2.1(a), medan den andra robottypen har parallella armar, se figur 2.1(b). Arbetet kommer endast att behandla seriella robotar. För att styra en robot krävs det förutom den fysiska roboten även kraftfulla datorer som kan planera banan och sköta regleringen. Figur 2.2 visar hur ett robotstyrsystem ser ut i stora drag. Nedan presenteras de ingående delarna, se även [9]. Användarprogram I användarprogrammet anges vilken typ av rörelse roboten ska göra i form av en instruktion. Som exempel kan nämnas MoveL x1, v1. Instruktionen gör en linjär rörelse till punkt x1 från föregående punkt med hastigheten v1. Det finns även andra typer av instruktioner som underlättar styrningen, t.ex. if, for och while. Användaren kan även styra roboten manuellt med hjälp av en joystick, även kallat för jogging. Bangenerator Bangeneratorn beräknar först den geometriska banan mellan punkterna som anges i användarprogrammet. När den geometriska banan är bestämd, används den önskade hastigheten samt begränsningar på hastigheten och accelerationen som användaren har angivit för att bestämma robotens rörelse längs banan med avseende på tiden. Även begränsningar på till exempel motormomenten och växelmoment används. Bangeneratorn använder de kinematiska modellerna för omvandlingen mellan kartesiska koordinater och armvinklar. Modeller Modellerna är uppdelade i kinematiska och dynamiska modeller, där de kinematiska modellerna används för att beskriva sambandet mellan armvinklarna och de kartesiska koordinaterna för verktygets arbetspunkt, även 5
6 Systemöversikt (a) abb irb7600. (b) abb irb340. Figur 2.1. Två typer av robotar. En seriell, (a), och en parallell, (b). Figur 2.2. Systemöversikt för en robot och dess styrsystem. I användarprogrammet anges hur roboten ska röra sig och bangeneratorn beräknar banan utgående från användarprogrammet. Regulatorn består av en framkopplingslänk som beräknar motorreferenser och en återkopplingslänk som korrigerar för modellfel och störningar. Till sin hjälp har bangeneratorn och regulatorn kinematiska och dynamiska modeller.
2.1 Koordinatsystem 7 kallad tcp (Tool Center Point). Mer om detta beskrivs i kapitel 3.2. De dynamiska modellerna används för att bestämma ett önskat moment till motorerna så att tcp rör sig enligt användarens önskemål. Kapitel 3.3 beskriver dessa modeller. Regulator Regulatorn består av en framkopplingslänk och en återkopplingslänk. Utgående från armvinklarna räknar framkopplingen fram det önskade momentet samt referenser för motorvinklarna med hjälp av de dynamiska modellerna. Återkopplingen korrigerar för modellfel och störningar genom att återkoppla motorvinklarna. Ut från regulatorn kommer momentet till motorerna. Robot Roboten är en seriell mekanism med ett antal axlar, det vanligaste är sex stycken. Figur 2.3 förklarar hur rörelsen för dessa sex axlar är definierade. Vid varje axel sitter en motor och en växellåda. Styrsignalerna från regulatorn är egentligen referenser till en momentregulator, men den antas vara ideal och därför kan signalen från regulatorn tolkas som det verkliga momentet som motorerna ger. Figur 2.3. En abb irb6600 där rörelseriktningarna för samtliga sex axlar visas. 2.1 Koordinatsystem När man pratar om robotens position och orientering, menas indirekt verktygets arbetspunkt. Arbetspunkten, tcp, är ofta definierad på verktyget, exempelvis stiftet på en svetspistol. För att förenkla programmeringen av roboten används ett antal koordinatsystem som beskriver hur robotens delar och omgivningen är relaterade till varandra under rörelsen. En beskrivning av de vanligaste koordinatsystemen som abb använder finns nedan, en mer utförlig förklaring finns i [2]. Alla
8 Systemöversikt koordinatsystemen behöver inte användas men de är till stor hjälp då roboten ska programmeras. Figur 2.4 visar hur de olika koordinatsystemen är relaterade till varandra. Globalt koordinatsystem Används då flera robotar samverkar. Om det bara finns en robot sammanfaller det globala koordinatsystemet med baskoordinatsystemet. Baskoordinatsystem Beskriver positionen och orienteringen för robotens bas relativt det globala koordinatsystemet. Handledskoordinatsystem Origo ligger i anslutningsflänsens centrum och z- axeln sammanfaller med rotationsaxeln på axel 6. Verktygskoordinatsystem Beskriver position och orientering för verktyget relativt handledskoordinatsystemet. Origo är placerad i tcp. Användarkoordinatsystem Beskriver positionen och orienteringen för den yta roboten arbetar mot. Definieras relativt det globala koordinatsystemet. Objektkoordinatsystem Beskriver positionen och orienteringen för arbetsobjekten relativt användarkoordinatsystemet. Exempel på arbetsobjekt är en bilkaross. Förskjutningskoordinatsystem Beskriver punkter inom ett objekt. Definieras relativt objektkoordinatsystemet. Målkoordinatsystem Beskriver position och orientering för målet. Definieras relativt förskjutningskoordinatsystemet. Exempel på mål är de punkter på en bilkaross som ska punktsvetsas. Uppgiften för roboten är att förflytta tcp så att verktygskoordinatsystemet och målkoordinatsystemet sammanfaller. För att klara av det måste verktygskoordinatsystemet och målkoordinatsystemet beskrivas relativt det globala systemet. En sammanfattning av transformeringen mellan olika koordinatsystem ges i kapitel 3.1. När positionen och orienteringen för tcp är bestämd, kan axlarnas vinklar beräknas enligt kapitel 3.2.2. 2.2 Simuleringsmodell Modellen består av två armar, där rörelsen sker i ett plan, som motsvarar axel 2 och 3 på en seriell robot. Varje led modelleras som en olinjär fjäder och en linjär dämpare. I kapitel 3.4 presenteras en mer utförlig beskrivning med alla ingående ekvationer. Till robotmodellen kopplas en regulator, en bangenerator, ett block som beräknar den inversa kinematiken, en motorreferensgenerator och framkopplingen. Strukturen för modellen visas i figur 2.5. Bangeneratorn skapar en bana i kartesiska koordinater för tcp mellan två punkter. Via inverskinematiken genereras referensvinklarna qa ref för armarna. Dessa armvinklar används sedan till att
2.2 Simuleringsmodell 9 Figur 2.4. Koordinatsystemen och deras relation till varandra. till motorerna. Till sist beräknas motormomenten u m till robotmodellen med hjälp av en regulator som återkopplar den verkliga motorpositionen. Simuleringsmodellen sparar undan alla viktiga signaler som sedan används för utvärdering. Vid körning med en riktig robot har man dessvärre bara tillgång till motormomentet och motorpositionen samt referenssignalerna. bestämma framkopplingsmomentet u ffw m och referenssignaler q ref m Figur 2.5. Simuleringsmodell. Robotmodellen presenteras i kapitel 3.4. Till modellen kopplas en regulator, en bangenerator, ett block som beräknar den inversa kinematiken, en motorreferensgenerator och framkopplingen. Bangeneratorn beräknar referensbanan som överförs från kartesiska koordinater till axelpositioner via den inversa kinematiken. Framkopplingen och motorreferensgeneratorn beräknar framkopplingsmomentet och referenser för motorerna. Regulatorn korrigerar för modellfel och störningar.
10 Systemöversikt 2.3 Trimningsparametrar Det finns ett antal trimningsparametrar, allt från regulatorparametrar till friktionsoch vekhetsparametrar, där en justering av dessa parametrar ändrar robotens uppförande på olika sätt. Vissa minskar överslängen eller insvängningstiden och andra minskar banfelet. För samtliga parametrar gäller att de inte bestäms av absoluta värden utan istället som ett procentvärde av det ursprungliga värdet för den aktuella roboten. Anges trimningsparametern till 90 innebär det alltså 90 procent av det ursprungliga värdet. I det här arbetet gäller det att trimma vekheterna i lederna som nämndes i inledningen. Detta görs genom en parameter som kommer att kallas Υ i fortsättningen. Υ påverkar den lägsta egenfrekvensen hos roboten och finns i de dynamiska modellerna som används vid reglering. Det finns en Υ-parameter per axel, där minskat Υ ger vekare modell. I rapporten kommer axelnumret anges med ett index där Υ i är trimningsparametern för axel i. Om diskussionen handlar om fler än en axel anges ibland Υ utan index och är då en vektor som innehåller Υ i för de axlar som ingår i diskussionen. 2.4 Synkronisering mellan PC och robot Programmeringsspråket för abb:s robotar kallas för Rapid [2]. AutoTune-systemet bygger på att samla in data från olika körningar med olika parameterinställningar av en robot. Data ska sedan behandlas för att bestämma en optimal parameterinställning. För att undvika att skriva ny Rapid-kod för varje ny körning och sedan flytta över insamlad data manuellt till en PC har ett system utvecklats så att all programmering sker i Matlab. För att klara av detta utnyttjas att Rapid har en instruktion som heter Load. Load laddar en programmodul som Matlab-programmet har skapat och lagt över till roboten via en ftp-server. När modulen är laddad kan en procedur ur modulen exekveras och när proceduren är klar fortsätter det ursprungliga programmet sin exekvering. För att inte Rapid-programmet ska ladda en modul som inte finns och för att Matlab-programmet inte ska hämta mätdata som inte finns, synkroniseras dessa två program med semaforer. Semaforerna är filer som skapas och raderas när något av programmen förbjuder eller tillåter det andra programmet att fortsätta sin exekvering. I Matlab har ett antal funktioner skapats som med hjälp av funktionen fprintf skriver ut Rapid-instruktioner till en fil. Figur 2.6 visar hur de två programmen fungerar.
2.4 Synkronisering mellan PC och robot 11 Figur 2.6. Synkroniseringen mellan Matlab- och Rapid-programmen.
Kapitel 3 Kinematiska och dynamiska modeller I detta kapitel beskrivs de modeller som används för simulering och reglering av en industrirobot. Modelleringen delas upp i kinematik och dynamik. Transformeringen mellan olika koordinatsystem beskrivs också. 3.1 Translation och rotation av koordinatsystem Här beskrivs kort hur transformationer mellan olika koordinatsystem fungerar. En mer utförlig beskrivning finns i exempelvis [4] och [12]. Antag att koordinatsystem j är translaterat och roterat relativt koordinatsystem i, se figur 3.1. Translationen beskrivs av en vektor från origo i koordinatsystem i till origo i koordinatsystem j. Låt vektorn betecknas av r j/i. (3.1) För att förtydliga att r j/i är definierad i koordinatsystem i används index i enligt [ rj/i ] i. (3.2) Rotationen beskrivs med en matris som tar basvektorerna av koordinatsystem i och överför dem till basvektorerna i koordinatsystem j. Rotationsmatrisen från koordinatsystem i till koordinatsystem j uttryckt i koordinatsystem i betecknas med [Q j/i ] i. (3.3) En godtycklig rotation i tre dimensioner kan tolkas som en rotation av koordinatsystem j runt x-axeln i koordinatsystem i med vinkeln γ följt av en rotation runt y-axeln med vinkeln β och till sist en rotation runt z-axeln med vinkeln α. 13
14 Kinematiska och dynamiska modeller Figur 3.1. Koordinatsystem j är translaterat och roterat i förhållande till koordinatsystem i. Rotationsmatrisen blir då ] c(α)c(β) c(α)s(β)s(γ) s(α)c(γ) c(α)s(β)c(γ) + s(α)s(γ) [Q j/i = s(α)c(β) s(α)s(β)s(γ) + c(α)c(γ) s(α)s(β)c(γ) c(α)s(γ), i s(β) c(β)s(γ) c(β)c(γ) (3.4) där γ, β och α kallas för eulervinklar. Beteckningarna c(θ) = cos θ och s(θ) = sin θ används för att förenkla notationen. ] Då det finns tre koordinatsystem i, j och k, där [Q j/i [Q ]i och k/j är kända, beräknas transformationsmatrisen mellan koordinatsystem i och koordinatsystem k enligt ] ] [Q k/i [Q ]i = j/i [Q. (3.5) k/j i j En godtycklig vektor, u, definierad i koordinatsystem ] j transformeras till koordinatsystem i med hjälp av rotationsmatrisen [Q enligt j/i i ] [u] i = [Q [u] j/i j. (3.6) i Antag två koordinatsystem i och j, och en punkt P fix i koordinatsystem j enligt figur 3.2. Punkten P beskrivs då i koordinatsystem i av [r P ] i = [ r j/i ]i + [s P ] i. (3.7) Här är [ r j/i ]i känd och [s P ] i okänd. Men eftersom P är fix i koordinatsystem j kan [s P ] j bestämmas. Med hjälp av (3.6) kan [s P ] i skrivas som ] [s P ] i = [Q [s j/i P ] j. (3.8) i Ekvationerna (3.7) och (3.8) ger då att [r P ] i kan beskrivas enligt [r P ] i = [ ] [ r j/i + Q i j/i ]i [s P ] j. (3.9) Om homogena koordinater införs enligt ( ) [ ] r h = [rp ] i P, (3.10) i 1 j
3.1 Translation och rotation av koordinatsystem 15 Figur 3.2. Koordinatsystem j är translaterat och roterat i förhållande till koordinatsystem i. P :s läge är känt i koordinatsystem j och okänt i koordinatsystem i. kan (3.9) skrivas som matrismultiplikationen ] [ ] ) [ ] r h ([Q P i = j/i rj/i [s i i h P ]j 0 1 3 1 = [ ] [ ] T j/i i s h P j, (3.11) där 0 1 3 = ( 0 0 0 ). [r P ] i blir då de tre översta elementen i [ ] r h P. Ekvation (3.11) kan generaliseras till ett godtyckligt antal stelkroppar enligt figur 3.3. i Låt koordinatsystem 0 vara det globala koordinatsystemet och punkten P fix i koordinatsystem n. P :s läge i koordinatsystem 0 ges då av ( [ ] n ) r h = [ ] [ ] P 0 T i/i 1 s h, (3.12) P n i=1 i 1 }{{} [T n/0] 0 där [ T i/i 1 ] i 1 = ] [ ] ) ([Q i/i 1 ri/i 1 i 1 0 1x3 1 i 1. (3.13) Figur 3.3. Translation och rotation av n stelkroppar där translationen och rotationen för kropp i är känd relativt kropp i 1.
16 Kinematiska och dynamiska modeller Exempel 3.1: Två-axlig robot Vad blir punkten P :s koordinater uttryckt i koordinatsystem 0 för systemet i figur 3.4? Mekanismen motsvarar axel 2 och 3 på en robot. q a2 är en vinkel som anger hur mycket koordinatsystem 2 är roterat i förhållande till koordinatsystem 0 runt ŷ 0. q a3 är motsvarande för koordinatsystem 3 relativt koordinatsystem 2. Längden på arm i är l i, för de två armarna i = 2, 3. Figur 3.4. Två-axlig robot begränsad till xz-planet. Detta motsvarar axel två och tre på en seriell sex-axlig robot. För att beräkna [r P ] 0 används (3.12) och (3.13). Från figur 3.4 fås att [ ] 0 r2/0 = [ ] 2 3 0, r3/2 l = 0, [s 0 2 P ] 3 = l 0. 0 0 0 Med α = 0, γ = 0 och β = (π/2 q a2 ) i (3.4) blir ] sin (q a2 ) 0 cos (q a2 ) [Q = 2/0 0 1 0, (3.14) 0 cos (q a2 ) 0 sin (q a2 ) och med α = 0, γ = 0 och β = (π/2 + q a3 ) blir ] [Q = 3/2 sin (q a3) 0 cos (q a3 ) 0 1 0. (3.15) 2 cos (q a3 ) 0 sin (q a3 ) Ovanstånde matriser och vektorer insatta i (3.12) och (3.13) ger att ] [ ] ) ] [ ] ) [ ] r h ([Q = 2/0 r2/0 ([Q P 0 0 0 3/2 r3/2 [s ] 2 2 h P 3 0 1 0 1 l 2 sin (q a2 ) + l 3 cos (q a2 + q a3 ) = 0 l 2 cos (q a2 ) l 3 sin (q a2 + q a3 ). (3.16) 1
3.1 Translation och rotation av koordinatsystem 17 [r P ] 0 är nu de tre översta elementen i [ ] r h P enligt definitionen för homogena 0 koordinater. För detta system är det enkelt att komma fram till samma ekvationer enbart genom att titta i figuren och använda trigonometriska formler. Om figuren däremot utökas med fler armar och rörelsen inte begränsas till ett plan, blir det mycket svårare och den generella metoden beskriven enligt tidigare är ett bra hjälpmedel. 3.1.1 Hastighetstransformering Hastigheten för punkten P och vinkelhastigheten av kropp n i figur 3.5 fås av ( ) [ṙp ] 0 [ω n ] 0 = ( q 1 ) J 1 J n. q n, (3.17) där J i kallas för Jacobianen. Vid härledningen av (3.17) antas att koordinatsystem i är fixt i kropp i 1. För seriella robotar som normalt sett endast består av roterande leder blir Jacobianen ( ) [ẑi ] J i = 0 [ρ i ] 0, (3.18) [ẑ i ] 0 där ρ i är en vektor från O i till P enligt ρ i = r i+1/i +... + r n+1/n + s P. (3.19) Figur 3.5. Translation och rotation av n kroppar. Koordinatsystem i är fixt i kropp i 1 och ρ i är en vektor från O i till P.
18 Kinematiska och dynamiska modeller 3.1.2 Kvaternioner Om eulervinklar används för att beskriva rotationen kan det uppstå problem med singulariteter. Om β = π 2 i (3.4) blir rotationsmatrisen ] 0 c(α)s(γ) s(α)c(γ) c(α)c(γ) + s(α)s(γ) [Q j/i = 0 s(α)s(γ) + c(α)c(γ) s(α)c(γ) c(α)s(γ) i 1 0 0 0 s(γ α) c(γ α) = 0 c(γ α) s(γ α). (3.20) 1 0 0 Matrisen beror bara på skillnaden mellan γ och α, den har med andra ord tappat en frihetsgrad, vilket innebär en singularitet. Ovanstående problem kan uppkomma i mekaniska tröghetsnavigeringssystem och kalls Gimbal lock. I [7] presenteras hur rymdskeppet Apollos imu var nära att hamna i Gimbal lock och hur astronauterna löste problemet. Problemet kan lösas med så kallade enhetskvaternioner. En kvaternion definieras som ɛ = ɛ 0 + ɛ 1 i + ɛ 2 j + ɛ 3 k, (3.21) där ɛ 0, ɛ 1, ɛ 2 och ɛ 3 är reella tal som kallas för eulerparametrar och i, j och k är imaginära tal som uppfyller Konjugatet definieras som i 2 = j 2 = k 2 = 1, (3.22) ij = k, jk = i, ki = j, (3.23) ji = k, kj = i, ik = j. (3.24) ɛ = ɛ 0 ɛ 1 i ɛ 2 j ɛ 3 k. (3.25) Med denna definition av konjugatet blir ɛɛ ett reellt tal. Om detta reella tal är 1 kallas ɛ för en enhetskvaternion. Med andra ord är ɛ en enhetskvaternion om ɛɛ = ɛ ɛ = 1. (3.26) För att slippa använda i, j och k kan kvaternioner betecknas med en vektor enligt ɛ = ɛ 0 ɛ 1 ɛ 2 ɛ 3. (3.27) Rotationsmatrisen för kvaternioner ges av ] [Q = j/i 1 2(ɛ2 2 + ɛ 2 3) 2(ɛ 1 ɛ 2 ɛ 0 ɛ 3 ) 2(ɛ 0 ɛ 2 + ɛ 1 ɛ 3 ) 2(ɛ 1 ɛ 2 + ɛ 0 ɛ 3 ) 1 2(ɛ 2 1 + ɛ 2 3) 2(ɛ 2 ɛ 3 ɛ 0 ɛ 1 ). (3.28) i 2(ɛ 1 ɛ 3 ɛ 0 ɛ 2 ) 2(ɛ 0 ɛ 1 + ɛ 2 ɛ 3 ) 1 2(ɛ 2 1 + ɛ 2 2)
3.2 Kinematik 19 Övergången mellan eulervinklar och kvaternioner fås genom att jämföra matriserna i (3.4) och (3.28). Det resulterar i sambanden c(γ/2)c(β/2)c(α/2) + s(γ/2)s(β/2)s(α/2) ɛ = s(γ/2)c(β/2)c(α/2) c(γ/2)s(β/2)s(α/2) c(γ/2)s(β/2)c(α/2) + s(γ/2)c(β/2)s(α/2), (3.29) c(γ/2)c(β/2)s(α/2) s(γ/2)s(β/2)c(α/2) och γ arctan 2(ɛ0ɛ1+ɛ2ɛ3) 1 2(ɛ β 2 1 +ɛ2 3 ) = arcsin 2(ɛ 0 ɛ 2 ɛ 1 ɛ 3 ). (3.30) α arctan 2(ɛ0ɛ3+ɛ1ɛ2) 1 2(ɛ 2 2 +ɛ2 3 ) 3.2 Kinematik Kinematik handlar om att beskriva position, hastighet och acceleration av en kropp utan att ta hänsyn till de krafter och moment som skapar rörelsen. Här behandlas tidsegenskaperna och de geometriska egenskaperna hos rörelsen. En mer utförlig beskrivning finns i [9]. 3.2.1 Framåtkinematik Framåtkinematik innebär att bestämma position och orientering för verktygets koordinatsystem realtivt baskoordinatsystemet då axlarnas vinklar är kända. Det kan sammanfattas med X = Γ(q, θ kin ), (3.31) där X = ( p φ ) T är verktygets position och orientering och Γ är en olinjär funktion som kan bestämmas relativt enkelt enligt kapitel 3.1. θ kin är en systemparameter som innehåller karaktäristiska parametrar för robotens länkar och leder. Dessa karaktäristiska parametrar kan beräknas med hjälp av Denavit-Hartenbergnotationen som beskrivs i [4]. 3.2.2 Inverskinematik Inverskinematik är motsatsen till framåtkinematik. Här har man verktygets position och orientering uttryckt i baskoordinatsystemet och vill räkna fram axlarnas vinklar. Den inversa kinematiken består av olinjära ekvationer som ska lösas för varje ny position och orientering på verktyget. Det bästa är om det finns en analystisk lösning, den kan dock vara svår att hitta. Finns det ingen analytisk lösning krävs det numeriska lösningar som är tidskrävande och resurskrävande att använda. För en seriell robot har framåtkinematiken en unik lösning och den inversa kinematiken kan ha flera lösningar eller sakna lösning helt. Lösningarna saknas då positionen och orienteringen för verktyget ligger utanför arbetsområdet. Ett exempel på att det finns flera lösningar är elbow-up och elbow-down i figur 3.6.
20 Kinematiska och dynamiska modeller Figur 3.6. Lösningarna elbow-up (heldragen) och elbow-down (streckad) för det inversa kinematikproblemet. För parallella robotar är det tvärtom. Då är framåtkinematiken svår att lösa och kan ge olika lösningar medan den inversa kinematiken är enkel och ger en unik lösning. Inverskinematiken kan sammanfattas med q = Γ 1 (X, C, θ kin ), (3.32) som är ett system av olinjära ekvationer där X = ( p φ ) T, θkin är en systemparameter som innehåller karaktäristiska parametrar för robotens länkar och leder och C är en parameter som bestämmer den önskade konfigurationen. 3.2.3 Hastighetskinematik Hastighetskinematik betyder att beräkna hastigheten och rotationshastigheten för verktyget relativt något koordinatsystem givet positionen och rotationshastigheten för samtliga axlar. Derivering av ekvation (3.31) ger att Ẋ och Ẍ kan beräknas som Ẋ = Γ(q) q = J(q) q, (3.33) q och Ẍ = J(q) q + J(q) q. (3.34) Ovan beräknas Ẋ när q och q är kända. För att å andra sidan beräkna q då Ẋ och q är kända ger (3.33) att 1 q = J (q)ẋ. (3.35) Här används inversen J 1 (q) vilket kan ge olika problem. Om J(q) är singulär, det(j(q)) = 0, existerar inte J 1 (q) och det finns ingen lösning till problemet. Om J(q) är nära en singularitet blir J 1 (q) stor och i sin tur också q. J(q) blir singulär när bland annat roboten är på gränsen till sin arbetsrymd eller om två eller fler axlar sammanfaller. Roboten är på gränsen till sin arbetsrymd då den är helt utsträckt eller helt hopvikt. När J(q) är singulär har roboten tappat en eller flera frihetsgrader och kan då inte förflytta verktyget i alla riktningarna oavsett hur stora hastigheter man än applicerar. För att slippa derivera Γ(q) kan Jacobianen J(q) beskriven i (3.17) till (3.19) användas.
3.3 Dynamik 21 3.3 Dynamik Dynamik handlar till skillnad från kinematik om kroppars rörelse med hänsyn till krafterna och momenten som påverkar kroppen, se även [9]. 3.3.1 Stelkroppsdynamik En robot kan modelleras som en kedja av stela kroppar som länkas samman med styva leder. Till varje kropp hör ett koordinatsystem som är fixt i kroppen. I detta koordinatssytem definieras längden l, masscentrum ξ och tröghetsmatrisen J som l = l x l y, ξ = ξ x ξ y, J = J xx J xy J xz J yx J yy J yz. l z ξ z J zx J zy J zz De dynamiska ekvationerna kan sedan bestämmas med hjälp av Newton-Eulers formulering eller med Lagranges ekvation. Med Newton-Eulers formulering måste varje kropp friläggas och sedan ställs F = maξ, (3.36) och Mξ = I ξ α, (3.37) upp för varje kropp för att sedan förenklas. Index ξ innebär acceleration, moment och tröghetsmoment för kroppens masscentrum. Med Lagranges ekvation blir beräkningarna något enklare. Ett system med n frihetsgrader kan beskrivas med n generaliserade koordinater q i. För en seriell robot är q i en vinkel som definierar rörelsen för axel i. Lagrangefunktionen L kan uttryckas i dessa n koordinater och dess tidsderivator som L = K V där K är den kinetiska energin och V är den potentiella energin. L används sedan i d L L = τ i, (3.38) dt q i q i för att bestämma rörelseekvationerna där τ i är momentet på axel i från motorerna. Här är det viktigt att hålla reda på om beräkningarna görs på armsidan eller på motorsidan. I fortsättningen kommer beräkningarna göras på armsidan och därför måste motormomentet och motorpositionen multipliceras respektive divideras med utväxlingen η i växellådorna för att uttrycka dem på armsidan av växellådan enligt τ a = ητ m, (3.39) q a = q m η. (3.40) Oavsett vilken metod som används kommer ekvationerna bilda ett system av differentialekvationer. Ekvationerna kan sammanfattas på formen M(q) q + C(q, q) + G(q) = τ, (3.41) där M(q) är tröghetsmatrisen, C(q, q) beskriver Coriolis- och centripetalmomentet och G(q) beskriver gravitationsmomentet.
22 Kinematiska och dynamiska modeller 1.5 1 Friktionsmoment [Nm] 0.5 0 0.5 1 1.5 100 50 0 50 100 Hastighet [rad/s] Figur 3.7. En typsik friktionskurva som funktion av hastigheten för en växellåda. 3.3.2 Flexibla leder och friktion I verkligheten existerar inga styva leder och därför är ovanstående modell inte tillräckligt noggrann för att användas till simulering och reglering. Varje flexibel led modelleras därför som en fjäder och en dämpare mellan motor och arm. K(q) och D( q) beskriver moment orsakade av fjädrarna och dämparna. Dessa två uttryck kan antingen vara olinjära eller linjära. Dämparen brukar modelleras linjärt medan fjädern modelleras olinjärt. Ledens fjäderkarakteristik går att mäta enkelt och det visar att den är olinjär. Däremot är dämparens karakteristik svår att mäta men validering av modellen visar att det är fullt tillräckligt med en linjär modell för dämparen. Ett annat svårt problem för att få en bra modell är momentet från friktionen. Friktionsmomentet blir en olinjär term f( q) som beror på hastigheten, en typisk kurva för friktionsmomentet visas i figur 3.7. Den totala dynamiken blir nu M(q) q + C(q, q) + G(q) + K(q) + D( q) + f( q) = τ. (3.42) Modellen kan göras ännu mer noggrann genom att införa vekheter även i armarna. I [9] diskuteras hur detta kan modelleras. Där beskrivs också olika modeller för fjädrar och friktion. 3.4 Två-axlig robotmodell För simulering i arbetet används en två-axlig robotmodell beskriven i [9] och [10]. Modellen är begränsad till xz-planet och motsvarar axel 2 och 3 på en seriell sex-axlig robot, figur 3.8 visar hur modellen ser ut.
3.4 Två-axlig robotmodell 23 Figur 3.8. Två-axlig robot som motsvarar axel 2 och 3 på en seriell sex-axlig robot. Vekheten för axlarna modelleras med en olinjär fjäder och en linjär dämpare. Kinematiken för den här mekanismen togs fram i exempel 3.1. 3.4.1 Kinematik I exempel 3.1 beräknades kinematiken för roboten. I fortsättningen tas inte y- koordinaten med i beräkningarna eftersom den är konstant. Kinematiken ges av X = ( ) x(qa ) = z(q a ) ( ) l2 sin (q a2 ) + l 3 cos (q a2 + q a3 ) = Γ(q l 2 cos (q a2 ) l 3 sin (q a2 + q a3 ) a ). (3.43) Till detta problemet finns det en analystisk lösning till inverskinematiken som ges av ( ) ( ) π qa2 = 2 atan2(z, x) atan2(± 1 c 2 β, c β) q a3 atan2(s 2, ± 1 s 2 2 ), (3.44) där och c β = l2 2 + x 2 + z 2 l 2 3 2l 2 x2 + z 2, (3.45) s 2 = l2 2 + l 2 3 x 2 z 2 2l 2 l 3. (3.46) Funktionen atan2 är arctan över alla fyra kvadranter. Vilket tecken som ska användas framför rotuttrycket beror på om elbow-up eller elbow-down lösningen ska användas, se figur 3.6. Derivering av Γ(q a ) ger Jacobianen J(q a ) enligt J(q a ) = Γ q a = ( ) l2 cos (q a2 ) l 3 sin (q a2 + q a3 ) l 3 sin (q a2 + q a3 ). (3.47) l 2 sin (q a2 ) l 3 cos (q a2 + q a3 ) l 3 cos (q a2 + q a3 )
24 Kinematiska och dynamiska modeller 3.4.2 Dynamik Med hjälp av Lagranges ekvation fås de dynamiska ekvationerna enligt (3.42). Tillståndsvektorn q och insignalsvektorn u väljs enligt q a2 0 q = q a3 q m2 /η 2, u = 0 u m2 η 2, (3.48) q m3 /η 3 u m3 η 3 där q ai är armvinkeln för axel i, q mi är motorvinkeln för axel i och u mi är motormoment för axel i. Varje arm tilldelas en längd l i, en massa m i, ett tröghetsmoment j i och ett masscentrum ξ i. Insignalen är momentet från två motorer som styr varje led var för sig. Dessa motorer beskrivs med sina tröghetsmoment j mi. I varje led sitter en växellåda som beskrivs med ett olinjärt fjädermoment τ si, en linjär dämpare med dämpningskonstant d i och utväxlingsförhållandet η i. Tröghetsmatrisen M(q) ges av J 22 (q) J 23 (q) 0 0 M(q) = J 32 (q) J 33 (q) 0 0 0 0 j m2 η2 2 0, 0 0 0 j m3 η3 2 J 22 (q) = j 2 + m 2 ξ2 2 + j 3 + m 3 (l2 2 + ξ3 2 2l 2 ξ 3 sin (q a3 )), J 23 (q) = J 32 (q) = j 3 + m 3 (ξ 2 3 l 2 ξ 3 sin (q a3 )), J 33 (q) = j 3 + m 3 ξ 2 3. (3.49a) (3.49b) (3.49c) (3.49d) Koppling mellan armarna och motorerna försummas eftersom utväxlingsförhålladena är stora. Matriserna C(q, q) och G(q) blir och G(q) = C(q, q) = m 3 l 2 ξ 3 cos (q a3 )(2 q a2 q a3 + q a3) 2 m 3 l 2 ξ 3 cos (q a3 ) q 2 a2 0 0, (3.50) g(m 2 ξ 2 sin (q a2 ) + m 3 (l 2 sin (q a2 ) + ξ 3 cos (q a2 + q a3 ))) m 3 ξ 3 g cos (q a2 + q a3 ) 0 0 Dämparen modelleras linjärt och då ersätts D( q) av D q, där. (3.51) d 2 0 d 2 0 D = 0 d 3 0 d 3 d 2 0 d 2 0. (3.52) 0 d 3 0 d 3
3.4 Två-axlig robotmodell 25 Friktionen modelleras som 0 f( q) = 0 f 2 ( q), f 3 ( q) (3.53a) f i ( q) = η i (f vi q mi + f ci (µ ki + (1 µ ki ) cosh 1 (β i q mi )) tanh(α i q mi )), (3.53b) där f vi, f ci, µ ki, β i och α i är konstanta parametrar. Denna modell möjliggör en friktion enligt figur 3.7. Vektorn med fjädermomenten har formen τ s2 ( q2 ) τ s (q) = τ s3 ( q3 ) τ s2 ( q2 ), (3.54a) τ s3 ( q3 ) qi = q ai q mi /η i. (3.54b) Den olinjära fjädern består av två områden qi ψ i och qi > ψ i. Figur 3.9 visar hur momentet ser ut. När qi ψ i är kurvan olinjär och när qi > ψ i är kurvan linjär med den höga fjäderkonstanten. Detta kan sammanfattas i följande ekvationer { ki low qi + k i3 3 qi τ si =, qi ψ i sign( qi )(m i0 + k high, (3.55a) i ( qi ψ i )), qi > ψ i k i3 = (k high i k low i )/(3ψ 2 i ), (3.55b) m i0 = k low i ψ i + k i3 ψ 3 i, (3.55c) där k high i och k low i är fjäderkonstanter och ψ i är en konstant. Modellen är implementerad i Simulink och kan hämtas i sin helhet från [10].
26 Kinematiska och dynamiska modeller 600 400 200 Ψ i Moment [Nm] 0 200 Ψ i 400 600 2.5 2 1.5 1 0.5 0 0.5 1 1.5 2 2.5 qi Figur 3.9. Momentkurvan för en fjäder enligt (3.55a). När qi ψ i är kurvan olinjär och när qi > ψ i är kurvan linjär med den höga fjäderkonstanten.
Kapitel 4 Trimning av vekhetsparametrar på två-axlig simuleringsmodell När en axel rör sig påverkar den vissa av de andra axlarna och det går därför inte att trimma axlarna var för sig. Därför måste alla sex axlar trimmas samtidigt för en godtycklig rörelse, vilket blir ett tidskrävande jobb då antalet kombinationer av Υ växer exponentiellt med antalet axlar. Genom att fixera vissa axlar till givna positioner skapas en dynamisk frikoppling så att max tre axlar är kopplade. Axel i är dynamiskt frikopplad från axel j om den linjäriserade dynamiska ekvationen för axel i inte beror på axel j då position för några av axlarna är fixerade. Arbetet kommer i första hand fokusera på axel 2 och 3. Dessa kan frikopplas dynamsikt från de övriga fyra axlarna men inte från varandra. Resultatet från axel 2 och 3 kommer sedan att prövas på de övriga axlarna. För att förstå hur systemet beter sig och för att undersöka inverkan av olika målfunktioner har den två-axliga modellen i kapitel 3.4 simulerats. Simuleringsmodellen beskrevs i detalj i kapitel 2.2. I kapitel 7 sammanfattas de övriga fyra axlarna samt hur AutoTune-applikationen kombinerar dessa för att trimma hela roboten. Kapitel 4.1 beskriver målfunktionen och kapitel 4.2 beskriver hur konfigurationen för robotens leder påverkar resultatet. Till sist presenteras resultatet i kapitel 4.3. 4.1 Målfunktion Robotanvändarens mål är att minimera svängningarna för verktyget. Därför är det naturligt att målfunktionen baseras på verktygets rörelse. För att bestämma verktygets rörelse används de kinematiska ekvationerna men på grund av flexibiliteter och modellosäkerheter är detta en osäker skattning. Försök med att skatta verktygets position med hjälp av en accelerometer görs i dagsläget, se [6]. När en tillräckligt bra skattning för verktygspositionen finns tillgänlig skulle den kunna 27
28 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 0 1 2 3 4 Moment [Nm] 5 6 7 8 9 10 11 0 0.2 0.4 0.6 0.8 1 Tid [s] Figur 4.1. Momentsignal för en axel vid simulering. Efter tiden T, som markeras med det lodräta strecket, ska momentet vara konstant enligt momentframkopplingen, men på grund av modellfel är så inte fallet. Genom att trimma Υ anpassas modellen till den aktuella roboten och svängningarna minskar. användas. Till dess måste målfunktionen baseras på något annat som kan mätas. När verktyget svänger, svänger även armarna och armarna är kopplade till motorerna vilket får dem att också svänga. Figur 4.1 visar hur motormomentet kan svänga för en motor. Momentframkopplingen säger att momentet ska vara konstant till höger om det lodräta strecket vid tidpunkten T. Om modellen hade varit exakt och om det inte hade funnits några störningar hade momentframkopplingens värde givit den sökta rörelsen. På grund av modellosäkerheter och störningar korrigerar återkopplingen momentet så att rätt rörelse fås. Men det innebär att momentet skiljer sig från framkopplingen. I figuren ses en oönskad svängning efter tiden T. Om modellen trimmas för att passa verkligheten bättre kommer återkopplingen bara korrigera för störningar och det innebär att svängningen minskar. Det innebär att en ändring av Υ påverkar svängningen och man kan då hitta ett Υ som ger minimal svängning. Det finns olika varianter på målfunktioner att välja på. I det här arbetet har signalen från tiden T undersökts. Bland annat har normen av signalen beräknats men även frekvensen på svängningen har undersökts. Det visade sig att frekvensen inte påverkades av trimparametern utan var lika för alla kombinationer. Det som ändras är istället fasen och amplituden, se figur 4.2. För en axel kommer fasen ändras då det optimala värdet på Υ passeras. För två eller fler axlar är det dock svårt att dra någon slutsats om hur fasen påverkas av Υ. Nu återstår det bara att beräkna målfunktionen som någon norm av signalen. De normer som har testats är L1-, L2- och oändlighetsnormen. Det blev marginell skillnad mellan dessa så valet blev L2-normen. Om det är fler än en axel, blir målfunktionsvärdet medelvärdet
4.1 Målfunktion 29 0 1 2 3 Moment [Nm] 4 5 6 7 8 9 10 11 0 0.2 0.4 0.6 0.8 1 Tid [s] Figur 4.2. Momentsignal för två olika trimningar för en axel vid simulering, där frekvensen är samma för båda signalerna. Skillnaden mellan signalerna är amplituden och fasen. för samtliga axlar. Målfunktionen Λ(Υ) kan då skrivas som Λ(Υ) = 1 M M N F (τ i,k (Υ)) 2, (4.1) i=1 där τ i är det uppmätta momentet för axel i, M är antal axlar, N är antal sampel och F ( ) är ett lågpassfilter för att ta bort mätbrus. Normen beräknas på intervallet mellan tidpunkten T och signalens slut. Dessutom har alla linjära trender från den delen av signalen tagits bort för att undvika att få med statiska effekter och långsam drift. Målfunktionen beror nu bara på hur mycket momentet svänger när det i själva verket skulle vara konstant. För att verifiera målfunktionen i (4.1) beräknas även en målfunktion Ω(Υ) för verktyget enligt k=1 Ω(Υ) = 1 N x k (Υ) x k,ref (Υ) 2 2 + 1 N z k (Υ) z k,ref (Υ) 2 2, (4.2) k=1 där x k och z k är sampel k för den uppmätta verktygspositionen i x- respektive z-led. x k,ref och z k,ref är motsvarande för referensbanan. Genom att simulera systemet för alla olika inställningar på Υ 2 och Υ 3, där dessa kan anta värden mellan 80 % och 120 % med steg om 5 %, blir målfunktionens utseende enligt figur 4.3. I figur 4.4 finns nivåkurvorna för dessa, där fyrkanten markerar minimum. Utseendet på målfunktionen visar sig bero på vilken konfiguration robotens leder har samt längden och riktningen på rörelsen. Även målfunktionen k=1
30 Trimning av vekhetsparametrar på två-axlig simuleringsmodell Målfunktion för momentet Målfunktion för momentet 90 80 500 70 400 60 50 300 40 200 30 20 100 10 0 0.8 0.9 1 1.1 1.2 0.8 0.9 1 ϒ 2 1.1 1.2 0 1.2 ϒ 2 1 0.8 0.8 0.9 1 1.1 1.2 ϒ 3 ϒ 3 (a) (b) Målfunktion för momentet 100 80 60 40 20 0 0.8 0.9 1 1.1 1.2 1.2 1.1 1 0.9 0.8 ϒ 2 ϒ 3 (c) Figur 4.3. Målfunktionens utseende efter simulering. Målfunktionen för tcp och målfunktionen för momentet får ett av följande typutseenden beroende på startläge, rörelseriktning och rörelselängd. för verktygspositionen beror på dessa faktorer och får ett liknande utseende. I figurerna syns det att minimum ligger i en lång ravin. I och med detta kan en störning på systemet få optimum att vandra längs med ravinen. Det innebär att två olika trimningar i samma startläge med samma rörelselängd och rörelseriktning kan ge olika resultat. Skillnaden mellan figur 4.3(a) och de två övriga är att Υ 2 respektive Υ 3 påverkar den andra parameterns optimum. 4.2 Experimentdesign För att förstå mer hur målfunktionen påverkas av vilken konfiguration robotens leder har samt längden och riktningen på rörelsen, har tre startlägen undersökts noggrannare enligt figur 4.5. För varje startläge har rörelsens längd varit 0.03 rad
4.2 Experimentdesign 31 Nivåkurvor för målfunktionen Nivåkurvor för målfunktionen 1.15 1.15 1.1 1.1 1.05 1.05 ϒ 2 1 ϒ 2 1 0.95 0.95 0.9 0.9 0.85 0.85 0.8 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 0.8 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 ϒ 3 ϒ 3 (a) (b) Nivåkurvor för målfunktionen 1.15 1.1 1.05 ϒ 2 1 0.95 0.9 0.85 0.8 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 ϒ 3 (c) Figur 4.4. Nivåkurvor för målfunktionerna i figur 4.3. Fyrkanten markerar minimum.
32 Trimning av vekhetsparametrar på två-axlig simuleringsmodell (a) Hopfälld. (b) Nolläge. (c) Uppsträckt. Figur 4.5. Tre olika startlägen som har undersökts. Hopfällt läge (a), nolläge (b) och uppsträckt läge (c). Startläge 1 Startläge 2 Startläge 3 (a) Lång rörelse Ω(Υ) Λ(Υ) ++ (b) (a) + (b) (a) ++ (a) (a) + (a) (c) ++ (a) (a) + (a) (a) Startläge 1 Startläge 2 Startläge 3 (b) Kort rörelse Ω(Υ) Λ(Υ) ++ (b) (b) + (b) (b) ++ (a) (a) + (a) (c) ++ (a) (a) + (a) (a) Tabell 4.1. Sammanfattning av utseendet från figur 4.3 för målfunktionen för momentet respektive tcp för en lång rörelse, (a), respektive kort rörelse, (b). eller 0.1 rad på båda axlarna. Rörelseriktningen har varit ++ eller +. Det innebär att båda vinklarna har ökat i storlek eller att en har ökat och en har minskat. I tabell 4.1 visas vilket typutseende från figur 4.3 målfunktionerna (4.1) och (4.2) får för varje startläge och riktning vid en lång rörelse, 0.1 rad, respektive en kort rörelse, 0.03 rad. Som man ser, skiljer sig inte målfunktionerna för tcp åt när längden på rörelsen ändras. Men för momentet ändras däremot målfunktionen i startläge 1 när längden ändras. Målfunktionen enligt figur 4.3(c) uppkommer endast för momentet i startläge 2 och + -riktningen. 4.2.1 Frekvensanalys Systemet förstärker olika insignaler olika mycket. Används den insignal som systemet förstärker mest, kommer en ändring av Υ synas tydligt i utsignalen. Därför har en frekvensanalys för systemet gjorts för att undersöka hur den bästa insignalen ser ut. Till detta har ett linjärt och kontinuerligt system tagits fram där insignalen är en referens för armvinklarna och utsignalen är armvinklarna själva. Systemet skiljer sig därför lite från systemet som används under simuleringen. Figur 4.6 visar strukturen för systemet.