Grundlæggende robotteknologi

Intro til forskellige programmeringsmetoder

Koordinatsystemer

Hvordan kan cobotten bevæge sig?

Ordet robot blev opfundet af den tjekkiske science fiction forfatter Karel Capek og kan løst oversættes til tvangsarbejde. Begrebet robot er i dag hyppigt brugt, og det dækker alt fra software-robotter, støvsugerrobotter til industrirobotter herunder kollaborative robotter.

Industrirobotter kan findes i mange typer og faconer. Men de mest alsidige er artikulerede robotter med seks akser. En artikuleret robotarm minder på mange måder om en menneskearm med et skulderled, albueled og et håndled. 

Robotteknologi dækker et bredt fagområde, som dækker alt fra matematik og mekanik til computervidenskab og programmering. En robotprogrammør har en forståelse for den proces, som skal automatiseres, men også et indgående kendskab til de fundamentale principper, som er gældende ved en robot.

Målet for dette afsnit er at introducere fire forskellige programmeringsmetoder af én robot og belyse de fordele og ulemper, der er ved hver enkel metode. Derudover introducerer dette afsnit også nogle begreber – eksempelvis koordinatsystemer og kinematik. 

2.1

Intro til forskellige programmeringsmetoder

Når man skal programmere en robot, benyttes typisk en eller flere af de fire grundmetoder. Metoderne kan kombineres i forskellige dele af et program, hvor det giver bedst mening. 

2.1.1 - Teach in-programmering

Teach in-programmering eller online programmering er den mest anvendte metode til at opbygge et robotprogram, og har været kendt lige så længe, der har eksisteret robotter.  

Ved hjælp af programmeringsboksen styres robotarmen hen til en ønsket position, og positionen gemmes som en programlinje ved tryk på en knap. Det vil sige, at armens position aflæses og gemmes internt i programmet. 

Så bevæges armen til en ny position, og der gemmes en ny programlinje. På den måde opbygges de ønskede bevægelser med en række punkter i robotprogrammet. 

Måden man bevæger robotarmen hen til en ønsket position

Måden man bevæger robotarmen hen til en ønsket position på, kan variere meget alt efter robotfabrikat og programmørens ønsker. Nogle robotter kan kun bevæges ved at holde trykknapper nede, nogle har en form for joystick, og andre kan trækkes rundt ved at tage fat i armen med hænderne og flytte den til ønsket position.

Sidstnævnte er typisk udbredt for cobots og gør det nemt og intuitivt at flytte robotten omkring til forskellige positioner. Programmerne er typisk lavet af en programmør, men det kan også være den operatør, der betjener anlægget under daglig drift.

Ved indkøring af nye produkter benyttes ofte en kopi af et eksisterende program, som efterfølgende tilrettes til den nye arbejdsopgave. 

2.1.2 - Parametrisk programmering

Der er tale om parametrisk programmering, når robottens arbejdsopgave kan beskrives ud fra få parametre som for eksempel emnestørrelse, placering og tilhørende procesdata. 

Robotprogrammet opbygges med en række formler direkte på robottens styring, der ud fra de angivne parametre kan beregne de bevægelser, som robotten skal udføre for at løse opgaven.  

Grundprogrammer

Grundprogrammer er således lavet til at løse en ”familie” af opgaver. Det er herefter muligt at lave få eller enkeltstyks produktion ud fra indtastede værdier direkte på robotskærmen. 

Parameterdata kan eventuelt hentes automatisk fra ordrestyringssystem, så de ikke skal indtastes manuelt. 

Centerpunkt (pC) beregnes ud fra parameter om placering (x_pos og y_pos). Resterende punkter beregnes relativt til centerpunktet. Her benyttes parameter for hullets ønskede diameter (hul_diam) og diameteren på fræseværktøjet (tool_D).

Beregn cirkel

diam = hul_diam – 0,5 * tool_D

pC = p[x_pos, y_pos, z_off_fraes, 0, 0, 0]

p0 = pose_add(pC, p[0, 0, Z_start_h, 0, 0, 0])

p1 = pose_add(pC, p[0,5 * diam, 0, 0, 0, 0, 0])

