UNIVERZA V MARIBORU

Podobni dokumenti
Microsoft Word - CNC obdelava kazalo vsebine.doc

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

innbox_f60_navodila.indd

1 Tekmovanje gradbenih tehnikov v izdelavi mostu iz špagetov 1.1 Ekipa Ekipa sestoji iz treh članov, ki jih mentor po predhodni izbiri prijavi na tekm

PowerPointova predstavitev

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Microsoft Word - Pravila - AJKTM 2016.docx

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Navodila za uporabo Mini prenosna HD kamera s snemalnikom

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij

Microsoft Word - CelotniPraktikum_2011_verZaTisk.doc

LABORATORIJSKE VAJE IZ FIZIKE

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

DCS-2330L_A1_QIG_v1.00(EU).indd

Microsoft Word - A-3-Dezelak-SLO.doc

Področje uporabe

Microsoft Word - CN-BTU4 Quick Guide_SI

Poskusi s kondenzatorji

ISOFT , računalniški inženiring

Microsoft Word - propozicije_mnogoboj.doc

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

Napotki za izbiro gibljivih verig Stegne 25, 1000 Ljubljana, tel: , fax:

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Microsoft Word - NAVODILA ZA UPORABO.docx

Linksys PLEK500 User Guide

STAVKI _5_

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

Strojna oprema

Slide 1

Osnove matematicne analize 2018/19

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Kratka navodila za uporabo razširjevalnika dosega WiFi AC750 model EX3800

predstavitev fakultete za matematiko 2017 A

Diapozitiv 1

UPS naprave Socomec Netys PL (Plug in) UPS naprava Socomec Netys PL moč: 600VA/360W; tehnologija: off-line delovanje; vhod: 1-fazni šuko 230VAC; izhod

Microsoft Word - M docx

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

DES11_realno

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc)

PowerPointova predstavitev

Sistemi Daljinskega Vodenja Vaja 1 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubljani

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA

Microsoft Word - UP_Lekcija04_2014.docx

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Microsoft Word - ELEKTROTEHNIKA2_11. junij 2104

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

DES

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Univerza v Novi Gorici Fakulteta za aplikativno naravoslovje Fizika (I. stopnja) Mehanika 2014/2015 VAJE Gravitacija - ohranitveni zakoni

10108-Bench-mark-brochure-6pg.indd

ANALITIČNA GEOMETRIJA V RAVNINI

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

NETGEAR R6100 WiFi Router Installation Guide

Navodila za uporabo Mini snemalnik

seminarska_naloga_za_ev

Slide 1

MERJENJE GORIŠČNE RAZDALJE LEČE

NETGEAR R6250 Smart WiFi Router Installation Guide

Microsoft Word - Avditorne.docx

VIDEOANALIZA GIBANJ Za kratke projektne naloge lahko dijaki z domačimi digitalnimi fotoaparati posnamejo nekaj sekundne videofilme poljubnih gibanj. U

Microsoft PowerPoint - DPN_II__05__Zanesljivost.ppt [Compatibility Mode]

Ime in priimek

Poročilo projekta : Učinkovita raba energije Primerjava klasične sončne elektrarne z sončno elektrarno ki sledi soncu. Cilj projekta: Cilj našega proj

Modem in krajevno omrežje Uporabniški priročnik

Microsoft Word - CNR-MPV2 Quick Guide_SI

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

Microsoft Word - M doc

10. Meritev šumnega števila ojačevalnika Vsako radijsko zvezo načrtujemo za zahtevano razmerje signal/šum. Šum ima vsaj dva izvora: naravni šum T A, k

COBISS3/Medknjižnična izposoja

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC

an-01-Stikalo_za_luc_za_na_stopnisce_Zamel_ASP-01.docx

Vaja04_Ver02

Vedno pod nadzorom, kjerkoli že ste

PowerPoint Presentation

2

NAVODILA ZA UPORABO Smart watch JW018 POZOR! Ura vsebuje magnetne sestavine. Osebe z vgrajenim srčnim spodbujevalnikom (pacemaker) ali kakršnimi drugi

7. VAJA A. ENAČBA ZBIRALNE LEČE

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Microsoft Word - SI_vaja1.doc

BeoLab 12 BeoLab 12 2 BeoLab 12 3

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC

DES

Microsoft Word Navodila za povezavo naprave v oblak_SLO

PowerPointova predstavitev

Transkripcija:

UNIVERZA V MARIBORU FAKULTETA ZA STROJNIŠTVO FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Alen KOLMAN PROGRAMIRANJE KOLABORATIVNEGA ROBOTA UR5 ZA MET NA KOŠ univerzitetnega študijskega programa 1. stopnje Mehatronika Maribor, september 2017

PROGRAMIRANJE KOLABORATIVNEGA ROBOTA UR5 ZA MET NA KOŠ Študent: Študijski program: Alen KOLMAN univerzitetni študijski program 1. stopnje Mehatronika Mentor FS: Mentor FERI: izr. prof. dr. Karl GOTLIH izr. prof. dr. Aleš HACE Maribor, september 2017

I Z J A V A Podpisani Alen Kolman izjavljam, da: je diplomsko delo rezultat lastnega raziskovalnega dela, predloženo delo v celoti ali v delih ni bilo predloženo za pridobitev kakršnekoli izobrazbe po študijskem programu druge fakultete ali univerze, so rezultati korektno navedeni, nisem kršil-a avtorskih pravic in intelektualne lastnine drugih, soglašam z javno dostopnostjo diplomskega dela v Knjižnici tehniških fakultet ter Digitalni knjižnici Univerze v Mariboru, v skladu z Izjavo o istovetnosti tiskane in elektronske verzije zaključnega dela. Maribor, Podpis: II

ZAHVALA Zahvaljujem se mentorjema izr. prof. dr. Alešu HACETU in izr. prof. dr. Karlu GOTLIHU ter vsem asistentom za pomoč in vodenje pri opravljanju diplomskega dela. Zahvaljujem se staršema, ki sta mi omogočila šolanje ter vsem drugim, ki so me vzpodbujali pri študiju in pisanju diplomske naloge. III

PROGRAMIRANJE KOLABORATIVNEGA ROBOTA UR5 ZA MET NA KOŠ Ključne besede: kolaborativni robot UR5, robotski met na koš, programiranje, PolyScope, UR script, Python UDK: 004.42:007.52(043.2) POVZETEK V diplomski nalogi je predstavljeno programiranje kolaborativnega robota podjetja Universal Robots UR5 in robotski met žoge na koš. Ker razvoj robotike sili k vse večjemu sodelovanju ljudi in robotov smo se odločili, da naredimo takšno aplikacijo, kjer lahko robot in človek izmenično mečeta žogo na koš, ter posledično tekmujeta kdo večkrat zadane. V diplomski nalogi je najprej predstavljen robot in osnovni programerski ukazi, nato pa sledi pisanje programa in izdelava komponent, ki omogočajo izvedbo giba in zadetek žoge v obroč koša. Rezultati so pokazali, da se lahko robot uspešno kosa s človekom pri metu žoge na koš. Delo je bilo opravljeno v Laboratoriju za industrijsko robotiko na UM FERI. IV

PROGRAMMING OF THE COLLABORATIVE ROBOT UR5 FOR ROBOTIC FREE THROW Key words: collaborative robot UR5, robotic free throw, programming, PolyScope, UR script, Python UDK: 004.42:007.52(043.2) ABSTRACT This diploma represents programming the collaborative robot UR5 from Universal Robots company and robotic free throw. Because the development of robotics is increasing towards the cooperation of humans and robots, we decided to make such an application where a robot and a human alternately throw a ball into a basket and consequently compete who strikes more scores. First, a robot and basic programming commands are represented, followed by writing a program and creating components that allow such movement where a ball hits the basket. The results have shown that the robot can successfully compete with a man at the free throw application. Diploma was made in the Laboratory for Industrial Robotics at UM FERI. V

KAZALO VSEBINE 1 UVOD... 1 2 OPIS ROBOTA UR5... 4 Komponente sistema... 4 Nastavitve... 6 3 PROGRAMIRANJE ROBOTA... 8 Grafično okno vmesnika... 9 Struktura programa... 10 Funkcije... 11 Skriptni jezik URScript... 11 Premikanje... 14 Vrste premikov... 15 Interpolacija v notranjih koordinatah s trapeznim profilom hitrosti. 16 4 POVEZAVA Z RAČUNALNIKOM... 22 Sistemska arhitektura... 23 Odjemalec na računalniku v programu Python... 24 Strežnik na robotu v Skriptnem jeziku... 25 Obdelava pridobljenih podatkov in analiza... 28 5 APLIKACIJA MET NA KOŠ... 29 Fizikalno ozadje meta... 29 Prijemalo... 30 Aplikacija met na koš... 33 Program... 34 6 REZULTATI... 37 7 SKLEP... 39 8 VIRI IN LITERATURA... 41 9 PRILOGE... 42 VI

