• No results found

Automatisk trimning av en flexibel manipulator

N/A
N/A
Protected

Academic year: 2021

Share "Automatisk trimning av en flexibel manipulator"

Copied!
85
0
0

Loading.... (view fulltext now)

Full text

(1)

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 tekniska högskola

Linköpings universitet Linköpings universitet

(2)
(3)

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: Stig Moberg abb ab – Robotics Mikael Norrlöf

abb ab – Robotics Johanna Wallén

isy, Linköpings universitet

Examinator: Erik Wernholt

isy, Linköpings universitet

(4)
(5)

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  

URL för elektronisk version

http://www.control.isy.liu.se http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-16322 ISBNISRN LITH-ISY-EX--09/4189--SE

Serietitel och serienummer

Title of series, numbering

ISSN

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

(6)
(7)

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 minime-ringsproblem. 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 moment-signalen 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.

(8)
(9)

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 LATEX. 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.

(10)
(11)

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

(12)

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

(13)

Kapitel 1

Inledning

1.1

Bakgrund

Dagens industrirobotar används i många olika tillämpningar med varierande pre-standakrav. 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 be-hö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 parametero-sä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äga-gå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 mi-nimera 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 optime-ringsmetod 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

(14)

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ät-ningssystem 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

Processbase-rad AutoTune. I första hand kommer arbetet att fokusera på Generell AutoTune.

Generell AutoTune Här behandlas individskillnader och skillnad i robotens

om-givning. Ä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 an-vändes vid parameterskattningen. Det blir då individskillnader som måste tas om hand för att få en bra reglering. Omgivningen påverkar också regler-prestandan. 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än-sad 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

(15)

1.5 Rapportens disposition 3

därför inte tillgänglig vilket skulle kunna vara ett naturligt val att basera målfunk-tionen 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.

Vil-ken 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.

(16)
(17)

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änni-skor 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 model-ler 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

punk-terna som anges i användarprogrammet. När den geometriska banan är be-stä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 ex-empel 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 arm-vinklarna och de kartesiska koordinaterna för verktygets arbetspunkt, även

(18)

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ändarpro-grammet. 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 ban-generatorn och regulatorn kinematiska och dynamiska modeller.

(19)

2.1 Koordinatsystem 7

kallad tcp (Tool Center Point). Mer om detta beskrivs i kapitel 3.2. De dy-namiska modellerna används för att bestämma ett önskat moment till moto-rerna 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 mentet samt referenser för motorvinklarna med hjälp av de dynamiska mo-dellerna. Återkopplingen korrigerar för modellfel och störningar genom att återkoppla motorvinklarna. Ut från regulatorn kommer momentet till moto-rerna.

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 stif-tet på en svetspistol. För att förenkla programmeringen av roboten används ett antal koordinatsystem som beskriver hur robotens delar och omgivningen är re-laterade till varandra under rörelsen. En beskrivning av de vanligaste koordinat-systemen som abb använder finns nedan, en mer utförlig förklaring finns i [2]. Alla

(20)

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 baskoordinat-systemet.

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 rotationsz-axeln på axel 6.

Verktygskoordinatsystem Beskriver position och orientering för verktyget

re-lativt 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

arbetsob-jekten 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 verktygskoor-dinatsystemet och målkoorverktygskoor-dinatsystemet beskrivas relativt det globala systemet. En sammanfattning av transformeringen mellan olika koordinatsystem ges i kapi-tel 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 framkopp-lingen. Strukturen för modellen visas i figur 2.5. Bangeneratorn skapar en bana i kartesiska koordinater för tcp mellan två punkter. Via inverskinematiken gene-reras referensvinklarna qref

(21)

2.2 Simuleringsmodell 9

Figur 2.4. Koordinatsystemen och deras relation till varandra.

bestämma framkopplingsmomentet uf f w

m och referenssignaler qmref till motorerna.

Till sist beräknas motormomenten umtill 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.

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 re-ferenser för motorerna. Regulatorn korrigerar för modellfel och störningar.

(22)

10 Systemöversikt

2.3

Trimningsparametrar