p2 = pose_add(pC, p[0, 0,5 * diam, 0, 0, 0, 0])

p3 = pose_add(pC, p[-0,5 * diam, 0, 0, 0, 0, 0])

p4 = pose_add(pC, p[0, -0,5 * diam, 0, 0, 0, 0])

Bevæg robotten
MoveL p0
MoveL pC
MoveL p1
CircleMove

p2
p3

CircleMove

p4
p1

MoveL pC
MoveL p0



Ulempe
n ved parametrisk programmering er de mere avancerede programmeringsstrukturer med matematiske formler. Det kan også være en ulempe, at denne form for programmering typisk udvikles af en programmør med matematisk forståelse, hvorefter det kan betjenes i det daglige af en operatør, der kun ændrer i parameterværdier.
 

2.1.3 - Offline programmering

Til offline programmering anvendes der specielt udviklet software, som typisk er installeret på en PC, hvor der bygges en digital model af robotopstillingen – også kaldet digital tvilling. 

Der er typisk en 3D-grafik, der viser robotten samt dens omgivelser. Disse omgivelser bygges op ved at tegne eller importere 3D CAD-modeller af gribere, emner, fiksture, andre maskiner mm. 

Robotten kan nu programmeres ved at styre den rundt i denne virtuelle verden og indsætte bevægelsespunkter, logik og andre programelementer. Programafviklingen kan testes, og bevægelsen kan visualiseres i 3D-grafikken.  

Når programmet har den ønskede funktionalitet, kan det overføres til den rigtige robot via eksempelvis netværk eller USB og til sidst startes programmet. 

Fordele

Ulemper

Fordele og ulemper

Den største gevinst ved offline programmering

Den største gevinst ved offline programmering ses ofte ved procesrobotter, der skal svejse, fræse, male eller på anden måde bearbejde mere komplekse emner, hvor man i forvejen har en 3D CAD-model af emnet. Offline-systemerne kan typisk genere robotbevægelser automatisk ved at følge kanter eller overflader på CAD-modellen. 

Software til offline programmering laves enten af robotleverandøren eller af et udviklingshus med speciale dette. 

Købes det sammen med robotten, kan det kun benyttes til dette fabrikats produkter, men funktionaliteten sammen med robotten virker med garanti. 

Købes software af anden part kan det typisk benyttes til at programmere flere forskellige fabrikater af robotter. Ofte kan det dog kræve ekstra opsætning og tilretning for at fungere i forhold til hver enkelt robotcelle. 

2.1.4 - Realtime programmering

Ved realtidsprogrammering forstås, at robottens program/bevægelser først genereres umiddelbart samtidig med, at programmet eksekveres. Herved er det muligt at tage hensyn til de aktuelle forhold, der er i forbindelse med den opgave, robotten skal løse. 

Monteres et kamerasystem eller andre sensorer, som kan fortælle noget om den aktuelle situation, kan robotten guides til de nødvendige positioner. Det kan for eksempel være at hente et emne ved en position, som er detekteret af kameraet. 

Ofte vil det kun være delsekvenser i det samlede program, der benytter realtidsprogrammering, mens andre dele af programmet kan være teach in, parametrisk eller offline programmeret. 

2.2

Koordinatsystemer

Koordinatsystemer lægger grundlaget for at beskrive robottens bevægelser. Koordinatsystemer bliver brugt til at specificere punkter, robotten skal bevæge sig til, for eksempel hvor er emnet placeret i forhold til robotten. Kinematikken beskriver, hvordan robottens motorer skal bevæge sig mellem de specificerede punkter og koordinatsystemer. 

Et koordinatsystem består af flere akser – som regel arbejdes der med et koordinatsystem i tre dimensioner, hvilket betyder, at der er tre akser, som hver står vinkelret på hinanden, hhv. X-, Y- og Z-aksen. På figuren nedenunder ses et eksempel på et koordinatsystem.  

Figur: Et koordinatsystem i tre dimensioner med punktet p1
Skæringspunktet mellem de tre akser