Robotski program... 42 MATLAB program za meritev časa odpiranja prijemala... 44 MATLAB program računanje skaliranih podatkov pri trapeznem profilu 45 VII

KAZALO SLIK Slika 1.1: Tehnika meta žoge nad glavo... 1 Slika 2.1: Komponente robotskega sistema... 5 Slika 2.2: Koordinatni sistemi robota... 5 Slika 2.3: Pozdravni zaslon... 6 Slika 2.4: Nastavitev omrežja... 6 Slika 2.5: Nastavitev TCP točke za naš primer... 7 Slika 2.6: Nastavitev vhodov in izhodov za naš primer... 7 Slika 3.1: Okno ob zagonu programa... 8 Slika 3.2: Tipka za zagon in ustavitev robota... 8 Slika 3.3: Grafično okno vmesnika... 9 Slika 3.4: Struktura programa... 10 Slika 3.5: Funkcija movej v za naš program... 12 Slika 3.6: Premikanje v notranjih in zunanjih koordinatah... 14 Slika 3.7: Spajanje segmentov poti z radijem... 16 Slika 3.8: Trapezni profil hitrosti... 16 Slika 3.9: Hitrosti posameznih sklepov pri metu žoge... 19 Slika 3.10: Zasuk posameznih sklepov pri metu žoge... 20 Slika 4.1: Arhitektura sistema... 23 Slika 4.2: Koda za prenos na računalniku... 24 Slika 4.3: Koda za prenos na robotskem krmilniku... 25 Slika 4.4: Diagram poteka pri izmenjavi podatkov... 27 Slika 5.1: Trajektorija poševnega meta za naš robotski met... 29 Slika 5.2: Koda za odpiranje prijemala... 30 Slika 5.3: Podaljšek s prijemalom v programu SolidWorks... 31 Slika 5.4: Zanka za preverjanje stanja digitalnega vhoda... 31 Slika 5.5: Čas zakasnitve odpiranja prijemala... 32 Slika 5.6: Skica tokokroga za meritev časa odpiranja prijemala... 32 Slika 5.7: Robotska aplikacija meta na koš... 33 Slika 5.8: Položaji robota pri metu... 34 Slika 6.1: Maksimalna in minimalna možna razdalja meta... 37 VIII

UPORABLJENI SIMBOLI D s d H L i t a t d t e v razdalja do koša v [m] razdalja med košem in baznim koordinatnim sistemom v [m] višina izmeta v [m] zasuk i-tega sklepa med gibom v [rad] čas pospeševanja v [s] čas zaviranja v [s] čas enakomernega gibanja v [s] hitrost v [m/s] q max maksimalna vrednost pospeška, ki ga omogoča robot v [rad/s 2 ] q max maksimalna vrednost hitrosti, ki jo omogoča robot v[rad/s] q i skaliran pospešek i-tega sklepa v [rad/s 2 ] q i skalirana hitrost i-tega sklepa v [rad/s] θ kot izmeta v [ ] rad enota za merjenje ravninskih kotov kotna stopinja je enota za merjenje kotov IX

1 UVOD Dandanes se roboti pojavljajo že skoraj vsepovsod, od industrije pa vse do rabe v vsakdanjem okolju za privatne namene. Nekateri roboti so razviti že do takšne mere, da lahko popolnoma nadomestijo človeka pri marsikaterem opravilu, nadaljnji silovit razvoj robotike pa gre tudi v smeri vse večjega sodelovanja ljudi in robotov. Robote, ki so namenjeni za takšno fizično sodelovanje z ljudmi v istem delovnem okolju imenujemo kolaborativni roboti. Kolaborativni roboti za razliko od ostalih ne potrebujejo varnostne ograje (če orodje in obdelovanec nista nevarna), kar občutno poenostavi namestitev in zniža stroške integracije. Prav tako lahko s pomočjo senzorjev zaznajo vdor v delovni prostor in prekinejo delovanje, s tem pa preprečijo možnost lahkih poškodb [8]. Sčasoma bodo takšni roboti lahko služili tudi kot družabniki ljudem pri preživljanju prostega časa in različnih igrah, na primer igrah z žogo, kot so nogomet, rokomet, odbojka, košarka, itd. Ker pa za takšne družabne igre potrebujemo več igralcev, ki morajo izvajati kompleksne gibe (šprinti, skoki, meti, itd.), ugotovimo, da je to za današnje stanje robotike zaenkrat še nekoliko prezahtevno. Poznamo pa tudi manj komplekse igre, kot je metanje žoge na koš. To naj bi prestavljalo najpreprostejši del košarke, saj ni fizičnega kontakta, tekanja in skakanja, ampak samo konstantna razdalja ter višina do koša. Če najprej analiziramo človeški met žoge na koš ugotovimo, da poznamo dve vrsti meta: med od spodaj in met nad glavo, pri čemer je v današnjih časih na profesionalnem nivoju v uporabi samo še met nad glavo, kot vidimo na sliki 1.1. Da pa lahko človek zadane koš, potrebujemo v točki izmeta ustrezno hitrost in kot [9]. Slika 1.1: Tehnika meta žoge nad glavo 1

Žoga pri metu na koš opravi gibanje imenovano poševni met. Tako lahko s pomočjo formul poševnega meta izračunamo potrebno hitrost in kot, da žoga pade v obroč, ki je na določeni razdalji in višini od točke izmeta [15]. Met žoge na koš bi lahko izvedel tudi robot, vendar ga je potrebno prej naučiti metati na koš, oziroma napisati program za izvedbo takšnega giba. Tako bi robot izvedel gib, kjer bi v točki izmeta s pomočjo orodja (prijemala) žogo izpustil proti košu. Tako kot človeku, moramo tudi robotu podati ustrezno hitrost in kot v točki izmeta. Na spletu lahko zasledimo ogromno zanimivih primerov takšnega robotskega meta koš, zato smo se tudi sami odločili, da naredimo takšno aplikacijo. Ker je met žoge na koš družabna igra in ker je na prvem mestu, ko delamo z roboti varnost, smo za aplikacijo uporabili kolaborativnega robota podjetja Universal Robots, oziroma model UR5. Takšen robot ne potrebuje varnostne ograje, je prilagodljiv in kompakten, programiranje pa je relativno enostavno [8]. Tako smo si zastavili željene cilje: da je naša aplikacija čim bolj zanimiva za gledalce, da je gib robota čim bolj podoben človeškemu in da je razdalja zadovoljiva (vsaj 3 m od točke izmeta). Aplikacijo robotskega meta na koš sva naredila s sošolcem Andrejem Picejem v Laboratoriju za industrijsko robotiko na UM FERI. Delo sva si zaradi diplome smiselno razdelila na dva naslova:»določanje gibanja 6-osnega kolaborativnega robota UR5 za met na koš«in»programiranje kolaborativnega robota UR5 za met na koš«. Ker smo se prvič srečali s takšnim robotom, je na začetku te diplomske naloge predstavljen robot. Nato sledi predstavitev programiranja robota, z opisom nastavitev in ukazov katere kasneje potrebujemo za naš program. Predstavljena je tudi povezava računalnika in robota, katero uporabljamo za merjenje podatkov o hitrosti in položaju robota med našim gibom. Na koncu pa sledi predstavitev aplikacije meta na koš, z opisom komponent in podrobnejšo predstavitvijo programa. Za delovanje programa potrebujemo začetna podatka (potrebna hitrost in točka izmeta), katere izračuna Andrej v svoji diplomski nalogi [15]. prepišemo v robotski program in izvedemo met. Izračunane podatke nato 2