Det finns ett antal trimningsparametrar, allt från regulatorparametrar till friktions-och vekhetsparametrar, där en justering av dessa parametrar ändrar robotens upp-fö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 aktu-ella 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ätt-ningen. Υ påverkar den lägsta egenfrekvensen hos roboten och finns i de dyna-miska 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 parameterin-stä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 mo-dulen 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, synkro-niseras 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.

(23)

2.4 Synkronisering mellan PC och robot 11

(24)
(25)

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. Transforme-ringen 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 stem i, se figur 3.1. Translationen beskrivs av en vektor från origo i koordinatsy-stem i till origo i koordinatsykoordinatsy-stem j. Låt vektorn betecknas av

rj/i. (3.1)

För att förtydliga att rj/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

h

Qj/ii

i. (3.3)

En godtycklig rotation i tre dimensioner kan tolkas som en rotation av koordi-natsystem j runt x-axeln i koordikoordi-natsystem i med vinkeln γ följt av en rotation runt y-axeln med vinkeln β och till sist en rotation runt z-axeln med vinkeln α.

(26)

14 Kinematiska och dynamiska modeller

Figur 3.1. Koordinatsystem j är translaterat och roterat i förhållande till

koordinat-system i. Rotationsmatrisen blir då h Qj/i i i=   c(α)c(β) c(α)s(β)s(γ) − s(α)c(γ) c(α)s(β)c(γ) + s(α)s(γ) s(α)c(β) s(α)s(β)s(γ) + c(α)c(γ) s(α)s(β)c(γ) − c(α)s(γ) −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ärhQj/ii i

och hQk/ji j

är kän-da, beräknas transformationsmatrisen mellan koordinatsystem i och koordinatsy-stem k enligt h Qk/ii i= h Qj/ii i h Qk/ji j. (3.5)

En godtycklig vektor, u, definierad i koordinatsystem j transformeras till koordi-natsystem i med hjälp av rotationsmatrisenhQj/i

i

i enligt

[u]i=hQj/ii i

[u]j. (3.6)

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

[rP]i=rj/i



i+ [sP]i. (3.7)

Här är rj/i



i känd och [sP]i okänd. Men eftersom P är fix i koordinatsystem j

kan [sP]j bestämmas. Med hjälp av (3.6) kan [sP]i skrivas som

[sP]i=

h

Qj/ii i

[sP]j. (3.8)

Ekvationerna (3.7) och (3.8) ger då att [rP]i kan beskrivas enligt

[rP]i=rj/i  i+ h Qj/i i i[sP]j. (3.9)

Om homogena koordinater införs enligt rh P  i= [rP]i 1  , (3.10)

(27)

3.1 Translation och rotation av koordinatsystem 15

Figur 3.2. Koordinatsystem j är translaterat och roterat i förhållande till

koordinatsy-stem i. P :s läge är känt i koordinatsykoordinatsy-stem j och okänt i koordinatsykoordinatsy-stem i.

kan (3.9) skrivas som matrismultiplikationen

rh P  i= h Qj/i i i rj/i  i 01×3 1 ! sh P  j=Tj/i  is h P  j, (3.11)

där 01×3 = 0 0 0. [rP]i blir då de tre översta elementen i rhP



i.

Ekva-tion (3.11) kan generaliseras till ett godtyckligt antal stelkroppar enligt figur 3.3. 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

rh P  0= n Y i=1 Ti/i−1  i−1 ! | {z } [Tn/0] 0 sh P  n, (3.12) där Ti/i−1  i−1= h Qi/i−1 i i−1 ri/i−1  i−1 01x3 1 ! . (3.13)

Figur 3.3. Translation och rotation av n stelkroppar där translationen och rotationen

(28)

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. qa2 är en vinkel som

anger hur mycket koordinatsystem 2 är roterat i förhållande till koordinatsystem 0 runt ˆy0. qa3 är motsvarande för koordinatsystem 3 relativt koordinatsystem 2.

Längden på arm i är li, 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 [rP]0används (3.12) och (3.13). Från figur 3.4 fås att