Skæringspunktet mellem de tre X-, Y-, Z-akser kaldes for origo. Når et koordinatsystem er defineret, kan et punkt defineres med et koordinatsæt, som beskriver distancen langs de tre akser fra koordinatsystemets origo til punktets position. For eksempel punktet p1 med koordinatsættet (x,y,z) = (0.5m, 0.2m, 0.1m) på figuren ovenfor.

Et nyt koordinatsystem kan således også defineres ved at specificere positionen af origo. Ud over at definere en position kan koordinatsystemer også definere en orientering. Der findes flere forskellige standard metoder til at specificere orienteringen. 

En metode er Euler-vinkler. Euler-vinkler beskriver rotationen af hver akse i sekvens. Eksempelvis vil ZYX-Euler-vinkler først beskrive en rotation

α

omkring Z-aksen, derefter vil koordinatsystemet med den nye orientering roteres

β

omkring Y-aksen og til sidst roteres koordinatsystemet

γ

om x-aksen. Det kan ses i koordinatsystemerne nedenunder.  


En robotcelle kan indeholde flere
reference-koordinatsystemer, som kan være en fordel, når en proces skal programmeres. Strukturen af koordinatsystemer i en robotcelle er bygget op om et verdenskoordinatsystem – robottens nulpunkt, hvorfra det er muligt at definere nye koordinatsystemer og punkter, som vist på figuren nedenunder.
 

Figur: Et nyt koordinatsystem [Ligning] defineret relativ til verdenskoordinatsystem {W}.  

Læs mere om dette i kapitel 3 Cobottens fysik

Fordelen ved flere koordinatsystemer er, at når man ændrer en position på et koordinatsystem, så vil de punkter, som har koordinatsystemet som reference, automatisk følge med. Eksempelvis kan et emne have et koordinatsystem, hvor der er defineret forskellige lokationer på emnet relativt til emnets koordinatsystem. Hvis emnet efterfølgende flyttes, kan emnets koordinatsystem flyttes tilsvarende uden at de lokale lokationer skal redefineres.  

Ligeledes kan koordinatsystemer benyttes til at beskrive positionen og orienteringen af de forskellige led i robotten og robottens Tool Center Point (TCP). Robottens TCP kan relateres til redskabets arbejdspunkt, for eksempel det sorte punkt markeret ved griberen på nedenstående billede. På den måde kan en sekvens af koordinatsystemer danne en relation mellem robottens base til robottens TCP.  

2.3

Hvordan kan cobotten bevæge sig?

Der findes flere forskellige måder en robot kan bevæge sig på. Her præsenterer vi de mest almindelige bevægelsestyper. Overordnet skelnes der mellem bevægelser i konfigurationsrummet (robotarmens vinkel konfiguration) og kartesisk rum (XYZ/”vores verden”) 

Kinematik

Man kan relatere motorpositionerne med en reel position i ”vores verden” i form af koordinater i et Kartesisk koordinatsystem. Dette gøres ved at lave en matematisk model af robot-armen.  

Ved at kende positionen af hver enkel elmotor i forhold til hinanden og deres motorposition er det muligt at udregne positionen for værktøjsflangen i vores verden (Kartesisk koordinatsystem). Et simpelt eksempel vil være en to-akset robot i et enkelt plan. Denne robot er vist på nedenstående Figur 4. 

 

Ud fra figuren kan vi bestemme positionen for TCP’et (x2, y2) ved 

x2 = L1 * cos(q1) + L2 * cos(q1 + q2) 

y2 = L1 * sin(q1) + L2 * sin(q1 + q2) 

Ligningerne gør brug af vinklerne for hvert enkelt led, hhv.

q1

    og

q2

,    samt længden på de to afstandsstykker (

L1

     og

L2

     ) til at bestemme positionen for værktøjsflangen. Den metode kalder man for Forward kinematik. 

 

Hvis man vil gå den anden vej og bestemme vinklen for hvert led på baggrund af positionen for værktøjsflangen, skal man benytte invers kinematik. I eksemplet kan vi finde

q1

    og

q2

    ved to ligninger og to ubekendte, hvilket giver  