Diplomsko nalogo smo razdelili na poglavja, da smo lahko delo lažje predstavili. Na začetku se je bilo potrebno z robotom spoznati, kar je predstavljeno v poglavju 2, kjer najdemo opis robota (prednosti in slabosti), komponent robotskega sistema ter potrebne osnovne nastavitve za uspešno delovanje. V poglavju 3 predstavimo načine programiranja, možne tipe gibov in funkcij, ki jih ima robot na voljo, grafično okno programskega vmesnika in osnovno strukturo celotnega programa. Ker pa smo za našo aplikacijo potrebovali tudi povezavo robota z osebnim računalnikom, smo to predstavili v poglavju 4, kjer najdemo podrobnejši opis potrebne programske kode, da je povezava in pošiljanje podatkov sploh mogoče. V poglavju 5 pa je predstavljena aplikacija robotskega meta na koš, s kratkim opisom fizikalnega ozadja in potrebnih komponent ter celotnim programom za izvedbo meta. 3

2 OPIS ROBOTA UR5 UR5 je sodobni kolaborativni robot podjetja Universal Robots z nosilnostjo 5kg. Robotsko roko sestavlja 6 osi (baza, rama, komolec, zapestje 1, zapestje 2 in zapestje 3) z njihovimi ročicami. Robota odlikuje enostavno programiranje, kompaktnost, fleksibilna in lahka robotska roka ter možnost uporabe brez varnostne ograje [10]. Delovno območje robota brez prijemala je 850 mm, ponovljivost pa ±0,1 mm. Ker gre za kolaborativnega robota so tudi maksimalne hitrosti»gibanja«oziroma»premikanja«nizke. Tako je hitrost zasuka posameznega sklepa omejena na 180 /s [7]. V Andrejevi diplomi najdemo izračun kjer ugotovimo, da za razdalje daljše od 430 cm potrebujemo hitrosti katere robot ne zmore več. Robot v takšnem primeru doseže omejitev svoje hitrosti in se giba z maksimalno hitrostjo sklepa (180 /s) [7]. Tako je aplikacija omejena na razdaljo 430 cm od točke izmeta. Ker smo met izvajali v laboratoriju, smo zaradi varnosti namesto prave košarkarske žoge in koša uporabili manjšo tenis žogico ter pomanjšan koš premera 20 cm. Komponente sistema Robotski sistem sestavlja robotska roka, krmilna omarica, ročna enota za programiranje oziroma ang.»teach pendant«ter kabli, ki te komponente povezujejo. Vse komponente vidimo na sliki 2.1. Enota za programiranje nam z zaslonom na dotik in uporabniškim vmesnikom»polyscope«, omogoča preprosto pisanje ukazov. Ukazi določeni na enoti za programiranje se prenesejo v krmilno omarico, kjer se izvedejo vse potrebne operacije. Krmilna omarica ima tudi dodatne priključke za razne vhodno/izhodne enote, kot so prijemala, stikala, itd. Ukazi se nato prenesejo na motorje robotske roke, ta pa izvede določen gib [13]. 4

Slika 2.1: Komponente robotskega sistema Slika 2.2: Koordinatni sistemi robota 5

Nastavitve Ob vklopu robota se na enoti za programiranje prikaže pozdravni zaslon (slika 2.3), kjer najdemo gumb»nastavitve robota«[13]. Slika 2.3: Pozdravni zaslon V nastavitvah lahko pod zavihkom»network«konfiguriramo parametre Ethernet mreže. Tako imamo preko Etherneta 1 omogočeno povezavo z računalnikom [13]. Na sliki 2.4 so nastavitve za naš primer omrežja. Slika 2.4: Nastavitev omrežja 1 Ethernet je omrežje, ki ga uvrščamo v skupino omrežij po standardu IEEE 802.3. 6

V primeru dodatnega orodja je robotu potrebno nastaviti novo točko orodja - TCP 2. Na sliki 2.5 so nastavitve za naš primer TCP točke robota v primeru dodatnega prijemala, ki je opisan v poglavju 5.2. Slika 2.5: Nastavitev TCP točke za naš primer Uporabniški vmesnik prav tako omogoča uporabo vhodov in izhodov krmilne omarice, katere lahko poljubno poimenujemo kot prikazuje slika 2.6. Slika 2.6: Nastavitev vhodov in izhodov za naš primer 2 Tool Center Point (TCP) je središčna točka orodja oziroma točka končnega efektorja. 7

3 PROGRAMIRANJE ROBOTA Robotski program pišemo in testiramo na enoti za programiranje. Pred začetkom programiranja je potrebno pod zavihkom»program«ustvariti»nov program«, lahko pa uporabimo že obstoječo datoteko (»Naloži program«), kar vidimo na sliki 3.1 [13]. Nato sledi pisanje in testiranje programa, katerega poženemo in ustavimo s preprostim pritiskom na tipko»play«ali»stop«. Program se izvaja v takšnem vrstnem redu kot si sledijo ukazi, pri čemer se mora pred naslednjim ukazom do konca izvesti trenutni. Slika 3.1: Okno ob zagonu programa Slika 3.2: Tipka za zagon in ustavitev robota 8

Grafično okno vmesnika Uporabniški vmesnik»polyscope«omogoča grafičen prikaz robota na zaslonu. 3D 3 risba lahko prikazuje trenutni položaj robotske roke, grafično okno pa lahko uporabimo tudi kot prikaz simulacije robotskega programa. To naredimo tako, da v spodnjem levem kotu izberemo točko»simulacija«in zaženemo program. Tako se nam celotni program izvede, gibanje robota pa lahko opazujemo v grafičnem oknu pod zavihkom»grafika«[13]. To je zelo praktično v primeru testiranja programa, saj s tem preprečimo nenadzorovane gibe, ki bi lahko kljub nizkim hitrostim povzročili lažje poškodbe, kot so podplutbe in poškodbe občutljivih delov (oči, ). Več o tem najdemo v dokumentaciji pod poglavjem ocene tveganja [11]. Slika 3.3: Grafično okno vmesnika 3 3D ali tri-dimenzionalni prostor je prostor, ki ga določajo tri razsežnosti: širina, dolžina ter višina. 9

Struktura programa Celoten robotski program je razdeljen na več segmentov oziroma delov. Najprej je del imenovan»beforestart«, kjer inicializiramo vse spremenljivke katere bomo kasneje uporabljali. Nato sledi glavni del oziroma»robot Program«, kjer se izvedejo vse potrebne funkcije in pomiki robota. Konkurenčno z glavnim delom se izvaja paralelna koda imenovana»thread«, ki se uporablja za nadzor drugih strojev, medtem ko robot deluje. Izvaja lahko tudi vhodno/izhodne enote, čaka na signale in določa spremenljivke [13]. Ker želimo signale sprejemati v realnem času, mora biti vzorčna frekvenca dovolj velika. Funkcija»Thread«se izvaja s frekvenco 125 Hz, kar pomeni, da ima čas 0,008 sekunde, da pošlje vse signale oziroma podatke. Če v tem času ne uspe poslati vseh podatkov, se postavi v»ne aktivno stanje«in počaka na novih 0,008 sekund. Če pa se vsi potrebni podatki pošljejo hitreje kot v času, ki je na voljo pa funkcija»sync()«, katero napišemo na koncu, porabi preostali čas [14]. Slika 3.4: Struktura programa 10

Funkcije Vmesnik»PolyScope«omogoča uporabo funkcij, ki bistveno olajšajo programiranje. Zelo pogosto uporabljena je funkcija»wait«, kjer nam vmesnik omogoča več izbir: počakaj določen čas, počakaj na digitalni vhod ali počakaj na določeno vrednost. Praktično zelo uporabna je funkcija»set«, s katero lahko postavljamo vrednosti digitalnih/analognih vhodom in izhodov. Tako lahko odpiramo in zapiramo razna orodja robota, med katera spada tudi prijemalo, katerega smo sami potrebovali pri našem metu na koš. Vmesnik prav tako omogoča uporabo preprostih ukazov, kot sta pojavno okno (»Popup«) in komentar (»Comment«). S tema ukazoma lahko med izvajanjem programa prikažemo določeno sporočilo ali pa preprosto komentiramo program za lažje razumevanje. Uporabljamo lahko tudi podprograme (»SubProgram«), kateri so lahko na ločenem disku ali pa so skriti. Za bolj kompleksne programe uporabimo funkcijo»assignment«, s katero določimo vrednosti spremenljivk in tako dobimo boljšo preglednost programa. Vmesnik ima prav tako že v naprej pripravljeno funkcijo»if/else«, s katero testiramo razne izjave ali spremenljivke [13]. Skriptni jezik URScript Robotu lahko ukaze vpisujemo tudi v drugačni obliki in sicer v tako imenovanem skriptnem jeziku»urscript«. Ta je namenjen naprednejšim uporabnikom, navodila za uporabo pa najdemo v priloženi dokumentaciji [14]. Funkcija movej v skriptnem jeziku omogoča, da lahko programer določi več prametrov, kot so končna točka giba, pospešek, hitrost ter čas v katerem naj doseže podano končno točko. V primeru vpisa vseh možnih prametrov, ima čas prioriteto pred vpisano hitrostjo in pospeškom. Prav tako lahko določimo radij, ki je opisan v poglavju 3.6 [14]. 11