r2/0  0=   0 0 0  , r3/2  2=   l2 0 0  , [sP]3=   l3 0 0  . Med α = 0, γ = 0 och β = −(π/2 − qa2) i (3.4) blir

h Q2/0i 0 =   sin (qa2) 0 − cos (qa2) 0 1 0 cos (qa2) 0 sin (qa2)  , (3.14)

och med α = 0, γ = 0 och β = −(π/2 + qa3) blir

h Q3/2i 2=   − sin (qa3) 0 cos (qa3) 0 1 0 − cos (qa3) 0 − sin (qa3)  . (3.15)

Ovanstånde matriser och vektorer insatta i (3.12) och (3.13) ger att rh P  0= h Q2/0i 0 r2/0  0 0 1 ! h Q3/2i 2 r3/2  2 0 1 ! sh P  3 =     l2sin (qa2) + l3cos (qa2+ qa3) 0 l2cos (qa2) − l3sin (qa2+ qa3) 1     . (3.16)

(29)

3.1 Translation och rotation av koordinatsystem 17

[rP]0 är nu de tre översta elementen i r h P



0 enligt definitionen för homogena

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

[ ˙rP]0 n]0  = J1 · · · Jn     ˙ q1 .. . ˙ qn   , (3.17)

där Ji kallas för Jacobianen. Vid härledningen av (3.17) antas att

koordinatsy-stem i är fixt i kropp i − 1.

För seriella robotar som normalt sett endast består av roterande leder blir Jacobianen Ji= [ˆzi]0× [ρi]0 [ˆzi]0  , (3.18)

där ρi är en vektor från Oitill P enligt

ρi= ri+1/i+ . . . + rn+1/n+ sP. (3.19)

Figur 3.5. Translation och rotation av n kroppar. Koordinatsystem i är fixt i kropp i − 1

