Golfspelande industrirobot 2004-02-25 Designspecifikation Designansvarig: Mikaela Waller Version 1.0 Status Granskad Martin 2004-02-24 Godkänd Martin 2004-02-24 Dokumentansvarig: Elin Eklund i
Golfspelande industrirobot 2004-02-25 PROJEKTIDENTITET Linköpings Tekniska Högskola, Institution för systemteknik Gruppdeltagare Namn Ansvar Telefon E-post Staffan Ohlsson Projektledare 070-3619736 Staol381@student.liu.se Elin Eklund Dokumentansvarig 070-498 10 98 Eliek707@student.liu.se Hanna Sjöstedt Presentationsansvarig 070-1748957 Hansj625@student.liu.se Lars Stenlind Kundansvarig 070-20 696 37 Larst471@student.liu.se Mikaela Waller Designansvarig 070-4887193 Mikwa512@student.liu.se Alexander Nordström Testansvarig 0733-804878 Aleno150@student.liu.se Magnus Nordenborg Kvalitetsansvarig 0736-548574 Magno271@student.liu.se Hemsida: www.cyd.liu.se/~hansj625 Kund: Mikael Norrlöf, mino@isy.liu.se, Linköpings Tekniska Högskola, ISY Beställare: Martin Enqvist, 013-28 23 06, maren@isy.liu.se Kursansvarig: Anders Hansson, 013-28 16 81, hansson@isy.liu.se Handledare: Erik Wernholt, 013-28 13 33, erikw@isy.liu.se Dokumentansvarig: Elin Eklund i
Innehåll 1 INLEDNING... 4 1.1 PARTER... 4 1.2 MÅL... 4 1.3 ANVÄNDNING... 4 2 ÖVERSIKT AV SYSTEMET... 4 2.1 GROV BESKRIVNING AV PRODUKTEN... 5 2.2 PRODUKTKOMPONENTER... 5 2.3 BANSPECIFIKATION... 5 3 GRAFISKT ANVÄNDARGRÄNSSNITT... 5 3.1 INLEDANDE BESKRIVNING AV DET GRAFISKA ANVÄNDARGRÄNSSNITTET... 6 3.2 GRÄNSSNITT... 6 3.2.1 Gränssnitt mot modellen... 6 3.2.2 Gränssnitt mot robotens styrsystem... 7 4 MATEMATISK MODELL... 8 4.1 GRÄNSSNITT... 8 5 STYRSYSTEM TILL ROBOT... 9 5.1 INLEDANDE BESKRIVNING AV ROBOTEN... 9 5.2 INLEDANDE BESKRIVNING AV STYRPROGRAM TILL ROBOTEN... 10 5.3 GRÄNSSNITT MELLAN STYRSYSTEMET OCH ANVÄNDARGRÄNSSNITTET/HUVUDPROGRAMMET... 10 5.4 GRÄNSSNITT MELLAN MATLAB OCH RAPID... 11 REFERENSER... 12 Dokumentansvarig: Elin Eklund Sida ii
Golfspelande industrirobot 2004-02-25 Versio n Dokumenthistorik Datum Utförda förändringar Utförda av Granskad 0.1 2004-02-12 Första utkastet MW Gruppen 0.2 2004-02-16 Andra utkastet MW Gruppen 0.3 2004-02-18 Små justeringar MW Gruppen, Martin 0.4 2004-02-23 Tillägg av avsnitt 5.4 LS Gruppen, Martin 1.0 2004-02-24 Små justeringar MW Dokumentansvarig: Elin Eklund iii
Golfspelande industrirobot 2004-02-25 1 Inledning Vårt projekt går ut på att en robot av typ ABB IRB1400 (kallad Marvin) skall kunna spela minigolf på en speciell bana. Den skall ha två lägen att antingen kunna spela manuellt eller använda sig av en uppvisningmod. 1.1 Parter Kund är Mikael Norrlöf, ISY. Projektet utföres av en projektgrupp bestående av sju studenter i årskurs 4 på Y-programmet på kursen TSRT71 Reglerteknisk projektkurs. 1.2 Mål Syftet med projektet är att ta fram ett interaktivt demonstrationssystem till industriroboten ABB IRB1400 som finns i Laboteket på ISY. Roboten skall programmeras att spela minigolf på en komplicerad bana. 1.3 Användning Den minigolfspelande roboten skall visas upp vid olika informations- och reklamevenemang, och utgöra ett exempel på en tillämpning av modellering och reglerteknik. 2 Översikt av systemet Systemet är uppbyggt av tre moduler: användargränssnitt, modell och styrsystem till robot. Användargränssnittet är ett grafiskt Matlabprogram där användaren med hjälp av knappar kan styra roboten att spela och ge olika order (slå boll, hitta boll, manuell/uppvisningmod). Modellen av beräknad bollbana ska implementeras i Matlab. Programmet anropas från användargränssnittet och returnerar en bollbana och/eller en hastighet. Robotens styrprogram programmeras i Rapid 3.0. Roboten kan med hjälp av information från användargränssnittet slå bollen samt hitta bollen på banan och återföra den till utslagsplatsen. Roboten har även en funktion för positionsbestämning av banans läge. Figur 1. Översiktlig bild över hela systemet 4 Dokumentansvarig: Elin Eklund
2.1 Grov beskrivning av produkten Det finns två olika moder som roboten kan styras inom: en manuell mod där användaren anger både anger vinkel och hastighet samt en uppvisningsmod där användaren anger en vinkel och modellen räknar ut en hastighet för att bollen skall träffa hål. 2.2 Produktkomponenter Interfacet och modellen är implementerad i Matlab. Styrsystemet till roboten Marvin är programmerat i Rapid 3.0. Marvin är av modell ABB IRB1400. 2.3 Banspecifikation Banan är en minigolfbana som är byggd av ISY vid Linköpings Universitet. Banan är inte svängd och har en backe upp mot hålet samt sluttar åt ena kanten. Figur 2. Skiss över bana 3 Grafiskt användargränssnitt Användaren skickar kommandon till systemet och tar emot information via användargränssnittet. Användargränssnittet fungerar också som huvudprogram för hela systemet. Figur 3. Användargränssnitt och huvudprogram Dokumentansvarig: Elin Eklund Sida 5
3.1 Inledande beskrivning av det grafiska användargränssnittet Ett grafiskt användargränssnitt programmeras i Matlab. Det är viktigt att det är ett lättanvändligt gränssnitt, så spelare med olika bakgrund klarar av att styra roboten. För att uppnå detta har vi tänkt att användare ska använda datormusen för att ge roboten kommandon. Användaren ska kunna se banan på datorskärmen för att enkelt kunna välja hur hon/han vill slå. Fyra knappar kommer att finnas för att kunna minska/öka vinkeln/hastigheten för utslaget. Om en spelare ska kunna tävla mot roboten, så krävs en poängtavla vilken kommer att synas i ena hörnet av skärmen. Poängtavla - + Hastighet Bana - Vinkel + Figur 4. Datorskärmen I samband med användargränssnittet ligger också huvudprogrammet som styr över vilka vinklar, hastigheter och utslagsplatser användaren kan välja och anropar de andra funktionerna. Det håller även reda på i vilken mod man befinner sig, poängräkningen i tävlingsmod och sparar det förra slaget. 3.2 Gränssnitt Användargränssnittet tar emot kommandon från användaren och styr det resterande systemet utifrån dessa. 3.2.1 Gränssnitt mot modellen Huvudprogrammet kan anropa modellen med en vinkel (Angle) som inargument och får då en hastighet (Speed) och bollbana (Path) tillbaks. Modellen ska även kunna anropas med både vinkel och hastighet som inargument och då returnera en bollbana. Funktionsanropen ser ut som följer: Path = calculate(angle,speed) Beräknar en bollbana utifrån vinkel och hastighet. [Speed,Path] = calculate(angle) Beräknar en hastighet och bollbana utifrån vinkel. Bollbanan (Path) är i form av en matris med punkter som bollen kommer att passera (i enlighet med avsnitt 4.1). Dokumentansvarig: Elin Eklund Sida 6
Klubbans utslagshastighet (Speed) anges i m/s. Vinkeln (Angle) anges i grader och definieras till att vara noll framåt (sett från banans utslagsplats), 90 åt vänster och -90 åt höger enligt figur 5. Figur 5. Definition av Angle 3.2.2 Gränssnitt mot robotens styrsystem Huvudprogrammet anropar robotens styrsystem med en vinkel (Angle), hastighet (Speed) och information om personlighet (Personality) då ett slag ska utföras. Från interfacet returneras då en variabel (Score) som talar om ifall slaget gick i hål. Huvudprogrammet anropar också styrsystemet då det är dags att återföra bollen till utslagsplatsen. I detta fall med argument som anger platsen där bollen ska läggas (Startposition) och information om ifall Marvin efter att ha lagt ut bollen ska styras bort så att ett slag kan utföras av någon annan än roboten (Competitor). När detta är utfört returneras en variabel (Found) som talar om ifall bollen hittades och är utplacerad. Funktionsanropen ser ut som följer: Score = hit_ball(angle,speed,personality) Slår bollen Found = return_ball(startposition,competitor) Lägger bollen på utslagsplatsen Angle och Speed i enlighet med avsnitt 3.2.1. Startposition, Competitor, Score och Found i enlighet med avsnitt 5.3. Variabeln Personality ges av: Personality = 0, personligheten är avstängd Personality = 1, Marvin ska ha en personlighet Om det finns flera personligheter att välja mellan så ges Personality av: Personality = 0, personligheten är avstängd Personality = 1, Marvin ska ha personlighet 1 Personality = 2, Marvin ska ha personlighet 2 osv. Dokumentansvarig: Elin Eklund Sida 7
4 Matematisk modell Den matematiska modelleringen programmeras i Matlab. Den ska antingen vara en fysikalisk modell av banan eller bestå av tabeller över hastigheter och vinklar som gör att bollen träffar hålet. Figur 6. Modell 4.1 Gränssnitt Modellen anropas av huvudprogrammet antingen med en vinkel (Angle) som inargument och returnerar då en hastighet (Speed) samt en bollbana (Path), eller med både vinkel och hastighet och returnerar då en bollbana. Funktionsanropen ser ut som följer: Path = calculate(angle,speed) Beräknar en bollbana utifrån vinkel och hastighet. [Speed,Path] = calculate(angle) Beräknar en hastighet och bollbana utifrån vinkel. Vinkeln (Angle) anges i enlighet med avsnitt 3.2.1. Path är en 300x2 matris med x-värdet för punkterna i första kolumnen och y-värdet i den andra kolumnen. Koordinatssystemets origo ligger i banans nedre högra hörn (sett från banans utslagsplats), x-axeln i banans längdriktning och y-axeln längs banans bredd enligt figur 7. Figur 7. Definition av koordinatsystemet som matrisen Path anges i Dokumentansvarig: Elin Eklund Sida 8
5 Styrsystem till robot Roboten är en industrirobot av modell ABB IRB1400. Figur 8. Översikt över kommunikationen till roboten 5.1 Inledande beskrivning av roboten Roboten har 6-axlar och därmed 6 DOF (degrees-of-freedom). Det är en ABB-robot som styrs av styrsystemet S4C och programmeras med hjälp av ABB:s programspråk Rapid 3.0. Verktygen till roboten är utbytbara men kommer under detta projekt bara att bestå av ett verktyg bestyckat med en minigolfklubba och en sugkopp vända 180 grader mot varandra. Figur 9. Bild av ABB-robot modell IRB1400. Dokumentansvarig: Elin Eklund Sida 9
5.2 Inledande beskrivning av styrprogram till roboten Styrsystemet består av ett interface mellan Matlab och Rapid samt robotens styrprogram. Interfacet tar emot variabler från huvudprogrammet i Matlab och skriver dem i en textfil som robotens styrprogram sedan använder sig av. Robotens styrprogram skriver sedan in nya variabler i en textfil som interfacet läser och skickar vidare till huvudprogrammet. Kommunikationen kommer att synkroniseras med hjälp av handskakning. Figur 10. Styrsystemet 5.3 Gränssnitt mellan styrsystemet och användargränssnittet/huvudprogrammet Robotens styrsystem anropas med vinkel (Angle), hastighet (Speed) och information om personligheten (Personality) som inargument då bollen ska slås och returnerar en variabel som talar om hur det gick (Score). Då bollen ska föras till utslagsplatsen anropas styrsystemet med två inargument: platsen där bollen ska läggas (Startposition) och information om ifall Marvin efter att ha lagt ut bollen ska styras bort så att ett slag kan utföras av någon annan än roboten (Competitor). Styrsystemet returnerar därefter en variabel som talar om ifall bollen hittades och har återförts (Found). Koordinatsystemen i robotens styrsystem ska dessutom gå att kalibrera om ifall man flyttar på banan. Funktionsanropen ser ut som följer: Score = hit_ball(angle,speed,personality) Slår bollen Found = return_ball(startposition,competitor) Lägger bollen på utslagsplatsen Angle och Speed anges i enlighet med avsnitt 3.2.1 och Personality i enlighet med avsnitt 3.2.2. Eftersom utslagsplatsens läge endast kan ändras i y-led (i enlighet med figur 7) anger Startposition y-koordinaten där bollen ska placeras och slås. Competitor = 0, ingen undanstyrning ska göras Competitor = 1, efter att bollen har placerats ut ska Marvin styras undan Dokumentansvarig: Elin Eklund Sida 10
Score = false, bollen gick inte i hål Score = true, bollen gick i hål Found = false, bollen hittades inte/har inte återförts till utslagsplatsen Found = true, bollen hittades och har återförts till utslagsplatsen 5.4 Gränssnitt mellan Matlab och Rapid Kommunikationen mellan Matlab och Rapid kommer att ske via två stycken textfiler. Dessa kommer att ha namnen tomarvin och frmarvin. Matlab kommer att skriva i tomarvin, där även Rapid kommer att ändra på en flagga när den har läst filen. Rapid kommer att skriva i frmarvin där även Matlab kommer att ändra på en flagga när den har läst filen. De ingående variablerna är som följer: tomarvin: mread 0=Ny data 1=Marvin har läst action 0=Hämta boll 1=Slå boll speed [mm/s] angle [grader] (0grader=rakt fram) personality 0=Opersonlig 1,2...=Olika personligheter xstartposition ystartposition Startpositionens x, y och z-koordinater zstartposition competitor 0=Marvin ska slå 1=Motspelare ska slå frmarvin: mwrite 0=Gammalt resultat 1=Nytt resultat score 0=Miss 1=Träff found 0=Ej hittat boll 1=Hittat boll Flaggor som kommer att användas för handskakning är således mread och mwrite. Dokumentansvarig: Elin Eklund Sida 11
Referenser - (2002), Lips nivå 1. Tomas Svensson och Christian Krysander. Bokakademin, version 1.0 - (2004), Projektdirektiv. Martin Enqvist Dokumentansvarig: Elin Eklund Sida 12