Oblika funkcije movej v skriptnem jeziku: movej(q, a, v, t, r); Parametri: q končna poza podana v notranjih ali zunanjih koordinatah a pospešek vodilnega sklepa 4 (rad/s 2 ) v hitrost vodilnega sklepa (rad/s) t čas (s) r radij (polmer) (m) Ker lahko s takšno obliko programiranja nastavimo več začetnih podatkov, je del programa meta na koš zapisan prav v skriptnem jeziku. Slika 3.5: Funkcija movej v za naš program Skriptni jezik nam ob gibih opisanih v poglavju 3.6, omogoča še uporabo giba movec. Pri tem gibu se TCP robota giba s krožnim lokom in sicer tako, da potuje skozi vmesno točko (»pose_via«) do končne točke (»pose_to«). Tako kot pri gibu movej, moramo tudi tukaj robotu določiti ustrezne parametre [14]. 4 Vodilni sklep robota je sklep ki ob gibu opravi največjo pot. 12

Oblika funkcije movec v skriptnem jeziku: movec(pose_via, pose_to, a, v, r) Parametri: pose_via vmesna točka podana v notranjih ali zunanjih koordinatah pose_to končna točka podana v notranjih ali zunanjih koordinatah a pospešek TCP-ja (rad/s 2 ) v hitrost TCP-ja (rad/s) r radij (polmer) (m) Kot je omenjeno v poglavju 4, nam robot omogoča zajem podatkov trenutnega položaja in hitrosti vseh šestih sklepov, kot tudi položaja in hitrosti TCP-ja. Da se te meritve lahko izvedejo moramo v skriptnem jeziku napisati ustrezne ukaze: Funkcija za meritev položaja sklepov: get_actual_joint_positions() Funkcija vrne vektor šestih elementov z zasuki sklepov [baza, rama, komolec, zapestje 1, zapestje 2 in zapestje 3] v rad. Funkcija za meritev hitrosti sklepov: get_actual_joint_speeds() Funkcija vrne vektor šestih elementov s kotnimi hitrostmi sklepov [baza, rama, komolec, zapestje 1, zapestje 2 in zapestje 3] v rad/s. Funkcija za meritev položaja TCP-ja: get_actual_tcp_pose() Funkcija vrne vektor šestih elementov [X,Y,Z,Rx,Ry,Rz], pri čemer prvi trije predstavljajo položaj TCP-ja [m] v baznem koordinatnem sistemu, drugi trije pa rotacijo TCP-ja [rad]. Funkcija za meritev hitrosti TCP-ja: get_actual_ tcp_speed() Funkcija vrne vektor šestih elementov [X,Y,Z,Rx,Ry,Rz], pri čemer prvi trije predstavljajo kartezično hitrost TCP-ja [m/s] v baznem koordinatnem sistemu, drugi trije pa rotacijo TCP-ja [rad/s] [14]. 13

Premikanje Uporabniški vmesnik omogoča premikanje robota v notranjih ali zunanjih koordinatah. Pri premikanju v notranjih koordinatah nastavljamo zasuke posameznih sklepov robota (v ali rad), vrh oziroma TCP robota pa se premika glede na podane položaje. Obratno poteka pri premikanju v zunanjih koordinatah, kjer nastavljamo položaj TCP točke robota, sklepi pa se temu prilagajajo. Položaj TCP točke določimo kot vektor s šestimi elementi [X,Y,Z,Rx,Ry,Rz], pri čemer prvi trije predstavljajo položaj točke v baznem koordinatnem sistemu (v mm), drugi trije pa rotacijo točke (v radianih) [13]. Robot prav tako omogoča premikanje v tako imenovanem prostem teku, kjer lahko robota ob pritisku gumba na zaslonu ali pa zadnji strani enote za programiranje, kar z roko prosto premaknemo na željeno mesto. Robot pa nato s pomočjo senzorjev sam določi zasuke vsakega sklepa. Slika 3.6: Premikanje v notranjih in zunanjih koordinatah 14

Vrste premikov Gibanje oziroma premikanje med dvema željenima točkama robota je potrebno definirati. Izbiramo lahko med tremi vrstami premikov: movej, movel in movep. MoveJ generira ukrivljeno pot za orodje oziroma med dvema točkama interpolira takšen gib, da vsak člen doseže željen položaj v istem času. Parametra, ki ju lahko nastavimo za to vrsto premika sta, največja hitrost členov in pospeševanje členov v /s oziroma /s 2. Če želimo, da se robotska roka premika hitro med željenimi točkami, ne glede na gibanje orodja, izberemo to vrsto premika [13]. MoveL premika orodje linearno med dvema točkama. To pomeni, da vsak člen izvaja bolj zapleten gib, da zagotovi ravno pot orodja. Parametra, ki ju lahko nastavimo za to vrsto premika sta, željena hitrost orodja in pospeševanje orodja določena v mm/s in mm/s 2 [13]. MoveP premika orodje linearno ob stalni hitrosti s krožnimi spoji med linearnimi segmenti in se uporablja za določene postopke, kot so lepljenje, varjenje, laserske aplikacije, itd. V teh primerih mora robot ohranjati konstanto hitrost v celotnem gibu, saj bi drugače lahko prišlo do napak pri končnem izdelku (npr. prehitro/prepočasno gibanje pomeni premalo/preveč lepila in nekvaliteten izdelek). Ukazu MoveP se lahko doda krožni premik, ki je sestavljen iz dveh točk: prva določa prehodno točko na krožnem loku, druga pa končno točko premikanja. Robot tako začne krožno gibanje iz trenutnega položaja skozi prehodno točko na krogu do končne točke [13]. Gibu lahko definiramo tudi tako imenovan radij oziroma gladko spajanje segmentov. V tem primeru robot prilagodi trajektorijo skozi točko za takšno vrednost (± m), kot smo definirali radij, kar prikazuje slika 3.7. Robot skozi krožnico katero določa radij upočasni, zato, da ne preseže dovoljenih pospeškov [13]. Pri premiku v notranjih koordinatah se prilagodi trajektorija gibanja sklepov, medtem, ko pri premikanju v zunanjih koordinatah robot prilagodi gibanje TCP točke. 15

Slika 3.7: Spajanje segmentov poti z radijem Tako smo se odločili, da za naš robotski met uporabimo samo dve točki (začetno in končno), med katerima se bo robot gibal z gibom movej. S tem se izognemo nepotrebnem zaviranju, ki bi se pojavilo v primeru še ene vmesne točke. Interpolacija v notranjih koordinatah s trapeznim profilom hitrosti Pri gibu movej imajo sklepi tako imenovani trapezni profil hitrosti, sestavljen iz treh segmentov: najprej robot pospešuje, nato se giblje z enakomerno hitrostjo in na koncu zavira. Za naš robotski met smo tako optimalno točko za izmet izbrali v srednjem segmentu, kjer je hitrost konstanta [13]. Navadno pri trapeznem profilu fazi pospeševanja (t a ) in zaviranja (t d ) trajata enako (t a = t d ), zato je profil gibanja simetričen, kot prikazuje slika 3.8 [12]. Slika 3.8: Trapezni profil hitrosti 16

