Forside • Cobot-håndbog • Kapitel 2
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.
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 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 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
Ulempen 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
- Man kan programmere nye emner, mens robotten producerer andre emner
- Man kan teste celle-layout, fiksturer og andet, inden det bygges fysisk
- CAD-fil af emne kan benyttes til automatisk generering af bevægelser
- Kræver viden om 3D CAD
- Kræver en realistisk og kalibreret model af cellen
- Kræver visuel kontroller eller postprocessor, der kan generere data i det rigtige robotformat
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.
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.
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.
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”).
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 er også det, som kan kaldes for ledinterpolation (Joint interpolation). Oftest ser man denne bevægelsestype beskrevet med ”movJ” eller 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.
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.
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 på en sådan bevægelse kan ses på 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.
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?