Upload
others
View
17
Download
1
Embed Size (px)
Citation preview
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Š
Diplomsko delo
univerzitetnega študijskega programa 1. stopnje
Mehatronika
Maribor, september 2017
PROGRAMIRANJE KOLABORATIVNEGA ROBOTA UR5
ZA MET NA KOŠ
Diplomsko delo
Študent: Alen KOLMAN
Študijski program: univerzitetni študijski program 1. stopnje Mehatronika
Mentor FS: izr. prof. dr. Karl GOTLIH
Mentor FERI:
izr. prof. dr. Aleš HACE
Maribor, september 2017
II
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: ________________________
III
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.
IV
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.
V
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.
VI
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
VII
Robotski program ............................................................................. 42
MATLAB program za meritev časa odpiranja prijemala ..................... 44
MATLAB program računanje skaliranih podatkov pri trapeznem profilu
45
VIII
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
IX
UPORABLJENI SIMBOLI
𝐷𝑠 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]
�̈�𝑚𝑎𝑥 maksimalna vrednost pospeška, ki ga omogoča robot v [rad/s2]
�̇�𝑚𝑎𝑥 maksimalna vrednost hitrosti, ki jo omogoča robot v[rad/s]
�̈�𝑖 skaliran pospešek i-tega sklepa v [rad/s2]
�̇�𝑖 skalirana hitrost i-tega sklepa v [rad/s]
𝜃 kot izmeta v [°]
rad enota za merjenje ravninskih kotov
° kotna stopinja je enota za merjenje kotov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
1
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
2
Ž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]. Izračunane podatke nato
prepišemo v robotski program in izvedemo met.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
3
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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
4
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].
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
5
Slika 2.1: Komponente robotskega sistema
Slika 2.2: Koordinatni sistemi robota
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
6
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 Etherneta1 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
7
V primeru dodatnega orodja je robotu potrebno nastaviti novo točko orodja - TCP2 . 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
8
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
9
Grafično okno vmesnika
Uporabniški vmesnik »PolyScope« omogoča grafičen prikaz robota na zaslonu. 3D3 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
10
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
11
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].
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
12
➢ 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 sklepa4 (rad/s2)
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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
13
➢ 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/s2)
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].
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
14
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
15
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 °/s2. Č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/s2 [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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
16
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 (𝑡𝑎) in zaviranja (𝑡𝑑)
trajata enako (𝑡𝑎 = 𝑡𝑑), zato je profil gibanja simetričen, kot prikazuje slika 3.8 [12].
Slika 3.8: Trapezni profil hitrosti
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
17
Glavni gib oziroma met žoge na koš se začne v začetnem času (𝑡𝑖), 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 𝑡𝑖 in 𝑡𝑓 (slika 3.8).
Trapezni profil lahko opišemo tudi s pomočjo enačbe 3.1, ki predstavlja položaj robota v
poljubnem času (𝑡) za vse segmente gibanja. Prva vrstica enačbe opiše fazo pospeševanja,
druga fazo enakomernega gibanja in tretja fazo zaviranja [12].
𝑞(𝑡) =
{
𝑞𝑖 +
1
2�̈�𝑚𝑎𝑥(𝑡 − 𝑡𝑖)
2 , 𝑡𝑖 ≤ 𝑡 ≤ 𝑡𝑖 + 𝑡𝑎
𝑞𝑖 + �̈�𝑚𝑎𝑥𝑡𝑎 (𝑡 − 𝑡𝑖 −𝑡𝑎
2) , 𝑡𝑖 + 𝑡𝑎 ≤ 𝑡 ≤ 𝑡𝑓 − 𝑡𝑎
𝑞𝑓 −1
2�̈�𝑚𝑎𝑥(𝑡𝑓 − 𝑡 − 𝑡𝑖)
2 , 𝑡𝑓 − 𝑡𝑎 ≤ 𝑡 ≤ 𝑡𝑓
(3.1)
Kjer je:
𝑡𝑖 [s] – začetni čas giba
𝑡𝑓 [s] – končni čas giba
𝑡 [s] – poljubni čas giba med 𝑡𝑖 in 𝑡𝑓
𝑡𝑎 [s] – čas pospeševanja
𝑞𝑖 [rad] – položaj sklepa robota v začetnem času
𝑞𝑓 [rad] – položaj sklepa robota v končnem času
𝑞(𝑡) [rad] – položaj sklepa robota v času t
�̈�𝑚𝑎𝑥 [rad/s2] – maksimalna vrednost pospeška, ki ga omogoča robot
Za izračun enačbe 3.1 potrebujemo čas pospeševanja (𝑡𝑎) in končni čas giba robota (𝑡𝑓). Č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].
𝑡𝑎 =�̇�𝑚𝑎𝑥
�̈�𝑚𝑎𝑥 (3.2)
Kjer je:
�̇�𝑚𝑎𝑥 [rad/s] – maksimalna vrednost hitrosti, ki jo omogoča robot
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
18
Končni čas giba robota pa izračunamo s pomočjo enačbe 3.5.
�̇�𝑚𝑎𝑥(𝑇 − 𝑡𝑎) = 𝑞𝑓 − 𝑞𝑖 = 𝐿 =≫ (𝑇 − 𝑡𝑎) =𝐿
�̇�𝑚𝑎𝑥 (3.3)
𝑇 =(𝐿 ∗ �̈�𝑚𝑎𝑥)+(�̇�𝑚𝑎𝑥
2)
�̈�𝑚𝑎𝑥∗ �̇�𝑚𝑎𝑥=
((𝑞𝑓−𝑞𝑖) ∗ �̈�𝑚𝑎𝑥)+(�̇�𝑚𝑎𝑥2)
�̈�𝑚𝑎𝑥∗ �̇�𝑚𝑎𝑥 (3.4)
𝑡𝑓 = 𝑡𝑖 + 𝑇 =≫ 𝑡𝑓 = 𝑡𝑖 +((𝑞𝑓−𝑞𝑖) ∗ �̈�𝑚𝑎𝑥)+(�̇�𝑚𝑎𝑥
2)
�̈�𝑚𝑎𝑥∗ �̇�𝑚𝑎𝑥 (3.5)
Kjer je:
𝑇 [s] – čas trajanja pomika (interval)
𝐿 [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 (𝑡𝑎) in
časovni interval pomika (𝑇), 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.
�̇�𝑖 =𝐿𝑖
𝑇−𝑡𝑎=
𝐿𝑖 𝐿𝑉
�̇�𝑚𝑎𝑥
=𝐿𝑖
𝐿𝑉∗ �̇�𝑚𝑎𝑥 (3.6)
�̈�𝑖 =𝐿𝑖
𝑡𝑎∗(𝑇−𝑡𝑎)=
𝐿𝑖 �̇�𝑚𝑎𝑥�̈�𝑚𝑎𝑥
(𝐿𝑉
�̇�𝑚𝑎𝑥)=
𝐿𝑖
𝐿𝑉∗ �̈�𝑚𝑎𝑥 (3.7)
Kjer je:
�̈�𝑖 [rad/s2] – skaliran pospešek i-tega sklepa
�̇�𝑖 [rad/s] – skalirana hitrost i-tega sklepa
𝐿𝑖 [rad] – zasuk i-tega sklepa med gibom
𝐿𝑉 [rad] – zasuk vodilnega sklepa med gibom
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
19
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 MATLAB5
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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
20
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 °
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
21
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 (𝐿𝑉 = 𝐿3, 𝑡𝑎 = 𝑡𝑎3, 𝑇 = 𝑇3)
➢ Pot, ki jo med metom opravi »rama« : 𝐿2 = | 𝑞𝑓2 − 𝑞𝑠2| = 106,25 ° = 1,854 rad
➢ Pot, ki jo med metom opravi »komolec« : 𝐿3 = | 𝑞𝑓3 − 𝑞𝑠3| = 110,78 ° = 1,933 rad
➢ Pot, ki jo med metom opravi »zapestje 1« : 𝐿4 = | 𝑞𝑓4 − 𝑞𝑠4| = 25,55 ° = 0,446 rad
➢ Pot, ki jo med metom opravi »zapestje 3« : 𝐿6 = | 𝑞𝑓6 − 𝑞𝑠6| = 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.
𝑡𝑎3 =�̇�𝑚𝑎𝑥
�̈�𝑚𝑎𝑥 =
3,14 𝑟𝑎𝑑/𝑠
3,3 𝑟𝑎𝑑/𝑠2= 0,95 𝑠 (3.8)
𝑇3 =((𝑞𝑓3−𝑞𝑠3) ∗ �̈�𝑚𝑎𝑥)+(�̇�𝑚𝑎𝑥
2)
�̈�𝑚𝑎𝑥∗ �̇�𝑚𝑎𝑥=
(1,933 𝑟𝑎𝑑 ∗ 3,3 𝑟𝑎𝑑/𝑠2)+(3,14 𝑟𝑎𝑑/𝑠)2
3,3 𝑟𝑎𝑑/𝑠2∗ 3,14 𝑟𝑎𝑑/𝑠= 1,567 𝑠 (3.9)
Na koncu s pomočjo enačb 3.10 in 3.11 izračunamo še hitrosti in pospeške za preostale osi.
�̇�𝑖 =𝐿𝑖
𝐿3∗ �̇�𝑚𝑎𝑥 (3.10)
�̈�𝑖 =𝐿𝑖
𝐿3∗ �̈�𝑚𝑎𝑥 (3.11)
S pomočjo orodja MATLAB (priloga 9.3), smo naredili izračune in dobili naslednje vrednosti
hitrosti ter pospeškov:
➢ Rama: �̇�2 = 3,013 rad/s �̈�2 = 3,165 rad/s2;
➢ Zapestje 1: �̇�4 = 0,725 rad/s �̈�4 = 0,761 rad/s2;
➢ Zapestje 3: �̇�6 = 0,067 rad/s �̈�6 = 0,071 rad/s2;
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
22
4 POVEZAVA Z RAČUNALNIKOM
Robota je možno povezati tudi z osebnim računalnikom, kar naredimo preko Ethernet mreže
s TCP/IP6 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 »Python7« 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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
23
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 kabla8 povežemo na
omrežno stikalo, ki robotu in računalniku dodeli ustrezen IP naslov9 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 .
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
24
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
25
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
26
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 »string10«, 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)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
27
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
28
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 Excel11 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
29
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 𝐷𝑠 in višini 𝐻 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 (𝒗) in kot izmeta (𝜃) za met na določeno razdaljo.
Slika 5.1: Trajektorija poševnega meta za naš robotski met
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
30
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 SolidWorks12 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 rad13] 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
31
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).
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
32
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
33
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 (𝑑), 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 𝐷𝑠 (slika 5.1). Ker je koš dvignjen za razdaljo 0,07 m nad ravnino baznega
koordinatnega sistema je višina izmeta 𝐻 =1,077 m. Določitev vrednosti višine (𝐻) in razdalje
do koša najdemo v nalogi [15].
Slika 5.7: Robotska aplikacija meta na koš
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
34
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).
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
35
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 (𝑑), 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)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
36
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/s2. 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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
37
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
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
38
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:
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
𝑑 =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
VHODNI/VPISANI PODATKI IZMERJENI PODATKI
Željena dolžina: 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
IZRAČUNANI PODATKI
Hitrost vodilnega sklepa: Položaj drugega sklepa:
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
39
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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
40
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.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
41
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-how-
to/script-via-socket-connection/. [Datum dostopa: 7.7.2017].
[7] UNVERSAL ROBOTS. Technical details [pdf], Dosegljivo: https://www.universal-
robots.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.universal-
robots.com/media/8704/ur5_user_manual_gb.pdf [Datum dostopa: 3.8.2017]
[12] ROBOTICA files [splet], Dosegljivo: http://www-
lar.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Š. Diplomsko delo, Maribor: Univerza v Mariboru, Fakulteta za strojništvo.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
42
9 PRILOGE
Robotski program
BeforeStart var_1≔socket_open("164.8.231.150",30002) var_5≔0 i≔1 v1≔0.5 Set Gripper=0n grip=0 DI8=0 '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] v_omega:='Hitrost vodilnega sklepa:' J2:= 'Položaj drugega sklepa(odpiranje prijemala):' Robot Program MoveJ Waypoint_1 Waypoint_2 Waypoint_3 Set gripper=0ff Wait: 1.0 Waypoint_4 Waypoint_5 MoveJ(q1,v=v1) Popup var_5≔1 Wait: 2.0 socket_send_string("start")
movej(q2, v=v1) movej(q3, a=3.3, v=v_omega) MoveJ
Waypoint_6 socket_close()
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
43
Thread_1 pose2≔get_joint_positions() joint2=pose2[1] If var_5≟1 If joint2≥ J2 Set Gripper=On grip=1 Else Set Gripper=Off
grip=0
If digital_in[8] DI8=0
Else DI8=1
sync() Thread_2 var_2≔socket_read_ascii_float(3) If var_2[1]≟20 tcp_s≔get_actual_tcp_speed()
tcp_p≔get_actual_tcp_positions() joint_s≔get_actual_joint_speed()
joint_p ≔get_actual_joint_positions()
tcp_speed_x≔tcp_s[0] tcp_speed_y≔tcp_s[1] tcp_speed_z≔tcp_s[2] tcp_p_x≔tcp_p[0] tcp_p_y≔tcp_p[1] tcp_p_z≔tcp_p[2] j2=joint_s[1] j3=joint_s[2]
j4=joint_s[3] j6=joint_s[5] rob=[ tcp_speed_x, tcp_speed_y, tcp_speed_z, tcp_p_x, tcp_p_y, tcp_p_z, j2, j3, j4, j6] meritev= [grip, DI8]
socket_send_string(rob) 'socket_send_string(meritev) '
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
44
MATLAB program za meritev časa odpiranja prijemala
%PRIDOBITEV PODATKOV O ODPRTJU PRIJEMALA IN PREKINITVI TOKOKROGA %==========================================================================
%1. podatek DI8 -tokokrog %2. podatek grip -odprtje prijemala
%Pridobitev podatkov iz meritev A=xlsread('cas_odpiranja','3.5m'); %pridobimo podatke iz Excel datoteke DI8=A(:,1); %prvi stolpec iz datoteke vpisujemo v spremenljivko DI8 grip=A(:,2); %drugi stolpec iz datoteke vpisujemo v spremenljivko grip
%Čas oziroma x-os t=linspace(0,10.434,1300); %na x osi razporedimo 1300 podatkov
%Izris grafa plot(t,DI8,'b','LineWidth',2) %Izris spremenljivke DI8 hold on plot(t,grip,'r','LineWidth',2) %Izris spremenljivke grip grid legend('DI8','grip') %legenda ylabel('signal [0 ali 1]') %y os xlabel('cas [s]') %x os
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
45
MATLAB program računanje skaliranih podatkov pri trapeznem profilu
%PODATKI IZ HITROSI SKLEPI in JOINT POSITIONS format short
%-------------------------------------------------------------- %ZAČNEMO POSPEŠEVAT PRI 4.9 SEKUNDE - %VREDNOSTI IZ DATOTEKE HITROST SKLEPI t_0=4.9; %čas ko začne pospeševat(s) t_1=5.647; %čas ko konča pospeševat in začne enakomerno(s) t_2=5.687; %čas ko konča enakomerno in začne zavirat(s) t_f=6.467; %čas ko konča zavirat(s) %-------------------------------------------------------------- %ČAS ZAVIRANJA IN POSEPŠEVANJA (STA ENAKA): ta=t_1-t_0; %čas pospeševanja(s) td=ta; %čas zaviranja(s) % td=tf-t2 %čas zaviranja(s) %-------------------------------------------------------------- %ZAČNEMO POSPEŠEVAT PRI 0 SEKUNDE t0=0; %čas ko začne pospeševat(s) ta; %%čas ko konča pospeševat in začne enakomerno(s) tf_ta=t_f-ta-t_0; %čas ko konča enakomerno in začne zavirat (s) tf=t_f-t_0; %čas ko konča zavirat(s)
T=tf-t0; %čas trajanja pomika(s) Te=tf_ta-ta; %čas trajanja enakomernega gibanja(s)
%-------------------------------------------------------------- %VREDNOSTI IZ DATOTEKE JOINT POSITIONS %-------------------------------------------------------------- %Rama: vmax1=1.99; %odčitana hitrost iz grafa(rad/s)
qi2=(-165*pi)/180; %zasuk v času "0s"(rad) qi12=(-129.4*pi)/180; %zasuk v času ta(rad) fi13=(-91.94*pi)/180; %zasuk v času tf_ta(rad) qf2=(-58.75*pi)/180; %zasuk v času tf(rad) L2=abs(qi2-qf2); %CELOTEN POMIK(ZASUK)(rad)
% qdot_v1=(qf1-qi1)/(tf-ta); %izračunana končna hitrost(rad/s) % qdot_a1=(4*L1)/(tf*tf); %minimalna vrednost pospeška(rad/s2)->
qdot_a>=vrednost
%-------------------------------------------------------------- %Komolec: vmax2=2.09; %odčitana hitrost iz grafa(rad/s)
qi3=(-76.57*pi)/180; %zasuk v času "0s"(rad) fi22=(-39.47*pi)/180; %zasuk v času ta(rad) fi23=(-0.392*pi)/180; %zasuk v času tf_ta(rad) qf3=(34.2*pi)/180; %zasuk v času tf(rad) L3=abs(qi3-qf3) %CELOTEN POMIK(ZASUK)(rad)
% qdot_v2=(qf2-qi2)/(tf-ta); %izračunana končna hitrost(rad/s) % qdot_a2=(4*L2)/(tf*tf); %minimalna vrednost pospeška(rad/s2)->
qdot_a>=vrednost
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
46
%-------------------------------------------------------------- %Zapestje 1: vmax3=0.465; %odčitana hitrost iz grafa(rad/s)
qi4=(-114.8*pi)/180; %zasuk v času "0s"(rad) fi32=(-106*pi)/180; %zasuk v času ta(rad) fi33=(-97*pi)/180; %zasuk v času tf_ta(rad) qf4=(-89.25*pi)/180; %zasuk v času tf(rad) L4=abs(qi4-qf4); %CELOTEN POMIK(ZASUK)(rad)
% qdot_v3=(qf3-qi3)/(tf-ta); %izračunana končna hitrost(rad/s) % qdot_a3=(4*L3)/(tf*tf); %minimalna vrednost pospeška(rad/s2)->
qdot_a>=vrednost
%-------------------------------------------------------------- %Zapestje 3: vmax4=0.0423; %odčitana hitrost iz grafa(rad/s)
qi6=(-84*pi)/180; %zasuk v času "0s"(rad) fi42=(-83.22*pi)/180; %zasuk v času ta(rad) fi43=(-82.36*pi)/180; %zasuk v času tf_ta(rad) qf6=(-81.63*pi)/180; %zasuk v času tf(rad) L6=abs(qi6-qf6); %CELOTEN POMIK(ZASUK)(rad)
% qdot_v4=(qf4-qi4)/(tf-ta); %izračunana končna hitrost(rad/s) % qdot_a4=(4*L4)/(tf*tf); %minimalna vrednost pospeška(rad/s2)->
qdot_a>=vrednost
%-------------------------------------------------------------- % POSTOPEK B( DOLOČIMO NAJVEČJO POTOVALNO HITROST IN NAJVEČJO VREDNOST % POSPEŠKA) %-------------------------------------------------------------- qdot_max=pi; %maksimalna vrednost hitrosti sklepa(rad/s)
za UR5 gdot_dot_max=3.3; %maksimalna ala vrednost pospeška
sklepa(rad/s2) za naš gib ta_B=qdot_max/gdot_dot_max; %maksimalna čas trajanja pospeševanja
%SKLEP POTEBUJE OB MAKSIMALNIH HITRPSTIH TAKŠEN ČAS DA PREPOTUJE RAZDALJO L T2_B=((L2*gdot_dot_max)+(qdot_max*qdot_max))/(gdot_dot_max*qdot_max); %čas
potovanja pri max vrednostih(rad) T3_B=((L3*gdot_dot_max)+(qdot_max*qdot_max))/(gdot_dot_max*qdot_max); %čas
potovanja pri max vrednostih(rad T4_B=((L4*gdot_dot_max)+(qdot_max*qdot_max))/(gdot_dot_max*qdot_max); %čas
potovanja pri max vrednostih(rad T6_B=((L6*gdot_dot_max)+(qdot_max*qdot_max))/(gdot_dot_max*qdot_max); %čas
potovanja pri max vrednostih(rad
Lmax=(qdot_max*qdot_max)/(gdot_dot_max); %maksimalna vrednost za obstoj
potovalnega segmenta(rad)->Lmax>=Li %sicer se celotna pot opravi med %pospeševanjem in zaviranjem %T=2*ta_B----->POGOJ DRŽI
%IZRAČUNAMO VREDNOSTI ZA OS Z NAJVEČJIM POMIKOM (L2)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
47
L3;
%NAJVEČJI POMIK OPRAVI SKLEP KOMOLEC - L(rad) ta3_B=ta_B
%IZRAČUNA SE ČAS POSPEŠEVANJA ZA L3 (s) T3=((L3*gdot_dot_max)+(qdot_max*qdot_max))/(gdot_dot_max*qdot_max)
%IZRAČUNA SE ČAS POTOVANJA ZA L3 (s)
% gdot_dot_3=L3/(ta3_B*(T3-ta3_B)) %izračun pospeška za sklep
KOMOLEC % qdot_3=L3/(T3-ta3_B) %izračun hitrosti za sklep
KOMOLEC
%NA PODLAGI PARAMETROV ZA OS L2 SE IZRAČUNAJO HITROSTI IN POSPEŠKI OSTALIH
OSI
qdot_2=(L2/L3)*qdot_max %izračun hitrosti za sklep RAMA gdot_dot_2=(L2/L3)*gdot_dot_max %izračun pospeška za sklep RAMA
qdot_4=(L4/L3)*qdot_max %izračun pospeška za sklep
ZAPESTJE 1 gdot_dot_4=(L4/L3)*gdot_dot_max %izračun hitrosti za sklep
ZAPESJTE 1
qdot_6=(L6/L3)*qdot_max %izračun pospeška za sklep RAMA
ZAPESJTE 3 gdot_dot_6=(L6/L3)*gdot_dot_max %izračun hitrosti za sklep
ZAPESJTE 3