Glavni gib oziroma met žoge na koš se začne v začetnem času (t i ), ki v našem primeru znaša 4,88 sekunde, kot vidimo na sliki 3.9. Pred glavnim gibom se izvede pomik v začetno lego, ki za našo meritev ni pomemben, zato analiza poteka samo med časoma t i in t f (slika 3.8). Trapezni profil lahko opišemo tudi s pomočjo enačbe 3.1, ki predstavlja položaj robota v poljubnem času (t) za vse segmente gibanja. Prva vrstica enačbe opiše fazo pospeševanja, druga fazo enakomernega gibanja in tretja fazo zaviranja [12]. q i + 1 2 q max(t t i ) 2, t i t t i + t a q(t) = q i + q maxt a (t t i t a 2 ), t i + t a t t f t a { q f 1 q max(t 2 f t t i ) 2, t f t a t t f (3.1) Kjer je: t i [s] začetni čas giba t f [s] končni čas giba t [s] poljubni čas giba med t i in t f t a [s] čas pospeševanja q i [rad] položaj sklepa robota v začetnem času q f [rad] položaj sklepa robota v končnem času q(t) [rad] q max [rad/s2 ] položaj sklepa robota v času t maksimalna vrednost pospeška, ki ga omogoča robot Za izračun enačbe 3.1 potrebujemo čas pospeševanja (t a ) in končni čas giba robota (t f ). Čas pospeševanja izračunamo glede na največjo (potovalno) hitrost in največjo vrednost pospeška, s pomočjo enačbe 3.2 [12]. t a = q max q max (3.2) Kjer je: q max [rad/s] maksimalna vrednost hitrosti, ki jo omogoča robot 17

Končni čas giba robota pa izračunamo s pomočjo enačbe 3.5. q max (T t a ) = q f q i = L = (T t a ) = L q max (3.3) T = (L q max)+(q max 2 ) q max q max = ((q f q i ) q max)+(q max 2 ) q max q max (3.4) t f = t i + T = t f = t i + ((q f q i ) q max)+(q max 2 ) q max q max (3.5) Kjer je: T [s] čas trajanja pomika (interval) L [rad] celoten pomik V primeru večosnega manipulatorja so intervali pospeševanja, enakomernega gibanja in zaviranja pri vseh sklepih enaki, saj se vsi sklepi začnejo in končajo gibati ob istem času. Da pa se to lahko zgodi, je potrebno osi med seboj sinhronizirati (koordinirati). Izbere se os z najdaljšo potjo pomika (vodilni sklep), za katero se ob upoštevanju maksimalne hitrosti in pospeška, s pomočjo enačb 3.2 in 3.3 (izpeljanih v [12]), izračuna čas pospeševanja (t a ) in časovni interval pomika (T), ki sta označena na sliki 3.8. Nato se na podlagi teh parametrov in poti giba sklepov, z enačbama 3.6 in 3.7 (izpeljani v[12]), izračunajo še parametri (hitrost in pospešek) za preostale osi. q i = Li T t a = Li L V q max = Li L V q max (3.6) q i = L i t a (T t a ) = L i = Li q max q ( L V max q ) max L V q max (3.7) Kjer je: q i [rad/s2 ] skaliran pospešek i-tega sklepa q i [rad/s] skalirana hitrost i-tega sklepa L i [rad] zasuk i-tega sklepa med gibom L V [rad] zasuk vodilnega sklepa med gibom 18

Da smo lahko analizirali profil hitrosti našega giba, s postopkom opisanim v poglavju 4 iz robota pridobimo podatke o hitrostih vseh šestih sklepov med metom in s pomočjo orodja MATLAB 5 izrišemo graf prikazan na sliki 3.9. Slika 3.9: Hitrosti posameznih sklepov pri metu žoge Na sliki je prikaz hitrosti med gibom robota samo za štiri sklepe zato, ker gib poteka samo v x-z ravnini glede na bazni koordinatni sistem (slika 2.2) in posledično sklepa»baza«in»zapestje 2«ne opravljata nobene poti oziroma zasuka. 5 MATLAB je programski paket za numerično analizo in programski jezik četrte generacije. 19

Prav tako pridobimo podatke o zasukih vseh šestih sklepov in s pomočjo orodja MATLAB izrišemo graf prikazan na sliki 3.10. Slika 3.10: Zasuk posameznih sklepov pri metu žoge Tako odčitamo zasuke vseh šestih sklepov v začetni (qs) in končni točki(qf) meta: Zasuk sklepa»rama«v začetni točki meta: qs2 = 165 Zasuk sklepa»rama«v končni točki meta: qf2 = 58,75 Zasuk sklepa»komolec«v začetni točki meta: qs3 = 76,57 Zasuk sklepa»komolec«v končni točki meta: qf3 = 34,21 Zasuk sklepa»zapestje 1«v začetni točki meta: qs4 = 114,8 Zasuk sklepa»zapestje 1«v končni točki meta: qf4 = 89,25 Zasuk sklepa»zapestje 3«v začetni točki meta: qs6 = 84,01 Zasuk sklepa»zapestje 3«v končni točki meta: qf6 = 81,64 20

Iz razlike med začetno in končno točko dobimo pot, ki jo opravi posamezen sklep med metom žoge na koš. Od tod vidimo, da je v našem primeru vodilni sklep»komolec«, saj med metom opravi največjo pot (L V = L 3, t a = t a3, T = T 3 ) Pot, ki jo med metom opravi»rama«: L 2 = q f2 q s2 = 106,25 = 1,854 rad Pot, ki jo med metom opravi»komolec«: L 3 = q f3 q s3 = 110,78 = 1,933 rad Pot, ki jo med metom opravi»zapestje 1«: L 4 = q f4 q s4 = 25,55 = 0,446 rad Pot, ki jo med metom opravi»zapestje 3«: L 6 = q f6 q s6 = 2,37 = 0,0414 rad Sedaj lahko s pomočjo enačb za sinhronizacijo analiziramo naš primer. Najprej s pomočjo enačbe 3.8 izračunamo čas pospeševanja vodilnega sklepa pri maksimalnem možnem pospešku in hitrosti, kasneje pa z enačbo 3.9 še čas potovanja. t a3 = q max q max = 3,14 rad/s 3,3 rad/s 2 = 0,95 s (3.8) T 3 = ((q f3 q s3 ) q max)+(q max 2 ) q max q max = (1,933 rad 3,3 rad/s2 )+(3,14 rad/s) 2 3,3 rad/s 2 3,14 rad/s = 1,567 s (3.9) Na koncu s pomočjo enačb 3.10 in 3.11 izračunamo še hitrosti in pospeške za preostale osi. q i = Li L 3 q max (3.10) q i = Li L 3 q max (3.11) S pomočjo orodja MATLAB (priloga 9.3), smo naredili izračune in dobili naslednje vrednosti hitrosti ter pospeškov: Rama: q 2 = 3,013 rad/s q 2 = 3,165 rad/s 2 ; Zapestje 1: q 4 = 0,725 rad/s q 4 = 0,761 rad/s 2 ; Zapestje 3: q 6 = 0,067 rad/s q 6 = 0,071 rad/s 2 ; 21

4 POVEZAVA Z RAČUNALNIKOM Robota je možno povezati tudi z osebnim računalnikom, kar naredimo preko Ethernet mreže s TCP/IP 6 komunikacijskim protokolom. Kot je omenjeno že v poglavju 2.2 je robotu potrebno nastaviti ustrezne internetne naslove, da je povezava sploh mogoča [13]. V našem primeru smo za potrebe analiziranja gibanja robota potrebovali podatkovno povezavo, za kar smo koristili povezavo preko TCP/IP vtičnice. Tako smo lahko pridobili podatke o časovnem poteku položaja in hitrosti robotskih sklepov ter TCP-ja za določen robotski gib. Za izmenjavo podatkov med računalnikom in robotom potrebujemo dva programa: program na računalniku v vlogi klienta in program na robotu v vlogi strežnika. Na robotu skriptni jezik podpira preproste funkcije za komuniciranje preko TCP/IP vtičnic, na računalniku pa smo s programskim orodjem»python 7 «ustvarili program za vzpostavitev povezave in prenos podatkov med robotom in računalnikom [3, 4]. 6 TCP/IP:»Transmission Control Protocol / Internet Protocol«je dvoslojni program. TCP je protokol za nazor prenosa, IP pa množica protokolov, ki izvaja protokolski sklad prek katerega teče internet 7 Python je široko uporabljeno programsko orodje namenjeno za pisanje splošno namenskih programov, ki ga je ustvaril Guido van Rossum leta 1990 22

Sistemska arhitektura Na sliki 4.1 vidimo uporabljene komponente za povezavo računalnika in robota. Uporabili smo osebni računalnik, na katerega je bilo potrebno namestiti programsko orodje»python«. Tako napišemo program, potreben za komunikacijo in izmenjavo podatkom med robotom in računalnikom. Krmilno omarico in osebni računalnik s pomočjo mrežnega kabla 8 povežemo na omrežno stikalo, ki robotu in računalniku dodeli ustrezen IP naslov 9 omrežja. Na sliki prav tako vidimo robota z dodatnim prijemalom, na katerega je priključen kabel iz digitalnega izhoda krmilne omarice. To je potrebno zaradi odpiranja prijemala pri metu žoge na koš, kar je opisano v poglavju 5.2. Slika 4.1: Arhitektura sistema 8 Mrežni kabel ali UTP (Unshielded Twisted Pair) je vrsta kabla, ki se uporablja v telekomunikacijah. 9 IP-naslov je številka, ki natančno določa računalnik v omrežju. 23

Odjemalec na računalniku v programu Python Na sliki 4.2 vidimo, da je potrebno najprej nastaviti IP naslov robota (slika 2.4) s katerim se želimo povezati in port serverja, katerega najdemo v priloženi dokumentaciji robota [13]. Nato se v»while«zanki izvede izmenjava podatkov (točka II in III), na koncu pa z ukazoma»s.close()«in»c.close()«komunikacijo ustavimo (točka IV) [1]. V točki II se ob prejetem podatku»start«, ki ga pošlje robot začne izmenjava. Računalnik v točki III pošlje robotu podatek (v našem primeru smo si izbrali tri številke»20,50,45«), ta pa mu vrne vrednost, ki jo pošiljamo (na primer hitrost TCP-ja). Prejet podatek računalnik shrani v datoteko»workfile«, počaka 0,01sekunde in postopek se ponovi. Ko računalnik prejme 1300 podatkov, program zapusti zanko ter komunikacijo ustavi. Slika 4.2: Koda za prenos na računalniku 24

Strežnik na robotu v Skriptnem jeziku Program na robotu je potrebno za izmenjavo podatkov dopolniti s skriptnimi ukazi [6, 14]. Dopolnjen program je prikazan na sliki 4.3. Slika 4.3: Koda za prenos na robotskem krmilniku 25

Na začetku z ukazom»socket_open( IP, PORT)«(točka 1), nastavimo IP naslov računalnika s katerim se želimo povezati in port serverja katerega najdemo v priloženi dokumentaciji robota [14]. Z ukazom»socket_send_string( start )«(točka 2) se začne pošiljanje podatkov. Robot pošlje računalniku podatek tipa»string 10 «, oziroma besedo»start«. Nato se izvede programska koda za gib robota katerega merimo, z ukazom»socket_close()«(točka 3) pa komunikacijo ustavimo [1]. V programu Thread_2 (točka 4) se izvaja merjenje in izmenjava podatkov. Na začetku z ukazom»socket_read_ascii_float(3)«beremo prejet podatek računalnika(številke 20,50,45«), nato pa z ukazom»if var_2[1] 20«preverjamo ali je na prvem mestu prejetega podatka število 20. Ko ta izjava drži se začne merjenje in pošiljanje podatkov računalniku. Najprej s pomočjo funkcij pridobimo podatke o hitrosti in položaju TCP-ja, ter hitrosti in položaju posameznih sklepov robotske roke. Ker potrebujemo samo položaj in kartezično hitrost TCP-ja, brez orientacije, iz vektorja šestih elementov uporabimo samo prve tri vrednosti. To naredimo s pomočjo oglatega oklepaja, ki pove kateri element vektorja potrebujemo (na primer [0]- pomeni prvi element vektorja). Podobno naredimo tudi za hitrosti sklepov, saj kot je omenjeno v poglavju 3.7 so med gibom aktivni samo štirje sklepi. Podatke nato združimo v spremenljivko»rob«in s pomočjo ukaza»socket_send_string(rob)«pošiljamo računalniku (točka 5). Spremenljivka»meritev«vsebuje podatke o odprtosti prijemala in stanju digitalnega vhoda, katere potrebujemo za meritev zakasnitve odpiranja prijemala, opisanega v poglavju 5.2. 10 V računalništvu je string zaporedje znakov, bodisi kot konstanta ali neke vrste spremenljivka (lahko tudi beseda) 26

Za boljše razumevanje izmenjave podatkov računalnika in robota je na sliki 4.4 grafičen prikazan diagrama poteka. Slika 4.4: Diagram poteka pri izmenjavi podatkov 27

Obdelava pridobljenih podatkov in analiza Podatke, ki jih prejmemo od robota shranjujemo v posebno datoteko»workfile«. Ta vsebuje 1300 podatkov razporejenih v enakih časovnih intervalih 0,01 sekunde za celoten čas giba robota. Te podatke s pomočjo orodja Excel 11 uredimo, nato pa obdelamo s programom MATLAB. Tako lahko izrišemo hitrost in položaj TCP-ja ter hitrost sklepov med gibom oziroma zamahom robota. 11 Microsoft Excel je računalniški program za obdelavo razpredelnic. 28

5 APLIKACIJA MET NA KOŠ Kot je bilo omenjeno že v uvodu je cilj aplikacije, da s pomočjo 6-osne robotske roke vržemo žogo v obroč koša. Da pa nam bi to uspelo je potrebno robotu sprogramirati trajektorijo, ki omogoča takšno izvedbo meta. Trajektorijo nam določa postavitev koša glede na robota, sam met žoge pa poteka po zakonitostih poševnega meta. Tako iz analize poševnega meta pridobimo potrebne podatke kot so točka, hitrost in kot izmeta, nato pa [15] izračuna potrebne sklepne hitrosti, da vrh robota v točki izmeta doseže ustrezno hitrost. Fizikalno ozadje meta Gibanje poševnega meta lahko razdelimo na dva dela. V vodoravni smeri gre za enakomerno gibanje, saj na telo (žogico) v tej smeri ne deluje noben pospešek ali sila, medtem pa lahko gibanje v navpični smeri opišemo kot enakomerno pospešeno saj na opazovano telo (žogico) deluje gravitacijski pospešek g. Ker smo hoteli pri metu doseči čim daljšo razdaljo, je koš postavljen pod točko izmeta, kot je prikazano na sliki 5.1. Na sliki vidimo, da je koš postavljen na razdalji D s in višini H od igralca oziroma robota. Ta v točki izmeta potrebuje ustrezno hitrost in kot, da žoga zadane obroč koša. Izpeljava analize poševnega meta je predstavljena v diplomski nalogi [15], kjer prav tako najdemo potrebne podatke kot sta hitrost (v) in kot izmeta (θ) za met na določeno razdaljo. Slika 5.1: Trajektorija poševnega meta za naš robotski met 29

Prijemalo Da lahko izvedemo met žoge na koš je bilo potrebno izdelati komponente, ki omogočajo prijem žoge in izpust v točki izmeta. Tako smo s programom SolidWorks 12 zmodelirali potrebne dele in jih kasneje natisnili s 3D tiskalnikom. Na konec podaljška smo pritrdili prijemalo GIMATIC MPPM 1 606, s katerim smo lahko žogico prijeli in jo v ustrezni točki izmeta izpustili. TCP orodja se v tem primeru premakne v točko kjer imamo prijemalo (slika 5.3). Po branju podatkovnega lista ugotovimo, da ima prijemalo tri priključke. Dva se uporabita za napajalno napetost, tretji pa služi za odpiranje prijemala. Če na tretji priključek pripeljemo napetost oziroma logično 1 je prijemalo odprto, v nasprotnem primeru pa zaprto. Odpiranje in zapiranje prijemala kontroliramo kar z digitalnim izhodom robotskega krmilnika [2]. Kot je bilo povedano že v poglavju 3.7 je točka izmeta v srednjem segmentu trapeznega profila, saj je tam hitrost konstanta oziroma enaka vrednosti, ki jo vpišemo. Tako prijemalo odpiramo glede na zasuk drugega sklepa J2 [v rad 13 ] v tisti točki oziroma točki izmeta. To naredimo s pomočjo funkcije»if/else«, v kateri digitalni izhod»gripper«postavimo na On ali Off, kot prikazuje slika 5.2. Istočasno postavljamo še spremenljivko»grip«, katero v nadaljevanju potrebujemo za meritev odpiranja prijemala. Spremenljivka»Gripper«ima namreč obliko podatka On ali Off, katere vrednost pa ne moremo pošiljati računalniku. Slika 5.2: Koda za odpiranje prijemala 12 SolidWorks je programski paket za računalniško podprto konstruiranje in inženirske analize. 13 rad- radian je enota za merjenje ravninskih kotov. 30

Slika 5.3: Podaljšek s prijemalom v programu SolidWorks Ker ima prijemalo določen čas odpiranja in ker že zelo mali časi pri velikih hitrostih našega giba pomenijo velike poti oz. spremembe poze izmeta, moramo čas odpiranja natančno izmeriti. Okoli žogice smo ovili bakreno žico, na prijemalo pa namestili bakrene ploščice. Na eno ploščico smo pripeljali napetost 12 V, drugo pa smo priključili na digitalni vhod robotskega krmilnika (digital_in[8]), kot je prikazano na sliki 5.6. Ob zaprtem prijemalu je tokokrog sklenjen in na digitalnem vhodu je logična enka. Ob izmetu žogice iz prijemala pa se prekine, na digitalnem vhodu pa se pojavi logična ničla. S pomočjo zanke na sliki 5.4 postavljamo spremenljivko DI8 tako, da je v primeru žogice v prijemalu vrednost spremenljivke DI8 enaka 0, ko pa žogica odleti iz prijemala pa se vrednost postavi na 1. Slika 5.4: Zanka za preverjanje stanja digitalnega vhoda Da lahko čas zakasnitve prijemala odčitamo, moramo iz robota s pomočjo postopka opisanega v poglavju 4, istočasno pošiljali podatke o odprtosti prijemala (spremenljivka»grip«), ter stanju digitalnega vhoda (spremenljivka DI8). Tako opazujemo čas, ko se spremenljivka»grip«postavil na logično enko (prijemalo odprto) in čas, ko se spremenljivka DI8 prav tako postavi na logično enko (žogica odleti iz prejemala). 31

Po analizi prejetih podatkov v orodju MATLAB (priloga 9.2), smo iz razlike med časoma ugotovili, da je čas odpiranja prijemala pri različnih hitrostih izmeta konstanten in znaša približno 0,1s (3,711 s 3,615 s=0,096 s). Slika 5.5: Čas zakasnitve odpiranja prijemala Zato ker ob hitrih gibih robot v času 0,1 s povsem spremeni svojo pozo, je zakasnitev odpiranja prijemala potrebno upoštevati. Tako nastavljamo pozo odpiranja prijemala (sklep J2), glede na hitrost pomikanja. S tem dosežemo, da žogica iz prijemala odleti vedno v isti pozi. Slika 5.6: Skica tokokroga za meritev časa odpiranja prijemala 32

Aplikacija met na koš Na sliki 5.7 vidimo zaključen sistem aplikacije meta na koš, katerega sestavlja koš, robot UR5 z dodatnim prijemalom in seveda žogica. Dodali smo še sistem za avtomatsko dostavljanje in pobiranje žogic, da se lahko metanje izvaja neprekinjeno. Na sliki je v x smeri označena samo razdalja med košem in baznim koordinatnim sistemom (d), zato je tej vrednosti potrebno prišteti 0,814 m (razdalja od baznega koordinatnega sistema do točke izmeta v x-smeri), da dobimo razdaljo D s (slika 5.1). Ker je koš dvignjen za razdaljo 0,07 m nad ravnino baznega koordinatnega sistema je višina izmeta H =1,077 m. Določitev vrednosti višine (H) in razdalje do koša najdemo v nalogi [15]. Slika 5.7: Robotska aplikacija meta na koš 33

Program Celotni končni program robota je priložen kot priloga 9.1. V sekvenci BeforeStart inicializiramo spremenljivke ter določimo točke oziroma položaje robota med katerimi poteka gib (začetna, lega dol in končna točka). Točke smo določili glede na dovoljeno območje gibanja robota zaradi omejitve okolice. Met smo namreč izvajali v laboratoriju, ki ni namenjen takšnim aplikacijam. S premikanjem v notranjih koordinatah (slika 3.6), smo dobili položaje sklepov v stopinjah [ ], katere smo morali za potrebe skriptnega jezika pretvorit v radiane [rad]. 'Tocke zacetne lege:' q1 [0, -2.87979, -1.309, -2.70526, 0.0000, 0.7000] 'Tocke spodnje lege:' q2 [0, -2.87979, -1.33648, -2.00348, 0.0000, -1,46621] 'Tocke koncne lege:' q3 [0, -1.02583, 0.5967, -1.5578, 0.0000, -1.4254] Tako je vsaka točka je predstavljena kot vektor s šestimi elementi, ki predstavljajo zasuk posameznih sklepov (baza, rama, komolec, zapestje 1, zapestje 2 in zapestje 3) v radianih. Slika 5.8: Položaji robota pri metu a) Položaj začetne lege, b) Položaj spodnje lege, c) Položaj končne lege Za dosego željene razdalje do koša potrebujemo ustrezno hitrost in točko izmeta, kar je robotu potrebno definirati. Program je zgrajen tako, da na začetku določimo potrebno hitrost vodilnega sklepa (spremenljivka v_omega) in zasuk oziroma položaj drugega sklepa (spremenljivka J2). 34