Her ses det at ligningerne er en anelse mere komplekse, og at vinklen for led 2 (q2) har en betydning for led 1’s vinkel (q1). Vi kan også se at ledvinkel 2 enten kan være positiv og negativ i værdi. Det skyldes, at robotarmen reelt kan nå den samme position (x2,y2) med to forskellige vinkelsæt. Der er så at sige to løsninger for, at robotarmen kan nå positionen. De to løsninger kan ses på Figur 5. 


Figur 5: Albue op/ned i relation invers kinematisk løsning af planar arm. 

Det at regne frem og tilbage mellem koordinater i ”vores verden” og robottens vinkler er noget mange robotter gør hver gang de skal flytte sig fra en position til en anden. I stedet for to ligninger med to ubekendte arbejder seksakset cobots med seks ligninger og seks ubekendte, hvilket kan betyde, at der findes flere vinkelsæt, som kan give den samme position. Robotten vil da typisk vælge den løsning, som gør, at motorerne skal dreje sig mindst muligt, hvilket kan betyde, at robotten kan starte i forskellige udgangspunkter, selvom TCP’et er det samme sted. Derfor er det vigtigt at inkludere entydige positioner i sit robotprogram for eksempel ved brug af ledinterpolation, som specificerer et entydigt vinkelsæt, som robotarmen vil flytte sig til. 

En bevægelse i konfigurationsrummet

En bevægelse i konfigurationsrummet er også det, som kan kaldes for ledinterpolation (Joint interpolation). Oftest ser man denne bevægelsestype beskrevet med movJeller noget, der minder om. movJ er en forkortelse for Move joints. En ledbevægelse vil rykke sig fra en vinkel konfiguration til en ny. Figur 7 illustrerer en ledbevægelse mellem tre punkter. Her ses, at ledbevægelsen er en bevægelse af cirkulær natur ved værktøjets arbejdspunkt. Denne bevægelse vil man primært bruge, når der ikke arbejdes direkte på et emne.
 

Figur 7: Illustration af led bevægelse mellem 3 punkter.

Pendanten til en ledbevægelse er en lineærbevægelse, som flytter TCP’et i lige baner i forhold til et Kartesisk koordinatsystem. Robotten formår at lave de lige baner ved at opdele bevægelsen i bittesmå ledbevægelser. Vinklerne for hver enkel lille ledbevægelse udregnes med invers kinematik. Figur 8 viser en lineær bevægelse mellem tre punkter. Her ses det, at banen stopper ved alle tre punkter. Dette skyldes, at Lineær bevægelse prioriterer en position frem for hastighed. Lineær bevægelse vil man primært benytte over korte afstande tæt på emner, da denne type bevægelse giver mere kontrol over TCP’ets bane. Mere kontrol over TCP’ets bane kan være en fordel, da det ofte er TCP’et, som er tæt på emnet og derved også i fare for at kollidere med emnet. 

Figur 8: illustration af lineær bevægelse mellem 3 punkter.

Modsat lineær bevægelse prioriterer lineær procesbevægelse hastighed frem for position. Lineær procesbevægelse forsøger at holde en konstant hastighed også rundt i hjørner, hvilket medfører, at robotten skærer hjørner. Et eksempel en sådan bevægelse kan ses Figur 9. Lineær procesbevægelse vil man primært benytte, når der arbejdes direkte på et emne, hvor arbejdsopgaven er tidsafhængig. Eksempelvis ved dispensering af lim, hvor en varierende robothastighed vil give en ujævn dispensering af lim. 

Figur 9: Illustration af lineær proces bevægelse mellem 3 punkter. 

Ovenstående er de typisk forekommende robotbevægelser, som typisk er nok til at lave ligetil til komplekse robotprogrammer. Fælles for robotprogrammerne er dog, at man skal være opmærksom på, hvor man benytter hvilke bevægelsestyper. En god tommelfingerregel er at bruge led-bevægelser over ”store” afstande, eller når cobot-armens TCP ikke er tæt på emner eller andre forhindringer. Brug også som udgangspunkt lineære bevægelsestyper, når cobot-armens TCP er tæt på et emne. 

Tilmeld dig vores nyhedsbrev!

Gå ikke glip af spændende nyheder fra os. Vil du også gerne være opdateret på de nyeste cases i forhold til Cobot Knowledge Lab?

Synes du andre fortjener at se dette opslag?