(30)

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 h Qj/ii i =   0 c(α)s(γ) − s(α)c(γ) c(α)c(γ) + s(α)s(γ) 0 s(α)s(γ) + c(α)c(γ) s(α)c(γ) − c(α)s(γ) −1 0 0   =   0 s(γ − α) c(γ − α) 0 c(γ − α) −s(γ − α) −1 0 0  . (3.20)

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 definie-ras som

 = 0+ 1i + 2j + 3k, (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

i2= j2= k2= −1, (3.22)

ij = k, jk = i, ki = j, (3.23)

ji = −k, kj = −i, ik = −j. (3.24)

Konjugatet definieras som

∗= 0− 1i − 2j − 3k. (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 h Qj/ii i =   1 − 2(2 2+ 23) 2(12− 03) 2(02+ 13) 2(12+ 03) 1 − 2(21+ 23) 2(23− 01) 2(13− 02) 2(01+ 23) 1 − 2(21+ 22)  . (3.28)

(31)

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) c(γ/2)c(β/2)s(α/2) − s(γ/2)s(β/2)c(α/2)     , (3.29) och   γ β α  =    arctan2(01+23) 1−2(2 1+23) arcsin 2(02− 13) arctan2(03+12) 1−2(2 2+23)   . (3.30)

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 funk-tion som kan bestämmas relativt enkelt enligt kapitel 3.1. θkin är en

system-parameter 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-Hartenberg-notationen som beskrivs i [4].

3.2.2

Inverskinematik

Inverskinematik är motsatsen till framåtkinematik. Här har man verktygets posi-tion 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 ana-lystisk 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än-da.

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.

(32)

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

system-parameter 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 ˙X och ¨X kan beräknas

som ˙ X = ∂Γ(q) ∂q q = J (q) ˙˙ q, (3.33) och ¨ X = J (q)¨q + ˙J (q) ˙q. (3.34)

Ovan beräknas ˙X när q och ˙q är kända. För att å andra sidan beräkna ˙q då ˙X

och q är kända ger (3.33) att ˙

q = J−1(q) ˙X. (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.

(33)

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 =   lx ly lz  , ξ =   ξx ξy ξz  , J =   Jxx Jxy Jxz Jyx Jyy Jyz Jzx Jzy Jzz  .

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

X

F = maξ, (3.36)

och

X

= 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 qi. För en seriell

robot är qi 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 dt ∂L ∂ ˙qi ∂L ∂qi = τi, (3.38)

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)

qa =

qm

η . (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

(34)

22 Kinematiska och dynamiska modeller −100 −50 0 50 100 −1.5 −1 −0.5 0 0.5 1 1.5 Hastighet [rad/s] Friktionsmoment [Nm]

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 ar-marna. 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.

(35)

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(qa)  =l2sin (qa2) + l3cos (qa2+ qa3) l2cos (qa2) − l3sin (qa2+ qa3)  = Γ(qa). (3.43)

Till detta problemet finns det en analystisk lösning till inverskinematiken som ges av qa2 qa3  = π 2 − atan2(z, x) − atan2(± q 1 − c2 β, cβ) atan2(s2, ± p 1 − s2 2) ! , (3.44) där = l2 2+ x2+ z2− l32 2l2 x2+ z2 , (3.45) och s2= l22+ l23− x2− z2 2l2l3 . (3.46)

Funktionen atan2 är arctan över alla fyra kvadranter. Vilket tecken som ska an-vändas framför rotuttrycket beror på om elbow-up eller elbow-down lösningen ska användas, se figur 3.6. Derivering av Γ(qa) ger Jacobianen J (qa) enligt

J (qa) =

∂Γ ∂qa

= l2cos (qa2) − l3sin (qa2+ qa3) −l3sin (qa2+ qa3)

−l2sin (qa2) − l3cos (qa2+ qa3) −l3cos (qa2+ qa3)



(36)

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 =     qa2 qa3 qm2/η2 qm3/η3     , u =     0 0 um2η2 um3η3     , (3.48)

där qaiär armvinkeln för axel i, qmiär motorvinkeln för axel i och umiär

motormo-ment för axel i. Varje arm tilldelas en längd li, en massa mi, ett tröghetsmoment ji

och ett masscentrum ξi. Insignalen är momentet från två motorer som styr

var-je led var för sig. Dessa motorer beskrivs med sina tröghetsmoment jmi. 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 di och utväxlingsförhållandet ηi.

Tröghetsmatrisen M (q) ges av M (q) =     J22(q) J23(q) 0 0 J32(q) J33(q) 0 0 0 0 jm2η22 0 0 0 0 jm3η32     , (3.49a) J22(q) = j2+ m2ξ22+ j3+ m3(l22+ ξ23− 2l2ξ3sin (qa3)), (3.49b) J23(q) = J32(q) = j3+ m323− l2ξ3sin (qa3)), (3.49c) J33(q) = j3+ m3ξ32. (3.49d)

Koppling mellan armarna och motorerna försummas eftersom utväxlingsförhålla-dena är stora. Matriserna C(q, ˙q) och G(q) blir

C(q, ˙q) =     −m3l2ξ3cos (qa3)(2 ˙qa2q˙a3+ ˙q2a3) m3l2ξ3cos (qa3) ˙qa22 0 0     , (3.50) och G(q) =    

−g(m2ξ2sin (qa2) + m3(l2sin (qa2) + ξ3cos (qa2+ qa3)))

−m3ξ3g cos (qa2+ qa3) 0 0     . (3.51)

Dämparen modelleras linjärt och då ersätts D( ˙q) av D ˙q, där

D =     d2 0 −d2 0 0 d3 0 −d3 −d2 0 d2 0 0 −d3 0 d3     . (3.52)

(37)

3.4 Två-axlig robotmodell 25

Friktionen modelleras som

f ( ˙q) =     0 0 f2( ˙q) f3( ˙q)     , (3.53a) fi( ˙q) = ηi(fviq˙mi+ fci(µki+ (1 − µki) cosh−1(βiq˙mi)) tanh(αiq˙mi)), (3.53b)

där fvi, fci, µki, βi och αi är konstanta parametrar. Denna modell möjliggör en

friktion enligt figur 3.7.

Vektorn med fjädermomenten har formen

τs(q) =     τs2(∆q2) τs3(∆q3) τs2(−∆q2) τs3(−∆q3)     , (3.54a) ∆qi= qai− qmi/η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 τsi= ( klow iqi+ ki3∆3qi, |∆qi| ≤ ψi sign(∆qi)(mi0+ kihigh(|∆qi| − ψi)), |∆qi| > ψi , (3.55a) ki3= (k high i − k low i )/(3ψ 2 i), (3.55b) mi0= kilowψi+ ki3ψ3i, (3.55c)

där kihigh och kilow är fjäderkonstanter och ψi är en konstant.

(38)

26 Kinematiska och dynamiska modeller −2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5 −600 −400 −200 0 200 400 600 Moment [Nm] ∆qi −Ψi Ψi

Figur 3.9. Momentkurvan för en fjäder enligt (3.55a). När |∆qi| ≤ ψiär kurvan olinjär

(39)

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. Simulerings-modellen 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 konfi-gurationen 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 flexibi-liteter 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

(40)

28 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 0 0.2 0.4 0.6 0.8 1 −11 −10 −9 −8 −7 −6 −5 −4 −3 −2 −1 0 Tid [s] Moment [Nm]

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 mo-torerna 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 kon-stant 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 momentframkoppling-ens 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 åter-kopplingen 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

(41)

4.1 Målfunktion 29 0 0.2 0.4 0.6 0.8 1 −11 −10 −9 −8 −7 −6 −5 −4 −3 −2 −1 0 Tid [s] Moment [Nm]

Figur 4.2. Momentsignal för två olika trimningar för en axel vid simulering, där

fre-kvensen ä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 X i=1 v u u t N X k=1 |F (τi,k(Υ))|2, (4.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 Ω(Υ) = 1 2 v u u t N X k=1 |xk(Υ) − xk,ref(Υ)|2+ 1 2 v u u t N X k=1 |zk(Υ) − zk,ref(Υ)|2, (4.2)

där xk och zk är sampel k för den uppmätta verktygspositionen i x- respektive

z-led. xk,ref och zk,ref är motsvarande för referensbanan.

Genom att simulera systemet för alla olika inställningar på Υ2och Υ3, där

des-sa 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 mar-kerar 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

(42)

30 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 0.8 0.9 1 1.1 1.2 0.8 0.9 1 1.1 1.2 0 100 200 300 400 500 ϒ2 Målfunktion för momentet ϒ3 (a) 0.8 0.9 1 1.1 1.2 0.8 1 1.2 0 10 20 30 40 50 60 70 80 90 ϒ3 Målfunktion för momentet ϒ2 (b) 0.8 0.9 1 1.1 1.2 0.8 0.9 1 1.1 1.2 0 20 40 60 80 100 ϒ3 Målfunktion för momentet ϒ2 (c)

Figur 4.3. Målfunktionens utseende efter simulering. Målfunktionen för tcp och

mål-funktionen för momentet får ett av följande typutseenden beroende på startläge, rörelse-riktning och rörelselängd.

för verktygspositionen beror på dessa faktorer och får ett liknande utseende. I figu-rerna 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 Υ2respektive

Υ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

(43)

4.2 Experimentdesign 31 ϒ3 ϒ2 Nivåkurvor för målfunktionen 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 (a) ϒ3 ϒ2 Nivåkurvor för målfunktionen 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 (b) ϒ3 ϒ2 Nivåkurvor för målfunktionen 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 (c)

(44)

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).

(a) Lång rörelse

Ω(Υ) Λ(Υ) Startläge 1 ++ (b) (a)

+− (b) (a)

Startläge 2 ++ (a) (a)

+− (a) (c)

Startläge 3 ++ (a) (a)

+− (a) (a)

(b) Kort rörelse

Ω(Υ) Λ(Υ) Startläge 1 ++ (b) (b)

+− (b) (b)

Startläge 2 ++ (a) (a)

+− (a) (c)

Startläge 3 ++ (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 syste-met 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.

(45)

4.2 Experimentdesign 33

Figur 4.6. Kontinuerlig och linjär simuleringsmodell som används för en frekvensanalys

av systemet. 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ändes under simuleringen.

Med hjälp av en frekvensanalys kan man undersöka vilken insignalvektor som systemet förstärker mest. Eftersom systemet är ett mimo-system (Multiple In-put Multiple OutIn-put) måste de singulära värden för systemets frekvensfunktion betraktas enligt [5].

Singulärvärdesfaktorisering

De singulära värdena beräknas med en så kallad singulärvärdesfaktorisering, även kallad svd. En matris A, n × m, kan faktoriseras enligt

A = U ΣV∗, (4.3)

där Σ, n × m, innehåller A:s singulära värden på diagonalen och U , n × n, och

V , m × m, är unitära matriser, dvs U U∗ = I. Kolumn k i V beskriver vilken

riktning insignal k ska ha för att utsignalen ska förstärks med σk. Riktningen

på utsignal l ges av kolumn l i U . Om man beräknar svd för alla frekvenser i frekvensfunktionen och plottar det maximala respektive minimala singulärvärdet som funktion av frekvensen får man en motsvarighet till amplitud-bodediagrammet för ett siso-system (Single Input Single Output). Systemets förstärkning kommer ligga mellan det maximala och minimala singulärvärdet. Vad förstärkningen blir beror på riktningen på insignalvektorn.

Resultat

Figur 4.7 visar det maximala och minimala singulärvärdet. Det är bara intressant med det maximala värdet, eftersom det gäller att förstärka insignalen så bra som möjligt. I figuren finns det två toppar och båda påverkas av Υ. Den högra toppen ligger eller kan hamna utanför systemets bandbredd för några fall, därför är den vänstra toppen av större intresse att studera.

I figur 4.8 visas vilken storlek q2 respektive q3 ska ha vid olika frekvenser för

att systemet ska förstärka dem mest. Det lodräta strecket vid frekvensen f visar var toppen hamnar. Här syns det att q2 ska vara något större än q3. Men det

räcker inte med detta, utan fasskillnaden i figur 4.9 måste också vara uppfylld. I figuren syns det att fasskillnaden ska vara strax under 360. För att lyckas med det måste q2 respektive q3 vara en sinus med frekvensen f och med en amplitud

som ges av figur 4.8 och där fasskillnaden mellan dessa ges av figur 4.9. Störningar och modellfel gör att värdet på f inte är exakt och för att vara robust mot detta

(46)

34 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 10 0 10 1 −5 0 5 10 15 Mag [dB] Frekvens [Hz] Singulära värden

Figur 4.7. Maximala (heldragen) och minimala (streckad) singulärvärdet för systemet.

Båda topparna påverkas av Υ, men på grund av att den högra toppen kan hamna utanför systemets bandbredd, är det bara den vänstra toppen som undersöks.

100 101 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 Magnitud Frekvens [Hz]

Insignalvektor. Magnitud för maximala singulära värdet

q2 q3

Figur 4.8. Storleken på q2 och q3 för att systemet ska förstärka insignalvektorn mest.

Det lodräta strecket indikerar vilken frekvens toppen ligger vid. För att systemet ska förstärka insignalen mest ska q2≈ 0.75 rad och q3≈ 0.65 rad.

(47)

4.3 Sammanfattning 35 100 101 −300 −200 −100 0 100 200 300 Vinkel [deg] Frekvens [Hz]

Insignalvektor. Vinkelskillnad för maximala singulära värdet

Figur 4.9. Fasskillnaden mellan q2 och q3för att systemet ska förstärka insignalvektorn

mest. Det lodräta strecket indikerar vilken frekvens toppen ligger vid. För att systemet ska förstärka insignalen mest ska fasskillnaden mellan q2 och q3 vara strax över 300.

måste q2 respektive q3 dessutom vara en summa av sinussignaler med frekvenser

runt f .

I dagsläget kan man inte skapa den här typen av insignaler i ett standardsy-stem, därför kommer en punkt till punkt-rörelse används vid mätning på en robot. De enda fasskillnaderna som uppkommer då är 360 och 180, vilket innebär att rörelserna ska ha samma tecken eller olika tecken. Fasskillnaden som krävdes för att få maximal förstärkning är närmare 360 än 180 och därför bör insignalen för båda motorerna ha samma tecken för att förstärkas mest. Detta bekräftas i figur 4.10 där toppen syns tydligt i den vänstra figuren där insignalerna har samma tecken, men inte i den högra figuren där insignalerna har olika tecken.

4.3

Sammanfattning

Genom att simulera systemet, upptäcktes att målfunktionens utseende beror mest på robotens läge. Riktningen på rörelsen påverkade också något. För att förstå det bättre gjordes en frekvensanalys, som visade att insignalerna förstärktes mest om de var sinussignaler som var fasförskjutna relativt varandra. Det går att göra det-ta vid simuleringen, men eftersom arbetet är fokuserat på en praktisk tillämpning där det inte går att skapa den här typen av insignaler med dagens standardsystem lämnas detta åt sidan. Frekvensanalysen visade också att insignalerna förstärk-tes mer om de hade samma tecken än om de hade olika tecken. Detta märkförstärk-tes dock inte vid simuleringen då målfunktionen för +−-riktningen liknade den för ++-riktningen.

(48)

36 Trimning av vekhetsparametrar på två-axlig simuleringsmodell 100 101 −20 −15 −10 −5 0 5 10 15 20

Systemets förstärkning i riktning [0.7 0.7]

Frekvens [Hz]

(a) Förstärkningen för systemet med en tydlig topp strax under 10 Hz.

100 101 −20 −15 −10 −5 0 5 10

Systemets förstärkning i riktning [0.7 −0.7]

Frekvens [Hz]

(b) Förstärkningen för systemet utan en tydlig topp strax under 10 Hz.

Figur 4.10. Förstärkningen för systemet i riktningarna [0.7 0.7] och [0.7 -0.7].

att hitta någon kombination av Υ som gav ett bra resultat för alla lägen. Roboten bör därför trimmas för olika lägen och sedan använda trimningen för det läge som är närmast den aktuella robotpositionen.

(49)

Kapitel 5

Validering på robot

I verkligheten kan inte positionen för verktyget mätas utan hjälp av ett externt instrument. Målfunktionen måste därför beräknas med hjälp av momentet. Under utvecklingsarbetet kan dock positionen för tcp mätas med ett externt laserinstru-ment för att validera om det optimala värdet på Υ som beräknas från molaserinstru-mentet också blir optimalt för tcp. Målfunktionen Λ(Υ) för momentet beräknas på samma sätt som vid simuleringen enligt

Λ(Υ) = 1 M M X i=1 v u u t N X k=1 |F (τi,k(Υ))|2. (5.1)

Nu görs även två rörelser under en mätning, fram och tillbaka, och ett medelvärde mellan dessa rörelser används för varje axel. Eftersom det är två rörelser i samma mätsignal, måste signalen delas upp i två sekvenser. Sekvenserna börjar vid de lodräta strecken, se figur 5.1, och går 0.5 sekunder framåt.

En målfunktion som beror på tcp kan som sagt bara användas under utveck-lingsarbetet då ett lasersystem används. Figur 5.2 visar uppmätt position i x-, y-och z-led för tcp. Man kan då verifiera att (5.1) är ett bra val. När målfunktionen för tcp beräknades vid simuleringen används xref och zref samt det

uppmät-ta värdet för dessa. Det fanns då en exakt referens som gav det verkliga felet. I verkligheten är inte referensbanan känd och därför kan inte målfunktionen för tcp beräknas på samma sätt som vid simuleringen. Istället används översläng och insvängningstid som kriterium för minimeringen.

Överslängen dover beräknas som avståndet mellan det stationära värdet och

det maximala värdet, se figur 5.3. Insvängningstiden Tinsv beräknas från den tid

då verktyget är 3 mm från det stationära värdet tills verktyget ligger inom ett band på ±0.3 mm runt det stationära värdet, se figur 5.4. Detta görs i x-, y- och z-led var för sig och därefter beräknas den totala överslängen som

Θ(Υ) = q

dover,x(Υ)2+ dover,y(Υ)2+ dover,z(Υ)2, (5.2)

(50)

38 Validering på robot 0 0.5 1 1.5 2 2.5 3 3.5 4 −20 −10 0 10 F(τ(ϒ)) för axel 2 [Nm] 0 0.5 1 1.5 2 2.5 3 3.5 4 −20 −10 0 10 F(τ(ϒ)) för axel 3 [Nm] Tid [s]

Figur 5.1. F (τ (Υ)) för axel 2 och 3. De vertikala linjerna bestämmer vilken tid

mål-funktionen beräknas från och 0.5 sekunder framåt.

0 1 2 3 4 5 6 1.5 1.51 1.52 x−koordinat för TCP [m] 0 1 2 3 4 5 6 −0.059 −0.0588 −0.0586 y−koordinat för TCP [m] 0 1 2 3 4 5 6 1.1 1.15 1.2 z−koordinat för TCP [m] Tid, [s]

Figur 5.2. xyz-koordinater för tcp uppmätt med ett lasermätningssystem från Leica.

(51)

5.1 Simulering jämfört med experiment 39 4.6 4.8 5 5.2 5.4 5.6 5.8 40 40.5 41 41.5 42 42.5 43 43.5 44 44.5 45 45.5 Tid [s] [mm] dover

Figur 5.3. Överslängen beräknas som avståndet mellan det stationära värdet och det

maximala värdet.

och den totala insvängningstiden som Π(Υ) =

q

Tinsv,x(Υ)2+ Tinsv,y(Υ)2+ Tinsv,z(Υ)2. (5.3)

Målfunktionernas utseende för översläng och insvängningstid överensstämmer med utseendet för (4.2) från simuleringen vilket visar på att insvängningstiden och överslängen kan användas som kriterium för att verifiera (5.1).

5.1

Simulering jämfört med experiment

Mätningarna gjordes på en robot med en last på 40 kg och med rörelselängden 0.03 rad. Υ har antagit värden från 70 % till 130 % med steg om 5 %. Utseendet på målfunktionerna från figur 4.3 sammanfattas i tabell 5.1. Till att börja med syns det att utseendet för målfunktionen som beräknas från momentet skiljer sig åt från utseendet från simuleringen i startläge 1, se tabell 4.1(b). Detta gäller

Π(Υ) Θ(Υ) Λ(Υ) Startläge 1 ++ (a) (a) (a)

+− (a) (a) (a)

Startläge 2 ++ (a) (a) (a)

+− (c) (c) (c)

Startläge 3 ++ (a) (a) (a)

+− (a) (a) (a)

Tabell 5.1. Sammanfattning av vilket utseende från figur 4.3 målfunktionen för

References

Related documents

Hela den stora kvadraten = 4 gula plus den röda... Den lilla delen, 1-x, förhåller sig till den stora som den stora till

A: Definition av en kvadrat. Hur arean av en triangel räknas ut. C: Definition av en hundradel, och dess relation till 1 %. Den distributiva lagen. Fatimas resonemang är inget

Valda uppgifter i kursboken Matematik M2c av Sjunnesson med flera utgiven på Liber, (2011)... Hela den stora kvadraten = 4 gula plus

Valda uppgifter i kursboken Matematik M3c av Sjunnesson med flera utgiven på Liber, (2012). Dela upp pentagonen i fem likbenta trianglar.. Kalla den längsta sidans

Valda uppgifter ur kapitel 2, Algebra och ekvationer. Om man studerar vad summorna är blir man övertygad om att radens summa är dess nummer !. Detta leder till att 36 är vita.

Valda uppgifter i kursboken Matematik M2c av Sjunnesson med flera utgiven på Liber, (2011).. Ju närmare k kommer 1, desto större blir triangelns area.. Alla triangelns sidor är

[r]

INBYGGD SERENDIPITET, EGEN-MARK- NADSFÖRING OCH KONSUMENTAPPAR I detta delprojekt studerades hur möjligheter för oväntade upptäcker, så kallad serendipitet, byggs in i