Potrebna podatka v_omega in J2 se izračunata s pomočjo orodja MATLAB v [15], pri čemer je program napisan tako, da vpišemo izmerjeno razdaljo med košem in baznim koordinatnim sistemom (d), MATLAB pa izračuna potrebni vrednosti: hitrost izmeta oziroma hitrost vodilnega sklepa v_omega [rad/s] in položaj drugega sklepa za odpiranje prijemala J2 [rad]. Ti vrednosti vpišemo v robotski program s pomočjo ukazov: Ukaz za vpis hitrosti vodilnega sklepa: v_omega:='hitrost vodilnega sklepa:' Ukaz za vpis položaja drugega sklepa: J2:= 'Položaj drugega sklepa:' Spremenljivka v1 nam podaja hitrost pomikanja v»začetno lego«in»lego dol«saj smo želeli, da se ta gib izvede počasneje kot glavni zamah meta na koš. V glavnem delu sledi koda za gibanje robota. Robot najprej izvede pomike skozi točke»waypoint«1,2,3,4,5 kjer spotoma pobere žogico (digitalni izhod»gripper«postavimo na logično 0 oziroma Off). Nato izvede pomik v lego podano s spremenljivko q1 ter počaka za nadaljevanje.»waypoint«točke so prav tako izbrane glede na okolico robota in so namenjene za premik do sistema za pobiranje žogic, kar lahko vidimo na posnetku v poglavju 6. Točke so izbrane s prestavljanjem robota v prostem teku in s shranjevanjem ustreznih točk oziroma položajev robota. MoveJ Waypoint_1 Waypoint_2 Waypoint_3 Set gripper=0ff (zapremo prijemalo oziroma poberemo žogico) Wait: 1.0 Waypoint_4 Waypoint_5 Movej(q1,v=v1) 35

Na zaslonu se s pomočjo ukaza»popup«izpiše stavek:»pritisni continue za nadaljevanje meta.«. Tako ob pritisku na tipko»continue«robot počaka 2 sekundi (ukaz»wait: 2.0«), nato pa se pomakne v točko q2 ter izvede gib movej do končne točke q3. Ukaz movej vpišemo v skriptni obliki, pri čemer definiramo končno točko q3, pospešek nastavimo na maksimum, hitrost pa zapišemo kot spremenljivko v_omega na začetku programa. Maksimalni možni pospešek je odvisen od trajektorije in obremenitve, ter v našem primeru znaša 3,3 rad/s 2. Določili smo ga eksperimentalno s povečevanjem do maksimalne vrednosti (robotski vmesnik prikaže obvestilo, da je prišlo do omejitve momentov). Z meritvami smo ugotovili, da robot dejansko pospešuje s takšnim pospeškom. Ukaz: movej(q3, a=3.3, v=v_omega) Ukaza»Popup«in»Wait«smo uporabili zaradi varnosti, da opozorimo izvajalca na izvedbo giba, ki pa je pri daljših razdaljah že zelo hiter. Tako se lahko izvajalec varno odmakne iz delovnega območja. Na koncu sledita dva paralelna programa Thread_1 in Thread_2, ki se izvajata konkurenčno z glavnim programom. Prvi je namenjen odpiranju prijemala in meritvi zakasnitve odpiranja ter je razložen v poglavju 5.2, drugi pa omogoča komunikacijo z računalnikom in je podrobno razložen v poglavju 4.3. 36

6 REZULTATI Ob končanem programu na robotu smo začeli s testiranjem oziroma metanjem žoge na koš. Da smo lahko potrdili pravilno delovanje aplikacije, je bilo potrebno narediti eksperimente na različnih razdaljah. Ob začetnih testiranjih smo ugotovili, da je za naš gib minimalna možna razdalja med košem in baznim koordinatnim sistemom dmin =160 cm. Za krajše razdalje, bi bilo potrebno prilagoditi gib oziroma spremeniti točke končne lege. Zanimala nas je tudi maksimalna možna dolžina do koša, ki znaša dmax =350 cm od baznega koordinatnega sistema. Za daljše razdalje namreč potrebujemo hitrosti, katerih robot ne zmore več. Testiranje smo tako začeli na minimalni dovoljeni razdalji (dmin) in povečevali v intervalu po 10 cm do maksimalne razdalje (dmax). Slika 6.1: Maksimalna in minimalna možna razdalja meta 37

Potrebni oziroma izračunani podatki za metanje žoge na koš, se nahajajo v nalogi [15]. Te podatke nato sami vpišemo v robotski program s pomočjo ukazov opisanih v poglavju 5.4. V tabeli 1 so prikazani rezultati metanja za pet različnih razdalj. Ostale rezultate najdemo v diplomi [15]. Tabela 1: Rezultati metanja na pet različnih razdalj: VHODNI/VPISANI PODATKI Željena dolžina: IZRAČUNANI PODATKI Hitrost vodilnega sklepa: Položaj drugega sklepa: IZMERJENI PODATKI Dosežena razdalja: d[m] v_omega[rad/s] v_omega[ /s] J2[rad] J2[ ] [m] 1.6 1.980 113.434-2.197-125.860 1.58 2 2.172 124.418-2.200-126.043 2.05 2.5 2.394 137.177-2.225-127.490 2.51 3 2.601 149.044-2.175-124.621 3.05 3.5 2.795 160.165-2.137-122.439 3.49 Rezultati naših primerov kažejo, da prihaja pri meritvah (izmerjeni rezultati) do minimalnih razlik reda ±5 cm. Ob podrobnejši analizi v nalogi [15] vidimo, da robot na kakšni razdalji koša ne zadane, kar pa je z vidika tekmovanja zanimivo. Namreč v primeru, da bi človek in robot izmenično metala na koš in tekmovala kdo večkrat zadane, nebi bilo zanimivo, če bi robot vedno zmagal. Tako ima v našem primeru človek vsaj nekakšno možnost, da robota premaga. Posnetek aplikacije meta žoge na koš je dosegljiv na spletu, kjer vidimo primer na razdalji d =2,5 in 3,5 m. Na začetku izvajalec izmeri razdaljo med košem in baznim koordinatnim sistemom ter vpiše vrednost v orodje MATLAB, kjer se izvedejo vsi potrebni izračuni. Sledi prepis podatkov v robotski program in izvedba meta. Izračunani podatki iz posnetka so prav tako na voljo v tabeli 1. Povezava do posnetka: https://www.youtube.com/watch?v=4kf852hcl40&t=4s 38

7 SKLEP V okviru diplomske naloge smo izdelali aplikacijo, kjer robot meče žogo na koš postavljen na poljubni razdalji. Ker smo se prvič srečali s takšno vrsto robota, smo ga morali na začetku spoznati. Najprej smo s pomočjo priročnikov [13, 14] analizirali robota in se spoznali z načinom programiranja. Ugotovili smo, da je programiranje zaradi uporabniškega vmesnika»polyscope«dokaj enostavno. Vmesnik nam omogoča uporabo raznih ukazov, kar bistveno poenostavi programiranje. Tako smo začeli razvijati program, ki omogoča izvedbo giba in zadetek žoge v obroč koša. Eden ciljev diplomske naloge je bil tudi ta, da robot izvede gib čim bolj podoben človeški roki med metom, kar nam je z uporabo giba movej tudi uspelo. Da pa smo lahko žogo pri metu v željeni točki izpustili, smo potrebovali nekakšno orodje, ki to omogoča. Uporabili smo prijemalo GIMATIC MPPM 1 606 [2], s katerim smo lahko žogo prijeli in jo v ustrezni točki izmeta izpustili. Za dosego željene razdalje do koša, potrebujemo v točki izmeta ustrezno hitrost in kot izmeta. Ker žoga pri metu opravi gibanje imenovano poševni met, lahko s pomočjo formul v nalogi [15] izračunamo potrebna podatka. Tako imamo odvisnost med razdaljo do koša in hitrostjo izmeta, kar pomeni, da lahko met izvajamo na različne razdalje. S pomočjo izračunov v nalogi [15], smo tako dobili ustrezne vhodne podatke za naš robotski program. Uspelo nam je doseči dovolj veliko hitrost, da je robot zmožen vreči žogo do razdalje 3,5 m od baznega koordinatnega sistema, kar je približno 4,3 m od točke izmeta. Tako smo izpolnili še en zastavljen cilj in sicer, da je razdalja meta zadovoljiva in zanimiva za gledalce. Z zaključitvijo diplomske naloge smo zelo zadovoljni, saj nam je uspelo doseči vse zastavljene cilje. Na začetku je naloga izgledala zelo enostavna, vendar se ja izkazalo, da je pri tako specifični aplikaciji potrebno upoštevati veliko parametrov, na katere na začetku nismo niti pomislili. Verjetno bi bilo aplikacijo lažje izvesti s kakšnim drugim robotom, ki je namenjen hitrejšim gibom, vendar kljub temu menimo, da smo se z robotom UR5 odlično odrezali. 39

Aplikacija ponuja še veliko možnosti za nadgradnjo. Trenutno se namreč vsi potrebni preračuni izvedejo na računalniku, izvajalec pa jih nato ročno prepiše v robotski program. Ker smo pokazali, da robot omogoča komunikacijo z računalnikom, bi lahko izračunane podatke pošiljali preko Ethernet povezave. Prav tako je zelo zamudno ročno merjenje razdalje med košem in robotom, kar bi lahko izvedli s pomočjo senzorjev razdalje ali pa kar s strojnim vidom, ki bi zaznal položaj koša v okolici. 40

8 VIRI IN LITERATURA [1] Python Socket Connection [splet], Dosegljivo: https://www.tutorialspoint.com/python/python_networking.htm [Datum dostopa: 3.8.2017]. [2] MPPM PINZE ELETTRICHE PARALLELE MECHATRONICS GIMATIC [splet], Dosegljivo: http://www.gimaticusa.com/pdfs/electric/mppm.pdf [Datum dostopa: 9.7.2017]. [3] Python 2.7.0 Release Python.org [splet], Dosegljivo: https://www.python.org/download/releases/2.7/. [Datum dostopa: 8.7.2017]. [4] The Python Tutorial Python 2.7.13 documentation [splet], Dosegljivo: https://docs.python.org/2/tutorial/. [Datum dostopa: 8.7.2017]. [5] UR5 - The flexible and collaborative robotic arm [splet], Dosegljivo: https://www.universal-robots.com/products/ur5-robot/ [Datum dostopa: 7.7.2017]. [6] UR Script: Commands via Socket connection Zacobria Universal-Robots community - a help forum with hints tips and how to use universal robot CB2 [splet], Dosegljivo: http://www.zacobria.com/universal-robots-zacobria-forum-hints-tips-howto/script-via-socket-connection/. [Datum dostopa: 7.7.2017]. [7] UNVERSAL ROBOTS. Technical details [pdf], Dosegljivo: https://www.universalrobots.com/media/1514597/101081_199901_ur5_technical_details_web_a4_art03 _rls_eng.pdf [Datum dostopa: 2.8.2017]. [8] Industrijski roboti [splet], Dosegljivo: http://www.industrijskiroboti.si/ [Datum dostopa: 2.8.2017] [9] Aerodynamics and Biomechanics of the Free Throw [splet], Dosegljivo:https://www.researchgate.net/publication/227232435_Aerodynamics_and_ Biomechanics_of_the_Free_Throw [Datum dostopa: 2.8.2017] [10] BENEFITS OF USING COLLABORATIVE ROBOTS [splet], Dosegljivo: http://www.acieta.com/blog/benefits-using-collaborative-robots/ [Datum dostopa: 2.8.2017] [11] Universal Robots. User manual [pdf], Dosegljivo: https://www.universalrobots.com/media/8704/ur5_user_manual_gb.pdf [Datum dostopa: 3.8.2017] [12] ROBOTICA files [splet], Dosegljivo: http://wwwlar.deis.unibo.it/people/cmelchiorri/files_robotica/rim_09_traj.pdf [Datum dostopa: 4.8.2017] [13] Priročnik PolyScope, različica 3.1, UNIVERSAL ROBOTS, 2015 [14] Priročnik URScript Programming Language, različica 1.8, UNIVERSAL ROBOTS, 2013 [15] Picej, A. (2017). DOLOČANJE GIBANJA 6-OSNEGA KOLABORATIVNEGA ROBOTA UR5 ZA MET NA KOŠ., Maribor: Univerza v Mariboru, Fakulteta za strojništvo. 41