prilog analizi tehnike simuliranja robota u 3d · pdf fileodređivanje orijentacije u prostoru...

84
UNIVERZITET U BIHAĆU TEHNIČKI FAKULTET BIHAĆ BAHRUDIN HRNJICA PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D DIPLOMSKI RAD Bihać, Maj 2001

Upload: phungminh

Post on 15-Feb-2018

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

0

UNIVERZITET U BIHAĆU TEHNIČKI FAKULTET

BIHAĆ

BAHRUDIN HRNJICA

PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D

DIPLOMSKI RAD Bihać, Maj 2001

Page 2: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

1

PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D Ključne riječi: Robot, Rotacijska Matrica, Homogene transformacije, Simulacija,

Modeliranje, Objektno orijentisani programski jezik, RoBoSIM. SAŽETAK. Ovaj Diplomski rad obrađuje teme iz simuliranja i modeliranja Industijskih robota u 3D. Obrađeni su opći pojmovi o Modeliranju i Simuliranju Industrijskih robota, direktni i inverzni kinematički problem, Objektno orijentisano programiranje, te RoBoSIM aplikacija za simuliranje SCARA robota. RoBoSIM aplikacija je Windowsova 32-bitna aplikacija koja je kompajlirana sa zadnjom verzijom Microsoftovog Visual C++ kompajlera. Modeliranje je proces koji prethodi simulaciji te su u njemu obrađeni opći modeli pri simuliranju. Simulacija je proces oponašanja realnog procesa kojim se oponaša proces prije same realizacije. To nam omogućava da utvrdimo da li je naš proces u istinu isplativ i kako se ponaša. ADDITION TECHNICS ANALISYS OF THE ROBOT SIMULATION IN 3D Key words: Robot, Matrix rotation, Homogeneous transformation, Simulation,

Modeling, Object oriented programming language, RoBoSIM. SUMMARY This Diploma Word introduces about Simulation of the Industrial Robots in 3D. In the work described the Modeling and Simulation of Industrial robots, Direct and Inverse kinematics problem as well as Object oriented programming and RoBoSIM application for simulation of the SCARA robot. RoBoSIM application is the Windows 32-bit application that is compiled with the newest version of the Microsoft Visual C++ compiler. Modeling is a process, which leads to simulation, and in this work elaborated standard models. Simulation is a process of simulation of the real process before the exploitation. It provides the behavior and expenses of the process.

Page 3: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

2

SADRŽAJ.

1.Uvod 4 1.1. Opći pojmovi u kinematici 4 2. Koordinatni sistemi Transormacije 7 2.1. Generalni opis koordinatnih sistema 7 2.1.1. Određivanje položaja materijalne tačke 7 2.1.2. Određivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 2.1.5. Roll-Pitch-Yaw uglovi ( uglovi obrtanja-skretanja – valjanja) 14 2.1.6. Rotacijski vektor i rotacijski ugao 15 2.2. Homogene transformacije 17 3. Kinematika Robota 19 3.1. Denavit-Hartenbergov zapis koordinatnog sistema 19 3.1.1. Klasični cilindrični robot 22 3.2. Direktni kinematički problem 24 3.2.1. Direktni kinematički problem za SCARA robot 25 3.3. Inverzni kinematički problem 29 3.3.1. Inverzni kinematički problem za SCARA robot 29 3.4. Jacobieva matrica 33 4. Modeliranje za simulaciju 35 4.1. Geometrijsko modeliranje 35 4.1.1. Tehnike modeliranja 35 4.1.2.Geometrijski modeli 38 4.1.3.Metode predstavljanja 39 4.1.4.Površine slobodnog oblika 40 4.2. Modeliranje okoline 41 4.2.1.Struktura 42 4.2.2.Odnosi (veze) 43 4.2.3. Semantičko modeliranje 43 4.3. Modeliranje ćelija 44 4.3.1. Tok materijala 44 4.3.2.Prikaz 45 5. Uvod u Simulaciju 47 5.1. Simulacija robota 47 5.1.1. Kretanje robota 48 5.1.1. Generiranje programa robota 49 5.1.2. Testiranje programa robota 51 5.1.3. Dalja simulacija 52 5.2. Sistemi Simulacije 52 6. Objektno orijentisano programiranje 55 6.1. Programski jezik C++ 59 6.2. Kratki pregled osnovnih koncepata jezika C++ 60 6.3. Microsoft Visual C++ 61 6.4. OpenGL – Otvorene grafičke biblioteke 62

Page 4: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

3

7. RoBoSIM program za simuliranje Robota 65 7.1. Dijagram klasa i objekata 66 7.2. Glavne funkcije RoBoSIM aplikacije 67 7.3. Interfeis aplikacije RoBoSIM 73 7.4. Izlazne vrijednosti aplikacije 79 7.5. ostali podaci o aplikaciji te način instaliranja 80 ZAKLJUČAK 81 LITERATURA 82 Web stranice korištene u Diplomskog radu 83

Page 5: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

4

1. UVOD 1.1. Opći pojmovi u kinematici Kinematiku definišemo kao nauku o kretanju tijela. Ona je ograničena na opis čisto geometrijskog kretanja, odnosno orijentaciju, brzinu i ubrzanje. Sile i momenti koji su uzročnici svakog kretanja u kinematici se ne pretpostavljaju. Jedna od najvažnijih primjena kinematike u tehnici je, primjena kinematike u robotici. U robotici, kinematički opis manipulatora i njegovog kretanja, koje je unaprijed zadano, upotrebljen je za osnovnu jednačinu kontrole članova manipulatora.

Slika 1.1: Planarni dvočlani mehanizam

Osnovni problemi opisa kretanja biće izloženi osvrtom na sliku 1.1. planarnog dvočlanog mehanizma. Pozicija oba člana mehanizma se može opisati preko uglova ΘΘΘΘ1, ΘΘΘΘ2. Pretpostavlja se da je kretanje druge (vanjske) tačke člana 2 po dužini duži AB sa konstantnom brzinom v. Prvi problem je da za bilo koje uglove ΘΘΘΘ1, ΘΘΘΘ2 , potrebno je naći korespondirajuće koordinate (x,y) položaja u kartezijskom prostoru. Ovaj problem se često zove direktni kinematički problem. Njegovo rješenje nam obezbjeđuje transformaciju iz prostora članova mehanizma u kartezijski prostor. Inverzni kinematički problem izračunava skup svih mogući pozicija uglova ΘΘΘΘ1, ΘΘΘΘ2, za dati polozaj (x,y) u kartezijskom prostoru. Njegovo rješenje je transformacija iz kartezijskog u prostor čalna. Na osnovu izloženog i slike 1.1. očigledno je da za dvije različite pozicije uglova ΘΘΘΘ1, ΘΘΘΘ2 i - ΘΘΘΘ1, - ΘΘΘΘ2 rezultiraju jednu te istu tačku u kartezijskom prostoru (x,y). Ovdje zaključujemo da je za inverzni kinematički problem moguće više od jednog rješenja. Dvočlani mehanizam prikazan na slici ima ograničenu mogućnost kretanja. Prostor u kome mehanizam djeluje odnosno prostor koji može biti dostupan mehanizmu zove se

Page 6: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

5

radni prostor. Unutar radnog prostora ovog mehanizma uvijek postoje dva rješenja inverznog kinematičkog problema. Za dvočlani mehanizam sa slike jednostavna geometrija dovodi nas do valjanih rješenja ovog problema. Konvencionalna industrija robota je daleko kompleksnija. Obično šestočlani mehanizmi u 3D prostoru zadovoljavaju industrijske potrebe. Za objašnjavanje ovakvih mehanizama upozna ćemo se sa određenim metodama i tehnikama za njihovo objašnjavanje. Prije nego što krenemo u njihovu analizu definišimo osnovne pojmove. Manipulatori sadrže kruta tijela ( članke ), koji su međusobno povezani pomoću zglobova. Svaki od zglobova dozvoljava relativno kretanje između susjednih članova. Roboti su često opskrbljeni sa senzorima za mjerenje relativnih pozicija dva susjedna člana. U robotici se koriste revolutni ili rotacijski te prizmatični ili translatorni zglobovi. Ugao zgloba opisuje relativni pomak između rotacijskih zglobova, dok pomak zgloba određuje pomjeranje između translacijskih zglobova. Da bi opisali složeni sistem zglobova poput sfernih zglobova, ovakvi zglobovi su uglavnom zamjenjeni sa ekvivalentnim translacijskim odnosno rotacijskim zglobovima, da bi na taj način smanjili mehaničke električne i senzoričke probleme kod robota. Baza robota je uvijek povezana za čvrstu podlogu. Krećući od baznog člana svaki član je povezan mehanički sa sljedećim članom. Zadnji članak nosi prihvatnicu. Ovaj tip člana je povezan preko serije zglobova koji se zove otvoreni kinamatički lanac. U mnogo slučajeva, robotske konfiguracije tj. položaj i kretanje je opisano preko nepokretnog koordinatnog sistema, koji treba biti fiksiran za lokaciju na kojoj je robot povezan za podlogu. Nepokretni koordinatni sistem je definisan u kartezijskom prostoru. Ovo je virtualni koordinatni sistem, iz razloga što nije ovisan ni za jednu komponentu robota. Njegovo ishodište je unutar robota i zbog toga nije pristupačan za mjeriteljske osobine. Koordinatni sistem prihvatnice robota je fiksirana za nju. Njegovo ishodište ima 3 jedinična vektora koji predstavljaju orjentaciju prihvatnice. Položaj i orjentacija prihvatnice uvijek je povezana sa nepokretnim koordinatnim sistemom. Očigledno svaki manipulator sa određenim brojem zglobova i pogodnom geometrijom članova je sposoban da promijeni položaj i orijentaciju prihvatnice u 3D prostoru. Skup mogućih kretanja prihvatnice zavisi od broja stepeni slobode. Svaki stepen slobode odgovara određenoj vrsti kretanja u prostoru, koji ne može biti ostvaren kao kombinacija ostalih kretanja. Tako svaki stepen slobode može biti predstavljen sa nezavisnom varijablom. Varijacijom takvih varijabli vodi da određenog kretanja bez generisanja kretanja u drugim smjerovima. Slobodno kruto tijelo ima 3 translacije i 3 rotacije, odnosno 6 stepeni slobode. To znači da je za manipulatore robota potrebno 6 stepeni slobode da bi se obezbjedio bilo koji položaj i orijentacija prihvatnice. Svaka konfiguracija člana koja vodi ka ograničavanju njegovog kretanja zovemo lokalna degenerizacija. Kinematički lanac, koji ima najmanje 6 zglobova ( bez obzira kako su poredani), prouzrokuju ograničenja po poziciji i orijentaciji ne samo na granici radnog prostora, nego i u unutrašnjosti. U ovom slučaju manipulator nemože obezbjediti 6 stepeni slobode. Manipulator sa manje od 6 stepeni slobode zovemo globalno degenerirani manipulator.

Page 7: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

6

Pažljivim usvajanjem geometrije, manipulatori sa više od 6 zglobova prouzrokuju druge probleme koji su mnogo složeniji. U ovom slučaju, dati položaj i orijentacija za prihvatnicu u kartezijskom prostoru može biti realizirana sa različitim konfiguracijama zglobova. Problem izračunavanja pozicije zglobova iz datog kartezijskog opisa postaje nerješiva. Svaki kinamatički lanac za koji ovakav problem postoji zovemo redundantni kinematički lanac. Sa povećavanje broja zglobova na samo da je pokretnost manipulatora u pitanju, nego se susrećemo i sa mehanički električnim problemima koji postaju teški za riješiti, i razvoj kontrolora kretnja postaje jako složen i skup posao. Za jednostavno upravljenje u robotici, 4 zgloba su već dovoljna. Za određene poslove zavarivanja i farbanja primjenjuju se sa 6 zglobova, a za generalne potrebe manipulatori sa 6 zglobova postali su standardni tip industrijskog robota. 6 zglobova robota nude rješenja za mnogo složenih problema, jer obezbjeđuju 6 stepeni slobode u radnom prostoru. Samo nekoliko specijalnih problema zahtjeva redundantne manipulatore, koji imaju jedinstven prototip. Redundantni manipulatori se koriste za operiranje u vrlo zakrčenim okruženjima gdje su različita rješenja pozicioniranja potrebna, zbog ograničenja kolizije u radnom prostoru robota.

Page 8: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

7

2. Koordinatni sistemi i Transformacije 2.1. Generalni opis koordinatnih sistema U 3D prostoru manipulatori se kreću po zadanim koordinatama. Oni upravljaju sa objektima i primjenjuju alate na već definisan način. Matematička reprezentacija položaja, orijentacije, brzine i ubrzanja, sila i momenata u 3D prostoru je potrebna za opis kretanja članova, položaja i orijentacije prihvatnice, okolnih objekata i zadatka manipulatora u 3D radnom prostoru. Ovdje ćemo dati opis položaja i orijentacije u prostoru, okvirni koncept, prelaz između koordinatnih sistema i opis kretanja prihvatnice. Navedene pojmove opisa ćemo u odnosu na nepokretni koordinatni sistem i pokazati transformaciju problema iz jedne metode u drugu. 2.1.1. Određivanje položaja Generalno, za opisivanje svih pojmova koristi ćemo desni kartezijev koordinatni sistem, sa 3 ortogonalna jedinična vektora. Za definisanje pozicije i orijentacije tijela u prostoru koristimo nepokretni koordinatni sistem. On se zove osnovni okvirni sistem tijela koji može biti povezan za drugi okvirni sistem. Bazni sistem tijela može biti postavljen za bilo koju lokaciju. Ishodište ovog sistema postavlja se u geometrijski centar ili u centa težišta odnosno u neki od vrhova tijela. Na slici 2.1. u tijelo u obliku kocke definisan je koordinatni sistem čije ishodošte je postavljeno u vrh kocke.

Slika 2.1: Desni Cartesiev koordinatni sistem

Pretpostavimo da trebamo odrediti poziciju tijela P1 u odnosu na nepokretni koordinatni sistem. Pozicija tijela u prostoru je određena sa vektorom p.

Page 9: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

8

zzyyxx

z

y

x

epepepppp

p ++=

= (2.1)

Pozicija ishodišta koordinatnog sistema kocke data je sa:

=

000

cp

, gdje je koordinata suprotnog vrha P1 data sa vektorom p1,

=

1

1

1

zyx

p

Očigledno je, da vrijednost vektora p1 zavisi od položaja ( pozicije i orijentacije) koordinatnog sistema koji je definisan. Tako za više definisanih koordinatnih sistema, određivanje položaja neke tačke mora uključivati i ime koordinatnog sistema preko kojeg je pozicija određena. Generalno, potrebno je dodati superskript za poziciju koju odeđivamo, za svaki koordinatni sistem. Pozicija vektora p u ovom slučaju određivamo u odnosu na nepokretni koordinatni sistem K odnosno,

zK

zK

xK

xK

xK

xK

zK

yK

xK

K epepepppp

p ++=

= (2.2)

U drugom slučaju odredimo položaj tačke P1 u odnosu na nepokretni koordinatni sistem B, korištenjem koordinatnog sistema K. Slika 2.2. pokazuje kako je položaj koordinatnog sistema K određen u odnosu na nepokretni koordinatni sistem B. Slična procedura se koristi za određivanje orjentacije preko nepokretnog koordinatnog sistema.

Slika 2.2: Položaj tijela u 3D prostoru

Page 10: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

9

2.1.2. Određivanje orijentacije Određivanje orijentacije koordinatnog sistema K u odnosu na nepokretni koordinatni sistem B, vrši se preko jediničnih vektora: Za x-smijer koordinatnog sistema K:

zBBzyB

ByxB

Bx

z

y

x

KxB eueueu

uuu

e ++=

=

za y – smijer

zBBzyB

ByxB

Bx

z

y

x

KyB evevev

vvv

e ++=

=

za z-smjer

zBBzyB

ByxB

Bx

z

y

x

KzB ewewew

www

e ++=

=

Ovi vektori mogu se napisati u obliku sljedeće matrice,

[ ]

==

zzz

yyy

xxx

zKB

yKB

xKB

KB

wvuwvuwvu

eeeR (2.3)

Matricu R zovemo orjentacijska matrica ili rotacijska matrica. Notacija BRK pokazuje da matrica R opisuje orijentaciju koordinatnog sistema K ( samim tim i tijelo ) u odnosu na koordinatni sistem B. Tačka P1 koja ima vektor p1 u odnosu na koordinatni sistem K, možemo predstaviti sa sljedećom notacijom koja predstavlja položaj tačke P1 u odnosu na nepokretni koordinatni sistem B, na sljedeći način:

11 pRp KK

BB = (2.4) Usvajanjem rotacijske matrice a samim tim i operacija, vršimo transformaciju vektora i matrice iz jednog koordinatnog sistema u drugi. Notacija u jednačini 2.4. pokazuje nam transformaciju iz koordinatnog sistema K u koordinatni sistem B. Rotacijska matrica ima vrlo važne osobine koje se primjenjuju u praktičnim primjerima.

Page 11: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

10

Osobine rotacijske matrice: Data rotacijska matrica R predstavlja vektor,

[ ]wvuR = , koja zadovoljava sljedeće osobine: 1.) Intenziteti vektora u kolonama su jednaki i iznose 1-jedinični vektori, 2.) Vektoru su normalni jedan na drugog, pa vrijedi:

wvu =× 0=⋅ vu

uwv =× 0=⋅ wv

vuw =× 0=⋅ uw Na osnovu 1 i 2 matrica R zove se i ortogonalna matrica. 3) Pošto je R ortonormirana matrica, njena inverzna matrica je jednaka njenoj transponovaoj matrici: TRR =−1 . Generalna notacija ima sljedeći oblik:

ABT

BA

BA RRR ==−1

4) Determinanta rotacijske matrice jednaka je +1, za bilo koji desni kaartezijski koordinatni sistem:

detR=+1 5) Proizvod R1Æ R2, dvije ortonormirane matrice R1 i R2 je ortonormirana matrica. 6) Proizvod dvije rotacijske matrice nije komutativno, tj.

R1⋅R2≠R2⋅R1 osim u slučaju kada je bar jedna identična matrica. 7) operacija množenja matrica je asocijativno:

R1⋅(R2⋅ R3)=(R1⋅R2)⋅R3 8.) karakteristična jednačina: det(R-λ iI)=0, daje jedno realno i dva konjugovano kompleksna rješenja za svojstveni koeficijent λλλλ i. Realni svojstveni koeficijent λλλλ i iznosi 1. Evidentno je da elementi rotacijske matrice nisu nezavisni jedni u odnosu na druge. Određivanjem orijentacije odnosno rotacijske matrice je neodređeno. Generalno, za orijentaciju u 3D prostoru postoje 3 stepena slobode odnosno, tri različite varijable kojim se određuje data orijentacija. Metoda za određivanje orijentacije tijela u prostoru zasnovana je na određivanju triju varijabli koje se još nazivaju i EULER-ovu uglovi (mehanika, žiroskopi) ili Roll-Pitch-Yaw uglovi ( nautika i aeronautika) odnosno

Page 12: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

11

valjanje – posrtanje - skretanje. Sljedeće poglavlje govori o ovim varijablama, odnosno rotacijskim vektorima. 2.1.3. Rotacija u Cartesievom prostoru Za upoznavanjem sa različitim metodama određivanja orijentacije u prostoru, a samim tim i određenih transformacija, poče ćemo sa određivanjem rotacije oko osa kartezijevog koordinatnog sistema. Pretpostavlja se da je koordinatni sistem K tijela kongruentan sa nepokretnim koordinatnim sistemom B. To znači da orijentacija koordinatnog sistema K u odnosu na nepokretni sistem B predstavljena sa jediničnom matricom, odnosno ose su im paralelne respektivno. To znači da možemo pisati,

==

100010001

KBRR (2.5)

Rotacija tijela oko osa nepokretnog koordinatnog sistema B sa uglom rotacije θ, vodi do sljedeće matrice transformacije: Rotacija oko x ose:

−==

θθθθθ

cossin0sincos0001

),( KBRxR (2.6)

Rotacije oko y ose:

−==

θθ

θθθ

cos0sin010

sin0cos),( K

BRyR (2.7)

Rotacije oko z ose:

−==

1000cossin0sincos

),( θθθθ

θ KBRzR (2.8)

Slika 2.3. pokazuje ove rotacije za tijelo u obliku kocke.

Page 13: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

12

x X

x x

Z

ZZ

Z

Y

YY

Yu

u

u

u

v

v

v

v

w

w

w

w

R(x,90)

R(y,-90) R(z,90)

Slika 2.3: Rotacija tijela za 90 oko osa x, y, z Matrica rotacije može biti pomnožena sa svakom drugom matricom, gdje rezultat multiplikacije vodi do serije rotacija tijela oko osa koordinatnog sistema. Jako je važan redoslijed rotacija, koja je posljedica nekomutativnosti množenja matrica. Na primjer pretpostavimo neki koordinatni sistem koji je kongruentan sa nepokretnim koordinatnim sistemom. Prvi ugao rotacije α oko ose x, nakon toga zarotirajmo tijelo za ugao θ oko z ose. Rezultat ove transformacije dat je u obliku matrice transformacije:

−⋅

−==

ααααθθ

θθαθ

cossin0sincos0001

1000cossin0sincos

),(),( xRzRR (2.9)

Pretpostavljajuću iste uslove zarotirajmo sada, prvo oko ose z a onda oko ose x. Matrica transformacije sada iznosi:

−⋅

−==

1000cossin0sincos

cossin0sincos0001

),(),( θθθθ

ααααθα zRxRR (2.10)

Slika 2.4. grafički pokazuje nekomutativnost množenja matrica rotacije.

Page 14: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

13

x

X

x

Z

Z

Z

Y

Y

Y

u

u

u

v

v

v

w

w

R(z,90) R(x,30)

R(z,90)R(x,30)

w

Slika 2.4: Serija od dvije rotacije

Naravno, svaka serija rotacija u odnosu na nepokretni koordinatni sistem čije su ose (x,y,z), može biti matematički opisana kao serija multiplikacija rotacijske matrice. Pretpostavljajući kongruentnost koordinatnog sistema tijela K sa nepokretnim koordinatnim sistemom B prvi multiplikator je jedinična matrica. Poredak rotacija u multiplikaciji je s lijeva na desno. Zbog toga je zadnja rotacija krajnja lijeva matrica u seriji. Umjesto posmatranja rotacija oko nepokretnog koordinatnog sistema, rotacije se mogu posmatrati i oko koordinatrnog sistema tijela tj. oko osa (u, v, w). Ono isključuje prethodne rotacije, a nove rotacije se mogu se odrediti u odnosu na koordinatni sistem tijela oko w-ose sa uglom θ, a zatim za ugao α oko novog položaja u-ose (koja je promijenila poziciju usljed prethodne rotacije). Općenito, rotacija oko svih osa koordinatnog sistema tijela tokom serije rotacija mogu se matematički opisati množenjem tekuće matrice rotacije sa adekvatnim rotacijskim matricama nove rotacije s desna. 2.1.4. EULER –ovi uglovi U principu, nužno je posjedovati 3 nezavisne rotacije oko osa, za opis orijentacije tijela u prostoru. Kao prvi primjer određivanja orijentacije opisa ćemo koncept EULER-ovih uglova. Definišimo Eulerove uglove na sledeći način:

REuler= REuler(α, β, )=R(z, α)⋅R(y, β)⋅R(z, ) (2.11) Zbog toga poslije multiplikacije matrica imamo,

Page 15: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

14

−+−−−−−

=βγβγβ

γαγαγβαγαγβαγαγαγβαγαγβα

cossinsincossinsinsincoscossincossinsincoscoscossinsincossinsinsincoscossinsincoscoscos

EulerR (2.12)

Na taj način smo koordinatni sistem tijela transformisali u zadani položaj sa rotacijama nepokretnog koordinatnog sistema oko z- ose za ugao γγγγ , oko y- ose za ugao β, i na kraju ponovo oko trenutnog položaja z ose za ugao α. Ekvivalent za ove rotacije oko osa w sa uglom α, oko u-ose za ugao β i ponovo oko tekućeg položaja ose w za ugao γ. Deriviranje Eulerovi uglova iz rotacijske matrice REuler s obzirom na jednačinu 2.12. dolazimo da sledećeg:

±

±=

±

±=

±

±=

−=

231,

232,

233,

213,

223,

233,

sin

1sin

Euler

Euler

Euler

Euler

Euler

Euler

RRarctg

Rarctg

RRarctg

R

γ

ββ

α

β

(2.13)

REuler i,j se može naći i kao matrica sa elementima u i-toj vrsti i j-toj koloni matrice REuler. Zbog samo apsolutne vrijednosti vrijednost sin ββββ se može odrediti iz date rotacijske matrice. Kako elementi matrice u donjoj vrsti i dalje ovise o sin ββββ, dva alternativna rješenja po uglu mogu se naći u intervalu [ - π, π ]. Problem postaje dvosmislen. Za prevazilaženje ovog problema postoji dva alternativna rješenja koja zavise jedan od drugog na osnovu sljedećeg izraza:

REuler(α, β, )=REuler(α-π, -β-π, -π) (2.14) Za specijalni slučaj kada je sin ββββ = 0, rotacijska matrica postaje:

Page 16: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

15

+++−+

=

=

+−−−−−

=

1000)cos()sin(0)sin()cos(

1000sinsincoscossinsincoscos0sinsincoscossinsincoscos

),0,(

γαγαγαγα

γαγαγαγαγαγαγαγα

γαEulerR

Uglovi rotacije α i γ određuju rotaciju oko iste ose pa se mogu jednostavno sabrati. Na osnovu toga zaključujemo da je svaka rotacija koja je određena sa sin ββββ=0 zovemo je singularna.

2.1.5. Roll-Pitch-Yaw uglovi

U avijaciji, nautici i aeronautici, također i u senzorici, rotacija je često opisana sa uglovime valjanje-posrtanje-skretanje ili popularnije Roll-Pitch-Yaw uglovi. U ovom slučaju, orijentacija je podjeljena u tri rotacije, prvo oko x-ose za ugao γγγγ, zatim oko y-ose za ugao β, i na kraju oko z-ose za ugao α. Odgovarajuća rotacijska matrica RRPY je data sa:

RRPY= RRPY (α, β, )=R(z, α)⋅R(y, β)⋅R(x, ) (2.15) Multiplikacija tih matrica daje,

−−++−

=γαγγα

γαγβαγαγβαβαγαγβαγαγβαβα

coscossincossinsincoscossinsincoscossinsinsincossinsinsincossincoscossinsinsincoscoscos

RPYR (2.16)

Slično prethodnom razmatranju određivanje orijentacije postaje dvosmisleno, te postoji singularitet za specijalni slučaj kada je β= ± π/2.

2.1.6. Rotacijski vektor i rotacijski ugao

EULER-ovi uglovi i RPY uglovi ne dozvoljavaju izračunavanje orijentacije između dva koordinatna sistema, jer je superpozicija rotacija u Eulerovim uglovima (α, β, )⇒ REuler(α, β, ), a također i u RPY uglovima (α, β, )⇒ RRPZ(α, β, ) različita. Na osnovu toga možemo pisati:

REuler(α+∆α,β+∆β, +∆ )≠ REuler(α,β, )⋅ REuler(∆α, ∆β, ∆ ) RRPY(α+∆α,β+∆β, +∆ )≠ RRPY(α,β, )⋅ RRPYr(∆α, ∆β, ∆ )

Page 17: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

16

Ovo znači da za datu početnu orijentaciju i konstantne priraštaje uglova ∆α, ∆β, ∆γ prema krajnjem koordinatnom sistemu, ne dobijamo konstantnu promjenu orijentacije. Umjesto promjene orijentacije prema zadanom položaju koordinatnog sistema preko tri rotacije, moguće je postići zadanu orjentaciju pomoću samo jedne rotacije oko relevantne ose, koja generalno gledajući, zauzima neku orijentaciju u 3D prostoru. Na taj način, za datu početnu i zadanu orijentaciju, potrebno je naći jednu rotacijsku osu i korespodentni ugao rotacije oko te ose, da bi postigli neprekidnu i homogenu orijentacijsku promjenu. Kao što smo vidjeli u prethodnom primjeru, početna vrijednost problema transformacije može biti određen preko jednačine 2.5. Sada je naš zadatak da pronađemo metodu za određivanje jedinstvene rotacijske ose v i rotacijskog ugla Φ . Očigledno svaka rotacija tijela oko rotacijske ose znači da je nova pozicija. Zbog toga vektor v, označavajući rotacijsku osu mora zadovoljavati sljedeći uslov:

R⋅v=v (2.17) Drugim riječima vektor v je svojstveni vektor rotacijske matrice R, gdje mu je svojstvena varijabla λ=1. Ako usvojimo da za svojstvenoj varijabli λ1 pripada svojstveni vektor v1, tada se može pisati:

−−−

=

xy

zx

yz

vuuwwv

v1 (2.18)

Normalni svojstveni vektor koji je upotrebljen kao rotacijska osa ima vrijednost:

11

1 vv

v = (2.18)

Pripadajući ugao rotacije Φ može se odrediti kao:

)cossinarctan(

21sin

)1)((21cos

1

ΦΦ=Φ

±=Φ

−=Φ

v

Rsp

(2.20)

gdje je, sp(R)=ux+vy+wz.

Page 18: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

17

Pretpostavljajući dati rotacijski vektor v i rotacijski ugao Φ, rotacijska matrica može biti izračunata sljedećim izrazom:

+++−−+++−+

=Φ=cuvsuvuvvsvuvv

svuvvcuvsvuvvsvuvvsvuvvcuv

vRR

zxzyyzx

xyzyzyx

yxzzxyx

2

2

2

),( (2.21)

Gdje smo usvojili sljedeću notaciju: s = sinΦ, c = cos Φ , u = (1-cos Φ).

2.2. Homogene transformacije

Sjetimo sa određivanja položaja tijela u 3D prostoru. Kao rezultat prethodnog razmatranja, dokazali samo da je za određivanje položaja tijela u prostoru dovoljno poznavati vektor položaja d za određivanje translacije i orijentacijsku matricu R za određivanje rotacije. Slika 2.5. pokazuje položaj kocke u odnosu na vektor položaja i orjentacijsku matricu. Položaj P ugla nasuprot ishodištiu koordinatnog sistema tijela 1 možemo odrediti vektorom p1P.

u

u

v

v

w

w

0

1

d1

p0p

P1p

P

Slika 2.5: Položaj tačke P u odnosu na koordinatne sisteme

U odnosu na nepokretni koordinatni sistem 0, položaj tačke P iznosi:

111

01

01

01

00

0 pRdpdp PP +=+= Položaj tačke je određen jednostavnim sabiranjem vektora, d i p1P. Ovakva procedura može biti primjenjena na složenije odnose između koordinatnih sistema.

Page 19: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

18

u

v

w

w

0

1

2 d1

d2

p1p

P

p2p

Slika 2.6: Serija homogenih transformacija.

Slika 2.6. pokazuje vektor položaja 0p0P tačke P, gdje je P je poznata relativno u odnosu na koordinatni sistem 2. Svi koordinatni sistemi su relativni u odnosu na nepokretni koordinatni sistem, i opisani su vektorima položaja d1 i d2. PPP pRRdRdpddp 2

22

11

02

11

01

02

02

01

00

0 ⋅++=++= Alternativo može se dobiti i sljedeća jednakost:

PPP pRRdRdpddp 22

21

10

21

10

10

20

20

10

00 ⋅++=++=

Ova jednačina može biti reducirana metodom homogenih koordinata i transformacija.

=

1101

11

10

10

00

PP pdRp

PP rTr 11

10

00 =

Homogene transformacije napisane gornjom notacijom imaju sljedeća svojstva:

• Vektor položaja r može biti produžen sa 4-tom koordinatom konstantne vrijednosti 1. Ovakva prezentacija položaja tačke u prostoru zovemo homogene koordinate.

• Matrica homogene transformacije T sadrži sve potrebne informacije o položaju i orijentaciji referentnog koordinatnog sistema u odnosu na drugi koordinatni sistem.

• Homogena reprezentacija prethodne jednačine sada postaje:

PP rTTr 22

21

10

00 ⋅=

Očigledno da je prelaz iz sistema 2 prema sistemu 0 dat jednostavnom multiplikacijom matrica:

21

10

20 TTT ⋅=

Page 20: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

19

3. Kinematika Robota U prethodnom poglavlju upoznali smo se za određenim alatima za određivanje položaja i orijentacije u 3D prostoru, kao i homogenim transformacijama. Ovo poglavlje bavi će se kompleksnijim kinematičkim lancima i definisanjem koordinatnog sistema za svaki član manipulatora. Na taj način objasnit ćemo transformacije između koordinatnih sistema susjednih članova, a sve i svrhu određivanje položaja i orijentacije prihvatnice kroz svaki član kinematičkog lanca, zavisno od položaja zglobova u odnosu na nepokretni koordintni sistem( pričvršćen za 'zemlju'). 3.1. Denavit-Hartenbergov zapis koordinatnih sistema Za određivanje transformacije prihvatnice u odnosu na bazu (podlogu) manipulatora, potrebno je definisati zavisnost koordinatnh sistema u svrhu izvođenja sistematične tehnike, određivanja kinematike robota sa n stepeni slobode na jedinstven i poopćen način. Skup od 4xn parametara biti će potrebno za definisanje kinematike robota.

Z0

Z1

Z2

ZnX1

X0

X2

Xn

Y0

Y1

Y2

Yn

Zglob 1

Zglob 2

Slika 3.1: Zglobovi kinematičkog lanca

Slika 3.1. predstavlja članove vezane u kinematički lanac. Bazni i ostali članovi povezani su svaki za specifični koordinatni sistem Ki, koji je fiksiran za član. Na taj način položaj i orijentacija takvih koordinatnih sistema se mijenja u odnosu na susjedne koordinatne sisteme kretanjem zglobova robota oko njihovih vezanih tačaka. Zbog toga koordinatni sistem Ki može biti određen preko prethodnog koordinatnog sistema Ki-1, tj. preko homogenih transformacija. Ove homogene transformacije uključuju uglove ( rotacijski zglobovi) i pomake zglobova (translacijski zglobovi). Na kraju koordinatni sistem prihvatnice Kn može se transformirati u nepokretni koordinatni sistem multiplikacijom svih tansformacija zglobova preko kinematičkog lanca. Na taj način svaki položaj ili / i orijentacija, relativna u odnosu na prihvatnicu (na kojoj je ugrađen senzor za opažanje) prema nepokretnom koordinatnom sistemu (pričvršćen za podlogu), određeni su kao multiplikacija sortiranih homogenih transformacija,

Kn-1, Kn-2,…., K0. Neophodno je odrediti sve homogene transformacije, za svaki poseban tip kinematičkog lanca, pretpostavljajući određene geometrijske osobine članova te raspored i tip zglobova.

Page 21: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

20

..

.

di

Xi

Xi

YiYi-1 Xi-1

Zi

Zi-1

ai

ai-1

Si Ui

Ui-1

Gi+1Gi

a1

Slika 3.2: Zapis DH-parametara

Slika 3.2. predstavlja detalj kinematičkog lanca, gdje su dva člana spojena preko rotacijskog zgloba. Rotacijski zglob je prikazan da pokaže kako se mogu dobiti invarijantni parametri koji opisuju član. Osa rotacije člana i i i+1 su produžene prema linijama Gi i Gi+1, koje su generalno mimoilazne prave. Prave Gi i Gi+1 imaju zajedničku normalu ai. U tački presjeka Ui, između normale ai i prave Gi+1, je definisano ishodište koordinatnog sistema Ki. Nadalje, bazni vektor xi definišemo kada produžimo normalu a1, dok je osa zi paralelna sa pravom Gi, samim tim smo dobili i osu rotacije zgloba i+1. Sada dati vektori xi i zi definišu i preostali vektor yi na osnovu desnog koordinatnog sistema npr. pravilom desnog zavrtnja. Pretpostavimo da su na isti način određeni svi prethodni članovi. U tom slučaju, koordinatni sistem Ki-1 je određen sa ishodištem Ui-1, smještenim na pravoj Gi. Na taj način smo sada u mogućnosti da izvedemo parametre za opis člana. Sa parametrom ai smo već upoznati dok je drugi parametar di definisan kao udaljenost ishodišta koordinatnih sistema Ui-1 i presjecišta normale ai (ovog puta ) sa pravom Gi. Očigledno da ishodište i-tog koordinatnog sistema leži u ravni koja je definisana parom rotacijskih vektora zi-1 i zi. Jedna više karakteristika zglobnog parametra je ugao α1, koji se pojavljuje između oba rotacijska vektora zi-1 i zi. Za član i, rotacija oko krutog tijela i (u odnosu na kruto tijelo i-1) dana je rotacijskim uglom θθθθ1. Drugim riječima, ugao θθθθ1 se nalazi između osa xi-1 i xi. Za revolutne zglobove, parametri di, ααααi i a1 su konstantni. Oni zavise samo izvedbe zgloba. θθθθ1 parametar je jedini parametar koji se mijenja za revolutni zglob, koji određuje položaj zgloba. Situacija je drugačija za prizmatične zglobove. Ovdje parametar di postaje nekonstantan i određuje translaciju člana, gdje parametri θθθθ1, a1 i αααα1 zavise samo od izvedbe člana.

Page 22: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

21

Na osnovu toga zaključujemo da se u principu revolutni i prizmatični zglobovi mogu odrediti samo sa 4 parametra.

ai Dužina normale SiUi

αi Ugao između zi-1 i zi

di Dužina linije Ui-1Si

θi Ugao između xi-1 i xi Homogene transformacije i-1Ti koordinatnih sistema Ki prema Ki-1 preko odgovarajućeg zgloba, može se odrediti iz sledećih geometrijskih transformacija:

1. Rotacija oko zi-1 sa uglom θθθθi

2. Translacija duž zi-1 sa pomakom di

3. Translacija duž xi-1 sa pomakom ai

4. Rotacija oko xi sa uglom αi Ili, sa više formalnim opisom pomoću matrica homogenih transformacija za svake od 4 akcije koje su učinjene gore.

=−

10000cossin00sincos00001

0100100

0010000

1000010000cossin00sincos

11

11

1

ii

iii

i

i

ii

d

a

Tααααθθ

θθ

koja vodi da sljedećeg generalnog opisa transformacija preko translacijskih ili rotacijskih zglobova.

=−

1000cossin0

sinsincoscoscossincossinsincossincos

11

iii

iiiiii

iiiiii

ii

dT

ααθααθαθθ

θαθαθθ

(3.1)

Očigledno homogena transformacija i-1Ti postaje posebno jednostavna, ako je ugaoni parametar ααααi poprima vrijednosti ± ππππ/2, ako su susjedne ose paralelne ili normalne jedna na drugu. Mnogo industrijskih robota je dizajnirano na osnovu prethodne pretpostavke. Ispitivanjem ovakve konstrukcije došlo se je do zaključka da nema posebnih ograničenja u pogledu rada robota. Zbog toga neka potrebna izračunavanja moraju biti pridodata kontroloru robota. Postoji stanje robota ( njegovog otvorenog kinematičkog lanca) kada je svaki njegov zglob u nultom položaju. Uglavnom to je njegova referentna pozicija za

Page 23: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

22

određivanje položaja svakog zgloba pomoću unutrašnje senzorike. Zbog toga to stanje trebalo bi biti fizički dostupno za robota. 3.1.1. Klasični cilindrični robot Ovdje ćemo, u svrhu upoznavanja sa klasičnim cilindričnim robotom pojasniti osnovne pojmove te način analize rješavanja kinematike robota. Pretpostavimo da imamo jedan cilindrični robot, koji ima jedan translacijski i jedan revolutni zglob koji mu omogućavaju da obavlja dva osnovna kretanja kod robota, odnosno ovakav tip jednostavnog robota ima 3 stepena slobode kretanja. Robot je prikazan na slici 3.3. Na osnovu pretpostavke robot ima minimalnu radijalnu komponentu vrijednosti A.

Slika 3.3: Klasični cilindrični robot.

Formirajmo problem za ovako pretpostavljenog jednostavnog robota. Potrebno je direktnom transformacijom cilindričnog robota iz odgovarajućih položaja zglobova r(t), (t),z(t) kartezijevog koordinatnog sistema u nepokretni koordniatni sistem x0, y0, z0 robota koristeći Denavit-Hartembergovog zapisa koordinatnih sistema. Rješenje: Na osnovu prethodnog izlaganja definišimo 4 različita koordinatna sistema za dati robot:

Page 24: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

23

Z0,Z1

Z2

Z3

X0

θ

Y1A

r(t)Y2

Y3

Y0 X1

X2

X3

Slika 3.4: Koordinatni sistemi za klasični cilindrični robot

Transformacijom između koordinatnih sistema homogenim transformacijama obrađenim u prethodnom naslovu, dolazimo do rješenja prvo pojedinačnih transformacija na sljedeći način. I. a1=0, α1=0, d1=0, θ1= (t)

=

1000010000cossin00sincos

11

11

10 θθ

θθ

T

II. a2=0, α2=900, d2=z(t), θ2= (t)

=

1000)(100

00100001

21

tzT

III. a3=0, α3=, d3=r(t), θ3=0

=

1000)(100

00100001

32

trT

Page 25: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

24

Na osnovu rezultirajućih pojedinačnih transformacijadolazimo do konačne transformacije između koordinatnog sistema prihavtnice x3, y3, z3 i nepokretnog koordinatnog sistema robota x0,y0,z0 koji je dat sljedećim izrazom:

0T3=0T11T2

2T3

Uvrštavanjem odgovarajućih vrijednosti matrica dobijamo:

=

1000)(100

sin)(0cossincos)(0sincos

111

111

30

tztrtr

Tθθθθθθ

Posmatrajući kretanje koordinatnog sistema x3, y3, z3 oko samog sebe u kartezijskom prostoru vrijednosti koordinata iznose x3=0,y3=0,z3=0. Ovaj koordinatni sistem u 3D prostoru se kreće zavisno od zgloba robota preko sljedećih jednačina:

θ1(t), r(t), z(t) x0(t)=[A+r(t)]cosθ1

y0(t)=[A+r(t)]sinθ1 x0(t)=dz(t)

Direktni kinematički problem biće detaljnije pojašnjen na glavnom primjeru koji se obrađuje u ovom diplomskom radu, odnosno na primjeru industrijskog robota SCARA sa 4 stepena slobode kretanja ili struktura RRRT. 3.2. Direktni kinematički problem Pomoću homogenih transformacija u stanju smo da odredimo bilo koji položaj prihvatnice, u slučaju da je posljednji koordinatni sistem ( smješten u zadnji član ) povezan za robota. Ovdje je dosta jednostavno pronaći relativna kretanja potrebna za prihvatnicu u pogledu upravljanja objektima. Postizanje kretanja zglobova za pokretanje prihvatnice po zadanoj putanji, u odnosu na nepokretni koordinatni sistem mora biti izračunat homogenim transformacijama. Rezultirajući nepokretni koordinatni sistem tada se koristi za rješavanje inverznog kinematičkog problema, odnosno određivanje relativnih koordinata korespondentnih zglobova. Pretpostavimo da imamo industrijski manipulator sa 6 revolutnih zglobova.

θ1 Varijable zgloba (tekući položaj ruke)

ai,α i,di Konstantni Denavit-Hartenberg parametri 6TE Koordinatni sistem prihvatnice, određen sa

koordinatnim sistemom zadnjeg člana

Page 26: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

25

Homogene transformacije prihvatnice u odnosu na nepokretni koordinatni sistem dat je sa sljedećom matricom:

0TE= 0T1 1T2

2T3 3T4

4T5 5T6

6TE (3.2) Jednačina pokazuje konačnu homogenu transformaciju. Ona prenosi položaj i orjentaciju prihvatnice kroz kinematički lanac prema nepokretnom koordinatnom sistemu. Ova transformacija zavisi od tekuće pozicije zgloba, koji se uključuje kao dvojaki Denavit-Hartenbergov parametar u svaku pojedinačnu transformaciju zgloba i-1Ti. Položaj zgloba θi, koji određuje konačni položaj robota nazive se koordinata zgloba. Gornja jednačina transformira zglob u nepokretni kordinatni sistem. Ova procedura se naziva direktni kinematički problem. Odmah postaje jasno, da se direktni kinematički problem može dobiti iz proizvoljnog položaja zgloba, konfiguracije zgloba te bilo kojeg broja zglobova koji čine kinematički lanac. Naravno, dobro je koristiti određenu notaciju poput Denavit-Hartenberg-ove notacije, koja dozvoljava sistematičnu opis kinematike i homogenih transformacija. 3.2.1. Direktni kinematički problem za SCARA robot Rješenje direktnog kinematičkog problema pokaza ćemo na primjeru industrijskog robota sa 4 stepena slobode, kakav je SCARA robot. Slika 3.5. pokazuje robota sa njegovim članovima i zglobovima, kao i položaj ishodišta koordinatnih sistema, te smjerove kretanja translacijskog i rotacijskih zglobova.

x3x2x1

x0

y3

y4

y2y1

y0

z3

z4

z2z1

z0L1Član 1

Član 4

Član 3Član 2

Zglob 1 Zglob 2 Zglob 3

Zglob 4x4

Slika 3.5: SCARA robot sa 3 rotacijska i jednim translacijskim zglobom Prikaz koordinatnih sistema pojedinih zglobova prikazana je na sljedećoj slici 3.6.u DH-notaciji.

Page 27: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

26

x3x2x1

x0

y3

y4

y2y1

y0

z3

z4

z2z1

z0

x4 Figure 3.6: DH koordinatni sistemi za SCARA robot.

Položaj DH koordinatnih sistema i DH parametara prikazan je na slici 3.7., u nultoj poziciji.

x3

x4

x2x1

x0

y3

y4

y2y1

y0

z3

z4

z2z1

z0

L3L2

L1

Slika 3.7: Koordinatni sistemi u nultom položaju za robot SCARA

Transformacije između susjednih koordinatnih sistema dana je sljedećim obrazcima DH-transformacijama.

Page 28: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

27

=

1000100

00cossin00sincos

1

11

11

10

LT

θθθθ

=

1000010000cossin

0sincos

22

222

21 θθ

θθ L

T

=

1000010000cossin

0sincos

33

333

32 θθ

θθ L

T

−=

1000100

00100001

44

3

dT

Multiplikacijom ovih matrica dolazimo da konačne transformacije koordinatnog sistema prihvatnice do nepokretnog koordinatnog sistema, koji se zove direktni kinematički problem.

=⋅⋅⋅=

1000

43

32

21

10

40

zzzz

yyyy

xxxx

pasnpasnpasn

TTTTT

Pojedini članovi posljednje matrice dati su punim izrazima:

Page 29: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

28

nx=cos(θ1+θ2+θ3); ny=sin(θ1+θ2+θ3); nz=0; sx=-sin(θ1+θ2+θ3); sy=cos(θ1+θ2+θ3); sz=0; ax=0; ay=0; az=-1; px= L3cos(θ1+θ2)+L2cosθ1;

py=L3sin(θ1+θ2)+L2sinθ1; pz=L1+d4;

(3.3)

Primjenom jednačina (2.11.) za EULER-ove uglove dobijamo singularnu rotaciju pošto je:

β=arcos(az)=arccos(1)=00, odnosno

sinβ=0. Na osnovu toga sada možemo pisati:

+++−+

=

+−−−−−

=1000)cos()sin(0)sin()cos(

10000

),0,( γαγαγαγα

γαγαγαγαγαγαγαγα

γα ssccssccssccsscc

REuler

Iz kojeg je vidljivo da je:

cos(α+ )=cos(θ1+θ2+θ3), odnosno

α+ =θ1+θ2+θ3 pa pošto je α i uglovi rotacije oko iste ose mogu se sabrati, pa dobijamo:

α=θ1+θ2+θ3; β=0.

I izlaganja direktnog kinematičkog problema za SCARA robot, vidimo da je vektor vanjskih koordinata određen sa:

r =[px,py,pz,α]T (3.4)

Page 30: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

29

gdje je:

px= L3cos(θ1+θ2)+L2cosθ1; py=L3sin(θ1+θ2)+L2sinθ1;

pz=L1+d4; α=θ1+θ2+θ3,

(3.5)

čime je direktni kinematički problem za SCARA robot riješen. 3.3. Inverzni kinematički problem

Kao što je u poglavlju 3.1. definisano rješenje direktnog kinematičkog problema daje nam koordinate prihvatnice robota, za poznate koordinate pojedinih zglobova koji čine kinematički lanac. Inverzni, a u praksi često korišteni problem daje nam, za poznate koordinate objekta odnosno položaja koordinatnog sistema prihvatnice robota, koordinate zglobova odnosno upravljenih koordinata. Matematički gledano, potrebno je pronaći inverznu funkciju onoj u direktnom kinematičkom problemu. Poznata su dva naćina rješavanja inverznog kinematičkog lanca:

- Analitički - Numerički

Numerički postupak rješavanja inverznog kinematičkog problema svodi se na rješavanje sistema algebarskih jednačina sa n nepoznatih. Analitički postupak rješavanja inverznog kinematičkog lanca daje jednačine u eksplicitnom obliku koje povezuju koordinate zglobova ( upravljane koordinate) sa vanjskim koordinata koordinate ishodišta koordinatnog sistema prihvatnice. Iako ne postoji generalno analitičko rješenje inverznog kinematičkog problema, možemo uočiti opće smjernice za njegovo rješavanje. Ako na osnovu jednačine (3.2.) 6TE označava matricu prenosa za robota sa 6 stepeni slobode kretanja, tada bi analitičko rješenje inverznog kinematičkog problema trebalo tržiti u sljedećem obliku: (0T1)-1 0TE =1TE (1T2)-1 (0T1)-1 0TE =2TE (2T3)-1 (1T2)-1 (0T1)-1 0TE =3TE (3T4)-1 (2T3)-1 (1T2)-1 (0T1)-1 0TE =4TE (3.6.) (4T5)-1 (3T4)-1 (2T3)-1 (1T2)-1 (0T1)-1 0TE =5TE (5T6)-1 (4T5)-1 (3T4)-1 (2T3)-1 (1T2)-1 (0T1)-1 0TE =6TE

3.3.1. Inverzni kinematički problem za SCARA robot U prethodnom poglavlju je generalno opisan inverzni kinematički problem. Shodno tome riješi ćemo inverzi kinematički problem za robot SCARA. Shodno jednačinama 3.5. potrebno je pronaći inverznu maricu matrice (0T1)-1.

Page 31: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

30

( )

1

1

11

11

11

0

1000100

00cossin00sincos −

=L

Tθθθθ

Nakon izračunavanja determinante date matrice imamo:

det 0T1 =1.

Data adjungovana matrica poslije izračunavanja svih potrebnih kofaktora iznosi:

( )

−−

=

=

1000100

00cossin00sincos

1000100

00cossin00sincos

1

11

11*

1

11

11

*1

0

LLT

θθθθ

θθθθ

pa je inverzna matrica data sljedećim obrazcem:

( ) ( ) ( )

==−

1000100

00cossin00sincos

1

11

11

*1

0det

111

0

10 L

TTT

θθθθ

.

Primjenjujući jednakost 3.5. imamo:

( ) ( )

−−

=⋅= −

10001000100

00cossin00sincos

1

11

11

4101

10

41

zzzz

yyyy

xxxx

pasnpasnpasn

LTTT

θθθθ

,

pa dobijamo:

−+−+−+−+−++++

=

1000

cossincossincossincossinsin1cossincossincossincos

1

111111

1111111

41

Lpasnppaassnnppaassnn

Tzzzz

yxyxyxyx

yxyxyxyx

θθθθθθθθθθθθθθθθ

S druge strane, također shodno jednakosti 3.5. imamao

( ) ( ) ( )43

32

21

41 TTTT ⋅= ,

koje nakon multipliciranja postaje:

Page 32: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

31

++

+⋅+−+

=

1000100

sin0)cos()sin(cos0)sin()cos(

4

232323

2232323

41

dL

LL

Tθθθθθ

θθθθθ

Na osnovu dvije zadnje dobijene matrice imamo:

−+−+−+−+−++++

=

++

+⋅+−+

1000

cossincossincossincossinsin1cossincossincossincos

1000100

sin0)cos()sin(cos0)sin()cos(

1

111111

1111111

4

232323

2232323

Lpasnppaassnnppaassnn

dL

LL

zzzz

yxyxyxyx

yxyxyxyx

θθθθθθθθθθθθθθθθ

θθθθθθθθθθ

Iz jednakosti dviju matrice obijamo sistem linearnih jednačina čije nam rješenje daje inverzni kinematički problem za robot SCARA.

d4=pz-L1 (3.7)

Iz jednakosti matrica sljede jednakosti polja (1,3) i (2,3) pa dobijamo,

1223 sin1coscos θθθ yx ppLL +=+⋅

1123 cossinsin θθθ yx ppL +−= (3.8)

Iz sistema (3.7.) imamo:

3

212

sin1coscos

LLpp yx −+

=θθ

θ

3

112

cossinsin

Lpp yx θθ

θ+−

= (3.9)

Na osnovu Prve adicione teoreme Trigonometrije imamo:

Page 33: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

32

3

212

3

11 sin1coscossin1

LLpp

Lpp yxyx −+

=

+−−

θθθθ (3.10)

Odnosno,

( )2

3

221

2

3

11 sin1coscossin1

L

LppL

pp yxyx −+=

+−−

θθθθ (3.11)

Zatim kvadriranjem i množenjem sa L3

2 imamo:

( ) ( )2

22

23

22

11 2sincos

L

LLpppp yx

yx ⋅

+−+=+ θθ (3.12)

Uvedemo li smjenu na sljedeći način dobijamo:

ββ

sincos

⋅=⋅=

dpdp

y

x ⇒ )(

22

y

x

yx

pp

arctg

ppd

=

+=

β

Supstitucijom dobijamo:

( ) ( )22

2

22

23

22

1

2)sin(

yx

yx

ppL

LLpp

+⋅

+−+=+ βθ (3.13)

Na osnovu zadnje jednakosti dobijamo obrasce za inverzni kinematički problem za Robot SCARA:

( ) ( )

14

123

3

112

222

22

23

22

1

cossinarcsin

2arcsin

Lpd

Lpp

pparctg

ppL

LLpp

z

yx

y

x

yx

yx

−=−+=

+−=

+

+⋅

+−+=

θθαθ

θθθ

θ

(3.14)

Čime je direktni kinematički problem riješen.

Page 34: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

33

3.4 Jacobijeva matrica Za kompletiranje kinematičkog problema bio on inverzni ili ne potrebno je još i pronaći i brzine u prostoru vanjskih koordinata. Brzina robota najčešće se mjeri indirektno mjerenjem brzina upravljanih koordinata. Poznavajući geometriju robota, njegov položaj i brzinu svake upravljane koordinate, brzine prihvatnice robota se lahko izračuna. Kako vektor vanjskih koordinata složena funkcija vektora upravljanih koordinata možemo pisati:

r=f(q) Samim tim potrebno je naći totalni diferencijal napisane funkcije kojeg zovemo JACOBIJEVOM Matricom i označavamo sa J. Na osnovu toga možemo pisati

qrJ

∂∂=

odnosno:

qqJr ∆=∆ )( , gdje je J(q) označava da Jacobijeva matrica funkcija upravljanih koordinata q. Dijeljenjem zadnje jednačine sa ∆t te prelazom na infinitezimalno male promjene dobijamo:

••= qJr ,

a to nam govori da Jakcobijeva matrice povezuje brzinu vanjskih sa upravljanim koordinatama. Deriviranje zadnje jednačine po vremenu dobijemo vezu između ubrzanja spomenutih koordinata, tj.

•••••+= qJq

dtdJr

ZA čovjeka zadavanje zadataka robotu u prostoru upravljenih koordinata odnosno zadavanje funkcije q(t), vrlo je neprikladno i primjenjuje se samo u najjednostavnijim slučajevima. Funkcija q(t) se preko složenih rješenja direktnog kinematičkog problema preslikava u prostor vanjskih koordinata koji je čovjeku znatno jednostavniji za opažanje. Iz tog razloga se zadaju određeni zadaci robotu u

Page 35: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

34

prostoru vanjskih koordinata. Ako je kinematika robota zadana u prostoru vanjskih koordinata, kao r(t) tada je prethodne jednačine mogu pisati:

•−

•= rJq 1

•••−

••−= )(1 BqrJq ,

gdje je B derivacija Jacobieve matrice. Zbog potrebe invertiranja Jacobieva matrica mora biti kvadratna i nesingularna ( za redundantne robote).

Page 36: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

35

4. Modeliranje za simulaciju

U ovom poglavlju bavimo se nacrtom modela orijentiranog na zahtjeve robota za pripremu simulacije. Uz ovo se predstavljaju metode modeliranja i modeli dijelova područja geometrije i tehnologije, kao i što se promatra struktura modela okoline i ćelije robota. 4.1. Geometrijsko modeliranje Za robotiku su prilagođeni CAD sistemi (CAD-Dizajniranje pomoću računara) uz proizvodnju geometrijskih modela industrijski robota, perifernih pogonskih sredstava i objekata s kojima se manipulira. Podatci računsko-internog su kao sastavni dio modela okoline osnovica daljih zadataka planiranja. Na CAD podatcima funkcije obrade sistema simulacije a time i povezanih zahtjeva na CAD-sistemima su:

- Grafičko predstavljanje ćelije robota sa postojećim radnim sredstvima i dijelovima proizvoda.

- Kinematičko modeliranje radnih struktura(kinematički model služi kao osnova grafičke strukture uz simulacije kretanja).

- Isključno koliziono prepoznavanje i sprečavanje kolizije (detaljni geometrijski modeli omogućavaju analitičke procese, da bi se prepoznala kolizija i pravovremeno eliminisanje opasnosti kolizije).

- Putanja objekta i planiranje montaže. - Tehnološki podatci za planiranje i programiranje akcije robota. - Generiranje dinamičkih modela robota.

Planiranje i programiranje primjene robota, bazirano na modelu, zahtjeva uzimanje u obzir trodimenziranog geometrijskog oblika promatranog objekta u modelu okoline. Izrada objekta u računaru vrži se pomoću geometrijskog sistema modeliranja(CAGM- Computer Aided Geometric Modelling, geometrijsko modeliranje pomoću računara). Oni daju na raspolaganje korisniku tehnike modeliranja za modeliranje kompleksne geometrije. Sa svih sistema modeliranja vrže se takođe geometrijski prpoačunu. Sistem modeliranja čine centralnu komponentu računski uporišne konstrukcije. Kod nacrta tehničkih objekata CAD omogućava dodatne geometrijske proračune i ne geometrijske korake konstrukcije kao na primjer određivanje mjere.Takvi dodatni podatci odlažu se sa geometrijskim opisima u računsko –interni model (takozvani model proizvoda) i moraju se dalje određivati za zadatke planiranja robotike. U daljem tekstu bliže se promatraju za osnovu uzimaju geometrijski modeli, kao i metode uz njihovu proizvodnju i predstavljanje. 4.1.1. Tehnika modeliranja Uobičajne tehnike modeliranja su : Metoda osnovnih tijela (Constructive Solid Geometry, CSG), Metoda kontura (Construction Geometry, CG), Definicija rotacionih i profiliranih tijela (Sweeping) i Primitivna instanca.

Page 37: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

36

Metoda osnovnih (baznih) tijela

Primitivna, trodimenzionalna elementarna tijela biraju se, parametriziraju i tada pozicioniziraju u sistemu koorodinata modeliranja. Kroz binarne metode povezivanja iz elementarnih tijela se tada se definiraju tijela kompleksne geometrije. Operatori tih povezivanja su dopuštena kao osnovna kako osnovna tijela tako i već izvedena kompleksna tijela. Kao operacije uobičajna su: ujedinjenje substrakcija i presjek dvije geometrije.

Slika 4.1: Tehnike modeliranja i predstavljanja

Metoda kontura

Kroz elemente kontura i površina (npr. Prave, krugovi elipse pravougaonici, ravne površine, cilindrične površine, kuglične ili kupaste površine) konstruišu se pomoću parametara i rasporeda, željenih objekata. Pri tome su moguće također i analitički opisivi rubovi i površine.

Page 38: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

37

Slika 4.2: Rotaciono profilno modeliranje

Proizvodnja rotacioni i profilni tijela

Bazirajući se na metodi kontura u 2D iz kontura i površina se proizvode profilna tijela, u kojima se konture pomjeraju duž ose proizvoda (sl.4.2.) Prema tome proizvod se može definirati kao prava ili kao proizvoljna krivulja. Prekriženi volumen tada proizvodi 3D- tijelo.

Parametarski postupak konstrukcije

Iz predefinisanih osnovnih oblika daju se izraditi, preko podataka parametra objekta, direktno novi objekt (sl. 4.3.). Ovaj način modeliranja sa familijama elemenata dalje određuje kod primjene biblioteka objekata u CAD sistemima.

Slika 4.3: Parametarski objekti familije elemenata

Page 39: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

38

4.1.2. Geometrijski modeli Geometrijski modeli specificiraju interni računski opis modelirani geometrijski objekata. Oni se razlikuju kroz matematički opis proizvodni elemenata i sadržaja informacija koje su time utvrđene. Osim toga potrebne su im različite strukture podataka za efikasnije memoriranje u računaru. Geometrijski modeli daju se klasificirati prema svome prostoru za operaciju: -2D-model (ravanska geometrija) -2-1/2D-model (prostorna geometrija) Predstavlja pojednostavljenu 3D-geometriju opisanu kroz ravan i okomiti vektor pomjeranja -3D-model (prostorna geometrija) Jaka je podjela prema sadržaju informacija internog predstavljanja.

Rubni ili žičani modeli

Slika 4.4: Žičani model

Opis geometrije tijela usljeđuje samo preko rubova i koorodinata krajnih među tačaka (sl.4.4.). Osim pravi snimaju se kao rubovi matematički opisuju također i krugovi, kružni lukovi ili presjeci kugle.

Površinski modeli

Ovaj model memorira površine objekata da bi se opisala geometrija 3D-tijela. Osim analitičkih vrsta površina mogu se koristiti i površine slobodnih objekata, koje se opisuju približno preko nalijegajućih tačkih i prostornih krivulja koje se sijeku. Prostorne krivulje proizvode između susjednih presjeka male komade površina, takozvane zakrpe.

Page 40: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

39

Zapreminski model

Slika 4.5: Zapreminski (Volumni) model

Fizikalna tijela opisuju se ovdje svojim ograničenjem i svojom zapreminom obloženom materijalom. Najpoznatije metode predstavljanja za ovo su modeli tijela (CSG) i modeli rubni površina(BR). 4.1.3. Metode predstavljanja U daljem tekstu predstavljaju se najvažnije metode predstavljanja za geometrijske modele orjentirane na zapreminu.

CSG-model

CSG- koristi binarna stabla čiji čvorovi sadržavaju operatore povezivanja i operatore transformacije čiji listovi sadržavaju parametarska osnovna tijela ili proizvedena djelomična stabla. Dužina drveta ovisna je o kompleksnosti tijela. Ipak je CSG-model općenito jedno vrlo efikasno predstavljanje. Geometrijske veličine kao volumen, težište i masa jednostavno se daju izračunati. Slike presjeka i količina promatranja u stvari su vrlo računski intenzivirane. Također se proizvodnja modela može upotrijebiti za grafičku reprodukciju u obliku površinski modela s rubovima i poligonima.

Grafički površinski model

U strukturama podataka BR-modela odvojeno se obrađuju topologija i geometrija. Topologija utvrđuje odnose između površina, rubova i tačaka. Geometrija, koja opisuje egzaktno istezanje, obuhvaća se u geometrijskim čvorovima, koji su povezani odgovarajućim topologijskim čvorovima BR-modelu potrebno je već jednostavna tijela

Page 41: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

40

puno prostora za memoriranje. Modeli rubova i poligona za grafičko predstavljanje daju se jednostavno izvesti iz ovog modela. To je najčešće korištena metoda reprezentacije za interno predstavljanje geometrije.

Ćelijski model

Princip prostorno zaposjednuti raspored razlaže objekte na male zapremine. Tijelo se tada reprentezira kroz listu jedinstveni kubova koji su obloženi preko tijela. Kao opća metoda kod ćelije razgradnje zapremina se razlaže u proizvoljne pojedinačne ćelije, koje su disjunktivne ili se dodiruju u zajedničkim površinama. Ove metode se prilagođavaju računsko internom predstavljanju zauzetih i ne zauzetih prostora time obrazuju osnovicu za određivanje kretanja bez kolizije na primjer u ćelijama robota.

Površine slobodnog oblika

Osim tehničkih tvorevina(oblika), čije su površine sastavljene iz geometrijskih opisanih djelomičnih gornjih površina, postoje takođe gornje površine dijelova koje mogu posjedovati proizvoljne oblike. One se tada nemogu više analitički opisati. Ove površine slobodnih oblika (sl.4.4) mogu se matematički opisati s jednim brojem kontrolnih tački s jednim propisima proračuna. Pri tom treba razlikovati između aproksimirajući i interpolirajućih postupaka. Takav popis proračuna može se utvrditi s mnogo postupaka, koji se objašnjavaju u sljedećem tekstu.

Slika 4.5: Model Površine

Zakrpa

Uobičajni način opisa površine bazira se na definiciji takozvane zakrpe. Definira se kroz dva parametra smjera u i v, kroz ugaone tačke i vektore pravca. Osnovno razmišljanje je u tome, da se rubne krivulje definiraju kroz krivulje slobodnih oblika i površinske tačke se dobivaju preko interpolacije.

Page 42: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

41

Nedostatak ove metode je u tome da je tačan podatak vektor pravca vrlo težak, što može voditi do nepostojanosti na prijedlozima između zakrpa.

Bezier-površine

Da bih se proizvele površine sa takozvanom Bezier-tehnikom koriste se prostorna mreža poligona s kojom se približava zakrivljenim površinama slobodnog oblika. Mreža poligona dana je kroz (n+1) . (m+1) Bezier tački sa i =0, …n, , j=0,…,m. U svakom slučaju dvije od ovih tački su povezane , kada se jedna od obje indicije razlikuje za jedan i drugi je isti. Funkcijama Bi* kao Berštajn-polinom sa stepena x može se opisati Bezier-površinski element slijedećem jednadžbom:

3,

2, ,]1,0[,),()(),( RbvuuBuBbvub jij

mi

nji ∈∈⋅= ∑∑

Beizer-površinski komad leži u konveksnom omotu definirane kontrolne mreže. Bezier točka bij. Ima kod (u,v)=(i/n,j/m) najveći uticaj na segment. Ugaone tačke mreže saglasne su s ugaonim tačkama površinski komada. Mogu se vrlo dobro proizvesti i imaju i izvan uporišni mjesta uglačavajući učinak.Nedostatak ove tehnike je u tome da već promjena uporišne tačke mjenja cijeli segment. Osim toga sa svakom dodatnom tačkom povećava se stepen polinoma za jedanpa iz toga proizilazi povećan utrošak računanja.

B-Splines i NURBS-površine

B-Spline metoda ili opsežnije NURBS-funkcije (Non Uniform Rational B-Spline, nejednako raspoređivanje B-Splines) tretiraju površine slično kao Bezier-matoda, u stvari zajedno sastavite kompleksne oblike iz jednostavnijih, tako da stepen polinoma ne raste. Inače potječu analogno uz Bezier-tehniku koja se treba promatrati kao specijalan slučaj. Kod B-Spline metode nadomještavaju se Berštajn-polinom Bezier-tehnike kroz B-Spline funkcije. Sa Ni* proizilazi kao B-Spline funkcija otklonjeno izjednačavanje površine. Prednost ove metode je lokalna aproksimacija dodavanje daljih uporišnih mjesta, koja nudi vrlo dobro približavanje i po mogućnosti glatki protok krivulja i površina sa ulaznim prijelazom jedan prema drugom kod zamjenjujućeg utroška. Kod NURBS-a tačke nisu ravnomjerno raspoređene (non uniform , ne jednake), osim toga svaka kontinualna točka ima još i uravnoteženje. 4.2. Modeliranje okoline Potreban preduslov za svako programiranje orjentirano zadacima je modeliranje okoline. Model okoline sadrži sve iskaze o sadašnjem stanju okoline. Uz te osim ostalog pripadaju:

Page 43: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

42

- Struktuiranje okoline u objekte i djelomične objekte - Opis osobnih objekata - Opis odnosa između objekata

U mnogim slučajevima primjene u modelu okoline vodi se još i određena historija, na primjer o nalozima koji su određeni u tekućoj sedmici. 4.2.1. Struktura Struktura okoline, npr. jedne tvornice mora se modelirati. Opis bi trebao biti po mogućnosti blizak prirodnom opisu za ljude, jer je samo tako moguća kontrola i aktueliziranje preko normalnog saradnika, dakle ne specijalno za modeliranje okoline obučeni stručnih snaga. Ovo je osnovni preduvjet za uspjeh ne samo ove primjene , nego generalno svakog automatiziranja sa računarima.

Rekurzivno razlaganje objekata

Ako se treba opisati okolina za druge ljude, onda se stepen detaljisanja opisa i ograničenja na djelimične aspekte ovisi od ovog interesa. Za opis se dakle nudi da se definiraju objekti i da se isti rekursivno razlažu u djelomične objekte. Ovo je također osnova modeliranja okoline u računaru. Na primjer to bi mogao biti opsežan objekt jedne tvorničke hale. Ovaj objekt može se tada raščlaniti u djelomične objekte: transportno vozilo1, transportno vozilo 2, ćelija za proizvodnju 1, vozni put, itd. Ćelija za proizvodnju 1 ponovo se razlaze u djelomične objekte, npr.: tokarski stroj 7, prijem alata 5, transportna traka 1, i robot 8. Potom usljeđuje razlaganje ovih djelomičnih objekata rekurzivno u daljnje djelomične objekte dok se ne postigne najviši potreban stepen detaljisanja. Dubina razlaganja ovisna je pri tome o dotičnom objektu i postavljenom zadatku.

Atributi objekata

Za svaki objekt memoriraju se relevantne osobine(atributi). Kriterij za izbor atributa je, osim ostalog, ravan detaljiranja na kojoj je naseljen objekat. Primjeri za sadržaje atributa su:

- Identificirajuće osobine kao naziv i klasa objekta - Geometrijske osobine kao mjesto, položaj, tip geometrijskog modeliranja i

dimenzije. - Kinematičke osobine kod robota, npr. broj osovina,stepen slobode, ograničenja

zglobova i DH-parametri. - Tehniloške osobine kao težina, materijal, boja, struktura gornje površine i stepen

refleksije (npr. za radarske senzore) - Upravljačke informacije za korisnika i takođe za sistem koji manipulira

objektima (npr.interni, sistemski značajan naziv objekta ili njegov broj komada u skladištu)

Atributi se opisuju kroz par naziva atributa i vrijednosti atributa. U mnogim slučajevima atribut može sadržavati i dalje sastavne dijelove, na primjer jedicu mjere, dopuštene tipove podataka za vrijednost, gornju granicu zs vrijednost ili datum zadnje promjene. Sastavni dijelovi atributa označavaju se kao Facceten (franc. Lica)

Page 44: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

43

Određeni atributi važeći su za cijelu klasu objekata, npr.za sve robote ili za sve alatne mašine proizvođača X. Za vođenje i održavanja opisa okoliša povoljno je da se ove zajedničke vrijednosti atributa ne memoriraju višestruko. Objekti se zbog toga eksplicitno rezimiraju u klase objekata i raspoređivaju u hijerarhiju klasa (pomoću nasljeđa atributa) 4.2.2 Odnosi (veze) Između objekata postoje različiti odnosi , koji se moraju opisati:

- Opisi kvalificiranje kao npr. je podklasa od ili je instanca od. - Opisi sastavnih dijelova ( je sastavni dio od9 - Opis naloga, npr. obradni nalog, pri čemu je specijalni nalog modeliran kao

objekat. - Geometrijske veze, npr. je stegnuto u , leži na ili je povezano sa - Veze po prednosti, primjerice:

- Mora se montirati ispred -Može se samo rukovati poslije - Samo postaviti kod ispada od Na ovim primjerima se vidi, da je načelo jednakosti važeće, da li se veze realitiraju preko atributa, preko objekata ili preko eksplicitno memorirani realizacija(tupel). Poželjno je da se korisnici u tolikoj mjeri rasterete i prepoznaju višestruke veze dotičnih sistema i da ih mogu vrednovati. Različite mogućnosti realiziranja veza trebaju se pokazati na primjeru dvoznamenkaste relacije. Dvoznamenkasta realizacija je M obrađen nalog A pri čemu su M i A nazivi objekata. Ova se veza može modelirati na sljedeći način. -Kod modeliranja kao atributa daje se kod objekata M atribut određen nalog . Ovaj atribut ima vrijednost A. -Kod modeliranja kao objekta daje se objekat, koji predstavlja specijalnu vezu između M i A. Ovaj objekat ima slobodno izabran naziv instance B375 i pripada uz klasu oznaka naloga. Objekat B375 ima atribute odrađivač sa vrijednosti M i nalog sa vrijednosti A. -Kod memoriranja mamorira sa kao tupel (određen nalog M,A). Ovi tupeli su na primjer odloženi u realizacionoj banci podatakai nisu uvezani u strukturu objekta. Kod memoriranja u banku podataka mora se eventualno dodati još jedan jasan ključni atribut na primjer broj naloga, da se ne bi memorirali identični tupeli.

4.2.3 Semantičko modeliranje

Ima dakle objekata koji predstavljaju predmete i takvih, koji predstavljaju apstraktne predmete kao npr. boje, veze, mišljenja. Razvijeni model okoline apstrahira svijet uvijek realnu okolinu i sadrži također odstupanja od nje. U koliko model detaljnije i tačnije opisuje realnost, utoliko je moguće realnija simulacija na ekranu. Polazna točka kod modeliranja okoline je, da se izabere formalni jezik strukture a kojom se mogu opisati i objekti i njihove veze. Formulisanje objekata i njihovih veza pomoću formalnog jezika zovemo semantičko modeliranje. Često semantičko modeliranje također znači samo modeliranje veza, pri čemu se predviđaju postojanost opisa objekta kao “trivijalna nužnost”.

Page 45: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

44

Model orijentiran na objekt o kome se govori u ovom poglavlju je vrlo opsežan I stoga vrlo kompleksan. Ya jednostavno korištenje nedostaju još izvedbene I algoritamske komponente. Prvi uz izvošenje veza iz poznatih relacija, radnji za izračunavanje vrijednosti atributa iz postojećih vrijednosti. U praksi se često koriste još specijalizianije tehnika i u modeliranje okoline, osim ostalog:

- Modeli entiteti-veze - Semantičke mreže - Modeli oblika - Modeli orijentirani na činjenice - Sistemi bazirani na pravilima

Raspoloživi alati i sistemi programiranja često su za modeliranje okoline proizvodnje. Bitni razlozi za to su da nedostaju vežne funkcije, da se određena stanja stvari teško opisuju ili da se ne ispunjavaju realna vremena potraživanja. 4.3. Modeliranje Ćelija Kod simulacije u području robota ide se na pojedinačne radne ćelije, da bi se pregledno održo simulirani sistem. Jedan takav model ćelija obuhvata osim geometrije kkoja opisuje tijela, također i tehnološke, funkcionalne kao i administrativne informacije i veze. To garantira visoku prenosivost rezultata simulacije na realnu ćeliju. Tehnologije i procesi, koji se koriste u realnoj radnoj ćeliji, takošer se moraju simulirati kao komponente komunikacije. Uprkos velikom broju integriranih komponenti kompleksni model simulacije mora biti pregledan i garantirati jednostavno opsluživanje. Za integriranje tehnoloških i strukturnih podataka nisu dovoljni čisti CAD sistemi. S toga su razivejni dodatni modeli uz postojeće CAD sistema i samostalni sistemi modeliranja. Slika pokazuje tipične komponente ćelije robota. Za komponente potrebni su modeli. Logično je, da se svaki tip komponente izvodi specijalni model. Zbog toga su potrebni modeli za:

- Robote - Prihvatnicu - Senzore - Aktivne kinematičke mehanizme - Objekte za rukovanje - Statičke urešaje

4.3.1. Tok modeliranja Pojedini koraci modeliranja mogu se raščlaniti u sljedeće tačke:

Sastav grafičkog modela

Grafički model sadržava geometrijsku kopiju realnih komponenti. Ovdje se mogu koristiti različiti stepeni apstarkcije i stepeni detaljisanja. Također i sastav hijerarhije predstavljanja je vrlo važan. Time se može upravljati stepenima detaljisanja. Kod ovog je

Page 46: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

45

osnovno razmišljanje, da za svaku akciju nije potreban potpun i time najčešće i vrlo kompleksan model, nego de sa kompleksnost modela bira ovisno o zadatku.

Sastav kinematičkog modela

Kinematički model sadržava kinematičke parametre, kao i granična područja. Kinematika se može potpuno opisati preko Denavit Hartembergovi parametara. Dodatno su još potrebni algoritmi transformacije naprijed i nazad. Pri tome se trebaju uzeti u obzir sve iznimke i posebnosti kao primjer višeznačnosti.

Sastav dinamičkog model

Za kompleksnije probleme kinematiko posmatranje nije dovoljno. Dinamički model uvjetuje rješavanje inverznog ili direktnog problema, izračunavanje sila i momenata kod već definisanih putanja. Ili obrnuto. Za ovo su potrebni dodatni geometrijski podaci i podaci o mjeri i osobinama nosivosti. Často je kod ovog modela dovoljno ćisto modeliranje krutog tijela. U budućnosti će se uzimati u obzir i fleksibilnost osovina robota.

Sastav modela orijentiranog na funkciju

Kinematički aktivnim mehanizmima kao pokretne trake, podizni stolovi i vozne cjeline potrebna je osim snimaka funkcionalnosti kretanja, podataka minimalne i maksimalne vrijednosti područje i radnih parametara također funkcionalnost aktiviranja i deaktiviranja. Alati kao pištolj za boju, kliješta za tačkasto zavarivanje, i odvijač imaju osim aspekata kinematički aktivnih mehanizama još ednu dodatnu funkciju proizvodnja kugle za raspršivanje iliizrada šava za zavarivanje. Senzorske funkcije senzora sila/moment, sistemi obrade slike i također prekidači moraju se snimiti za realnu simulaciju. Kod snimaka samo preko geometrijskog proračuna oni mogu biti vrlo kompleksni i sa utroškom vremena. Komande koje se trebaju odraditi modeliranjem rade se najpovoljnije iz CAD podataka. Već u fazi modeliranja oni se trebaju pripremiti za izmjenu preko postupaka obrade. Statičke komponente kao baza, sto ili sanduci, potrebni su prije svega za detaljne studije, naročito za prosmatranja sudara. 4.3.2. Prikaz Kod izrade prikaza jedne ćelije satavlja se u stvari ćelija robota iz pojedinačnih komponenti kao model. Važne tačke ovoga su:

Izbor komponenti

Kod izbora komponenti niz različitih aspekata može se uzeti u obzir. Osnovni kriterij je naravno zadatak koji se treba ispuniti. Utiće se na izbor detaljnih odnosa mjesta i veća postojećih komponenti koje mogu voditi do promjenjivih graničnih uslova. Tipične komponente su: robot, hvataljke, prihvatnice idr.

Page 47: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

46

Smještanje komponenti

Računarski podržano smještanje komponenti u ćeliji, dopušta jednostavan nacrt varijanti. Komponente se mogu odstraniti ili izbrisati. Tako se izmjena može iszvesti vrlo brzo i može se isprobati više varijanti. Testovi koji ispituju optimalno pozicioniranje jedne komponente, sadržavaju testove radnog prostora, statički test kolizije, određivanje prostora kolizije i određivanje vremena kretanja, već prema situaciji i u ovisnosti od smještaja u datoj poziciji. Izmjena podataka Da bi se koristili postojeći podaci i dalje mogao zadavati prikaz potrebna su mjesta presjeka CAD – sistema. Kod direktnog povezivanja uslješuje direktno pisanje i čitanje u format podataka CAD-sistema. To omogućava brži pristup podacima, a u stvari je otreban za svaki sistem sa pred i post procesiranjem. Kod povezivanja preko normiranih sjecišta specijalno se proizvode formatirane kartice podataka. DXF – Drawing Exchange Format IGES – Initial Graphics Exchange Specification STEP – Standard for the Exchange of product Model Dana STEP treba, pošto su se EU kao i SAD razvijali na standardu, postati internacionalni. Završno izrađeni prikaz ne mora se koristiti samo za simulacione svrhe, nego može služiti i kao osnova za izradu tehničkig crteža postrojenja. Ako postoji veza na CAD-sistemu, mogu se koristiti njegove funkcije, na primjer za mjerenja. Dalje se mogu voditi liste dijelova i planovi za sastavljanje robotskih ćelija.

Page 48: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

47

5. Uvod u Simulaciju Simulacija je skupni pojam za predstavljanje ili snimanje fizikalnih, tehničkih, bioloških ili ekonomskih procesa ili sistema kroz matematičke ili fizikalne metode, pri čemu je ispitivanje modela jednostavnije, jeftinije ili slučajnije nego originali a njihova prepoznavanja dopuštaju zajedničke vezane za osobine originala. Prema VDI-smjernici 3633 vazi Simulacija je snimanje sistema sa njegovim dinamičkim procesima u modelu sposobnom za eksperimente, da bih se došlo do spoznaja, koje su prenosive na stvarnost. Računski podržana simulacija zahtjeva s toga u računaru raspoloživi model. Model pritom može najčešće biti samo pojednostavljeno predstavljanje promatrane stvarnosti. Samo osobine relevantne za zadatke uzimaju se u obzir i utiču na model. Simulacija sistema i procesa, posebno u industrijskoj proizvodnji, predstavljaju dvije važne komponente .

1. Odgovarajući simulacioni proces i pripadajuće programe, s kojima se u kompjuterskom dijalogu treba izračunati i predstaviti situacije i alternative.

2. Odgovarajući model, kroz matematičke formule ili kao skupljanje podataka i

povezivanje mogućih stanja. Simulacioni programi u primjeni su već puno godina na računarima različitih veličina. Dok su se ranije modeli i podaci stanja savladavali preko opsežnih zadavanja podataka, danas su na raspolaganju grafički orijentirane glavne površine korištenja i tehnike opisivanja sa zadavanjem polaznog stanja. Velika prednost grafike kod simulacije sistema robota je uvlačenje teksta programa u isključeni ciklus razvoja programiranja robota. Pomoću učinkovitog grafičkog sistema može se ćelija predstaviti u 3D i programirana kretanja robota i periferije mogu se vizualizirati u ćeliji. Samo kroz optičku analizu vizualnih akcija, programer se može priključiti na grešku u programu. On ustvari radi na licu mjesta, ali koristi i prednosti isključnog programiranja. Dalja prednost grafike je korištenje oblikovanog čovjek-mašina presjeka. Grafičke funkcije zadavanja sa mogućnošću direktne veze na elemente grafičkih reprezentiranih ćelija olakšavaju primjenjivost govornog elementa. Da bi se robot i periferija bar jedan put mogli predstaviti, moraju se izraditi pojedinačni elementi u modelu podataka, koji služi kao osnova vizualiziranja. 5.1. Simulacija robota Sistemi simulacije robota dopuštaju predstavljanje kretanja sa jednim ili više robota na grafičkom ekranu. Roboti se kod današnjih računara ne predstavljaju više kao trodimenzionalni modeli od žičane rešetke, nego kao zapreminski ili gornjopovršinski modeli. Osim robota daju se sklopiti i daljnji elementi kompleksnih proizvodnih ćelija, kao što su radni stolovi, mašine i izradci. Da se geometrijski opis objekta ne mora zadavati ručno sistem simulacije često se povezuje sa CAD- sistemom. CAD- program može također pripadati simulacionom sistemu. Vrlo često je to razdvojen paket programa, koji odlaže izrađene programe u (normiranom) formatu podataka. Ovo se također može čitati i interpretirati sa simulacionih sistema. Slika 5.1.pokazuje

Page 49: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

48

principijelan sastav grafičkih sistema simulacije robota. Nekoliko bitnih aspekata brže se objašnjava u sljedećim pasusima.

Slika 5.1: Šema grafičkog sistema simulacije

5.1.1. Kretanje robota Da bi se roboti i ostali objekti mogli kretati, simulacionom sistemu potreban je kinematički model. Kod robota su potrebni dodatno uz geometrijske dimenzije još i informacije o kinematičkom lančanom povezivanju. Djelomičnih objekata preko zglobova. Oni također sadržavaju podatke o ugaonim ograničenjima i ostala ograničenja. Kad se na ekranu okreće osovina mora se također automatski mijenjati položaj svih na to priključenih sastavnih dijelova robota, prema modeliranoj kinematici. Kompleksni sistemi simuliraju kod kretnja također i regulacione krugove za osovine i dinamiku objekata. Kretanje robota u sistemu simulacije robota može uslijediti na različite načine: -Okretanje dugmeta, čije okretanje premješta zglobni ugao robota -Zadavanje položaja cilja sistema koordinacije prihvatnice preko tastature, kursor,tipki, miša itd.

Page 50: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

49

-Interpretacija (izvedba) programa robota u sistemu simulacije robota. Zadavanje položaja preko kola okulatora za izoštravanje ili tastature može se koristiti za grafičko interaktivno generiranje programa robota. 5.1.2. Generiranje programa robota Kod generiranja programa robota podržanim računarima pomoću grafički interaktivnog sistema simulacije robota, postupa se slično kao kod postupka učenjem. Prihvatnica robota ispravno se pozicionira na ekranu s tipkom kursora, mišem, okretnim kolom, kuglom za učenje ili dr. aparatima. Osobine robota se pri tome odgovarajuće okreću i vode za sobom zglobna tijela. Ako je postignuta željena točka, memorira se ugao osovine ili položaj u sistemu koordinata okoline. Iz ovog se tada proizvodi jednostavan program robota. Ovaj program u bitnosti sadrži samo naredbe kretanja koje se trebaju izvesti. Većina simulacioni sistema ima modelirane različite tipove robota i mogu generirati programe za različita upravljanja. Slike 5.2. do 5.5. pokazuju različite mogućnosti, jezike – upravljanja različitih proizvođača sa simulacionim sistemom.

Slika 5.2: IRDATA-varijanta

Page 51: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

50

Slika 5.3: Predprocesori

Slika 5.4: Postprocesori

Page 52: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

51

Slika 5.5: Integralno rješenje

5.1.3. Testiranje programa robota Sada promatramo izvođenje programa robota preko simulacijskog sistema s ciljem testiranja programa robota. Ovdje se koristi kombinovana isključna i uključna metoda testiranja. Ova kombinovana metoda preduvjetuje da se program robota može izvesti nepromijenjeno po izboru preko realnog upravljanja robotom ili kroz sistem simulacije robota. Kod čistog uključnog testiranja programa robota u realnoj okolini sa realnim robotom. Ovim se u stvari osigurava da program radi ispravno, ali nastaje i niz problema.

- Realni izbor potreban je u realnoj okolini. Ovo znači mogući zastoj jednog dijela proizvodnje u ovom vremenu, a time i visoke troškove.

- Kroz grešku programiranja nastaje opasnost oštećenja robota ili njegove okoline.

- Ako se za vrijeme testiranja obrađuju materijali, onda isti često nisu dalje za upotrebu. Dakle nastaje velika potrošnja materijala.

- Test je tek moguć kad su sklopljeni robot i njegova okolina. Time nastaje, na primjer u proizvodnji neželjeno kašnjenje u vremenu između pripravnosti aparata za proizvodnju i pokretanje proizvodnje.

Kod miješanog isključnog i uključnog testiranja pokušava se, da se ovi problemi spriječe kako je moguće. U prvoj fazi testa, program robota se testira pomoću simulacijskog sistema robota. Tek kad tamo sve teče bez greške u drugoj, tada vrlo kratkoj fazi testiranja koristi se realni robot u realnoj okolini. Na promjer, iz CAD-konstrukcijskog crteža određenog dijela lima nastaje program za rezanje pomoću laserskog aparata za rezanje vođenog robotom. Program se preuzima

Page 53: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

52

u simulacioni sistem i testira u tamo modeliranoj ćeliji za rezanje. Pri tome se treba kontrolisati ( ili automatski ili preko ljudskog gledanja u ekran ), da li nastaje željena traka i dali kod kretanja nastaju kolizije sa uređajem za fiksiranje, ili sa drugim elementima ćelije. Ako to nije slučaj program se može testirati na realnom robotu, pri čemu je vjerojatnost grešaka koje mogu voditi oštećenjima uređaja ćelije neznatna. Važan dio simulacijskog sistema je takođe je i automatska kontrola kolizije. Ovdje se više ne prepušta samo ljudskom promatranju da prepozna kolizije na ekranu, nego test usljeđuje direktno u simulaciji. Na ekranu se pokazuje mjesto kolizije. Kvalitet kolizionog testa ovisi o postupku i diskretiziranju predstavljenog prostora. Problemi kod korištenja sistema simulacije robota za testiranje danas su još:

- Troškovi nabave, posebno za biblioteke različitih tipova robota su visoki. - Postiziva tačnost u modeliranju često još nije dovoljna, na primjer kad se

dinamika ili regulacija robota ne uzme dovoljno u obzir. - Dimenzije objekata i njihov položaj u sistemu koordinata okoline su netačne,

pošto se na primjer CAD- modeli tačno ne poklapaju sa dijelovima, ili robot i njegova okolina nisu dobro izmjereni.

5.1.4. Dalja simulacija Da bi se mogli simulirati kompleksni, posebno senzorski upravljani programi robota, nije dovoljna uobičajna simulacija kretanja u krutoj okolini. Dodatno su potrebne sljedeće komponente: - Simulacija senzora (na primjer šta «vidi» ( simulirana )kamera na robotu u

simuliranoj okolini - Simulacija prihvatnice - Simulacija komunikacije sa okolinom - Simulacija promjena okoline kroz naredbe robota ili kroz aparate. Da bi se mogli obuhvatiti svi relevantni tokovi simulacije, moraju biti važni fizikalni osnovni položaji u simulaciji. Važni efekti koji se moraju uzeti u obzir u simulaciji su: - Slobodan pad - Udar Da bi se efekti po mogućnosti tačno implementirali, za proračun se uzimaju osobine materijala objekata, unutar toga: -gustoća -masa -težište -tenzor nosivosi -koeficijent prijanjanja i kliznog terena. 5.2. Sistemi simulacije Na tržištu kao i u području istraživanja egzistira mnogostrukost ili višestrukost sistema simulacije robota. Rašireni su RobCAD i IGRIP, koji se jako puno koriste u automatskoj industriji. Ovi sistemi rade na CAD-radnoj stanici pod UNIX. Cijena ukupnog sistema (hardver – softver) kreće se u redu veličina od 150.000 DM. Sistemi takve vrste ekonomični su za upotrebu kod velikih korisnika robota. Polazeći od toga opsluživanje ovih sistema je vrlo kompleksno, tako da je potrebno specijalno obučeno osoblje.

Page 54: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

53

Osobine takvog sistema trebaju se navoditi u primjerima na osnovu sistema simulacije robota COSIMIR (Cell Oriend Simulation of Indusrial Robots: ćelijski orijentirana simulacija industrijskih robota) Glavna površina opsluživanja ima intenzivnu upotrebu u tehnici prozora (slika 5.6.) Time korisnik može prilagoditi svoje potrebe sadržaju ekrana i dati da se pokažu željene informacije. Prozori na primjer sadrže: - Različite slobodno centrirane poglede radne ćelije robota. - Učeće elemente opsluživanja. - Aktuelnu poziciju robota u koordinatama osovine i okruženja. - Izvorni kod programa robota - Pozicije i perzistente liste podataka - Ulazi i izlazi programa, prijave greški - Tunel upravljanja za regulator i elektroniku uvođenja. - Stanja robota ulazi-izlazi. - Različiti dijalozi konfiguracije. Ćelije se sastavljaju iz komponenti biblioteke kao što su: roboti, alati, uređaji za dovođenje i slično. Sa integriranom 3D-CAD komponentom mogu se, polazeći od toga, izgraditi novi objekti ili modificirati postojeći. Generalno, objekti se mogu slobodno smjestiti. Sistem simulacije robota dopuštaju kontrolu dostizanja programiranja kao i simulaciju uključujući određeno vrijeme ciklusa. Kako za istraživanja dostizanja isto tako i za programiranje, oni nude Sljedeće mogućnosti za utvrđivanje pozicija i orijentacije: - Isključenje u analogiji za upravljanje robotom. Preko kopiranog elementa za

opsluživanje ručnog aparata za programiranje, robot može raditi u koordinatama osovine, okoline ili alata. Položaj prihvatnice pri tom opisuje jasnu poziciju i orijentaciju u, za osnovu uzetom, koordinatnom sistemu.

- Pozicije se mogu relativno definirati uz objekte. Poslije selekcije nekog objekta, pozicija se može relativno čvrsto vezati uz ovaj objekt.

- Određivanje pozicije klikom na miš. Klikom na miš u prozoru za predstavljanje ćelije može se definirati jedna pozicija. Dvostrukim klikom robot pokreće ovu poziciju ukoliko se ona može dostići.

Pošto je postizanje svih pozicija osigurano korištenjem gornjih mogućnosti i uz to se po potrebi pomiču objekti, mora se programirati ćelija, Uz ovo se, na primjer u okviru kontrole postizanja može izvaditi jedna lista pozicija. Uz programiranje COSIMIR podržava jezik robota (na primjer IRL, RAPID,..) da se programi mogu pisati u jednom prozoru. Sintaktička korektnost ovih programa može se ispitati pritiskom na taster, i onda izvoditi. Kod izvođenja svi objekti ćelije animiraju se blisko realnosti. Za vizueliziranje se mogu proizvoljno otvoriti mnogi, slobodno izabrani pogledi ćelije kao vlastiti prozori. Grafička kvaliteta predstavljanja dovoljna je od predstavljanja žičanog okvira pa do zasjenjenog predstavljanja. Pored simulacije kretanja robota razumljivi su svi drugi slučajevi u ćeliji, kao na primjer hvatanje, transportni slučaj, odredbe za sezonske aktivnosti, tako treba uvažiti i sve interakcije kroz izmjenu signala. Nadalje simulacijski sistem postavlja univerzalne presjeke za integraciju različitih upravljanja robotom (slika 5.7.)Kroz to je moguće postići slaganje toka puta između simulacije i realnog izvođenja u robotskom sistemu. Uobičajeni način primjene sistema simulacije robota u sistem integriše «univerzal» upravljanje robotom, odgovarajuće upravljanje robotom je

Page 55: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

54

parametrizirano. Budući da proizviđač upravljanja ipak ne predočava svoje iskustvo ponuđač simulacionog sistema mora izaći iz usvajanja. Ovo vodi tome da simulirani tok puta naročito naročito kod prebrušavanja i obrade singulariteta i višeznačnosti odstupa od realnog puta.Ovo može voditi tome, da program robota u simulaciji korektno funkcioniše, ali u realnosti vodi koliziji.

Page 56: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

55

6. Objektno orijentisano programiranje Objektno orijentisano programiranje (Object Oriented Programming OOP) je novi pristup realizaciji softvera kao modela realnog svijeta. To je poseban način razmišljanja pri projektovanju programa. OOP sadrži nekoliko ključnih koncepata: klase i objekte, nasljeđivanje i plomorfizam. Softver ima za cilj da modeluje realni svijet. OOP ima za cilj da programski model bude što bliži realnom svijetu. Najbolje pojašnjenje OOP je da se na jednom primjeru pokaže zapravo način razmišljanja na Objektno orijentisanom programiranju. Zamislimo jednu fabriku u kojoj se proizvode ekseri. U tom pogonu nalazi se mašina za proizvodnju i pakovanje eksera od metalne žice. U mašinu s jedne strane ulazi žica, a s druge strane ispadaju ekseri. Gotovi ekseri padaju iz mašine u veliki sanduk iz kojeg druga mašina uzima eksere i pakuje ih u kartonske kutije. Obje mašine opslužuje jedan radnik. Kada mašina za proizvodnju eksera potroši žicu, automatski se isključuje, a radnik donosi novu žicu, postavlja je na ulaz mašine i ponovo uključuje mašinu. Poslije dužeg rada, u mašini za proizvodnju eksera potroši se nož za sječenje žice. Tada se mašina opet automatski isključuje, radnik stavlja novi nož i uključuje mašinu. Pretpostavimo još da mašina za pakovanje eksera radi nešto sporije od mašine za proizvodnju, tako da se sanduk vremenom može prepuniti ekserima. Tada posebni automat koji detektuje prepunjenje sanduka vremenom može prepuniti ekserima. Tada posebni automat koji detektuje prepunjenje sanduka isključuje mašinu za proizvodnju. Kada radnik vidi da se sanduk dovoljno ispraznio, uključuje ponovo mašinu za proizvodnju. Da ne bismo komplikovali proces pretpostavimo da kartonske kutije dolaze automatski preko trake zbog čistog pojednostavljenja. Potrebno je napraviti programski model ovog sistema.

Slika 6.1: Realni svijet Mašina proizvodi eksere od žice. Žicu prinosi radnik. Ekseri padaju u kutiju. Druga mašina pakuje ekser. Radnik nadgleda proces te uljučuje mašinu za pakovanje. Pokušajmo da opisani sistem prvo modeliramo na tradicionalni način kako se to radi u programskom jeziku FORTRAN (Slika 6.2.). Sistem modeliramo postupkom koji se sastoji od koraka. Razmišljamo, po koracima, kako i kada se nešto radi. Postavlja se najprije žica i uključuje se mašina. Zatim se izvršava proces proizvodnje i pakovanja eksera: odsijeca se dio žice, pravi se glava eksera i izbacuje gotov ekser u sanduk. Ispituje se da li se nož istrošio; ako jeste, isključuje se mašina, stavlja se novi nože i uključuje

Page 57: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

56

mašina ponovo. Ispituje se da li je sanduk pun; ako jeste isključuje se mašina, nastavlja se proces pakovanja, poslije čega se ponovo vraća na početak procesa. Ovo je naravno, samo jedan od načina algoritamskog modeliranja kod koga se je namjerno naglašavalo razmišljanje u koracima.

Slika 6.2: Algoritamski model

Page 58: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

57

Posmatrajmo sada problem na objektno orijentisani način. Sada se problem, a ne rješenje problema razlaže na dijelove. U problemu se uočavaju objekti koji nešto rade. Bitno je šta oni to rade, a ne kako oni to rade (Slika 6.3.). U opisanom sistemu uočavamo najprije objekat MAŠINA koja proizvodi eksere. Kako ih to ona prizvodi, za korisnika mašine to nije bitno. Čovijek uopće ne mora da zna da mašina najprije koristi nož za odsijecanje žice, da zatim koristi čekić za izradu glave eksera itd. Njemu je bitno da mašina izima žicu i izbacuje eksere. Samo onome koji pravi mašinu, odnosno njen model, bitan je način kako ona to radi. RADNIK je drugi objekat koji prinosi žicu i uključuje mašinu. ŽICA je također objekat. Mašina proizvodi eksere-objekte i stavlja ih u SANDUK, opet objekt. Kada se sanduk napuni, on indirektno isključuje mašinu. MAŠINA ZA PAKOVANJE je sljedeći objekat, one uzima objekte-eksere iz objekta-sanduka, uzima objekte-kutije i proizvodi objekte-pune kutije. Mašina za prizvodnju eksera kao objekat ima svoja stanja: ili radi ili ne radi, zbog nedostatka žice, ili neradi zbog punog kartonskog sanduka ili zbog tupog noža. Čovjek spolja ne mora da zna na koji način se unutar mašine precizno izvršava prelazak iz radnog u stanje mirovanja, jer je to stvar realizacije mašine. Radnik samo zna, na primjer, da mašina prevodi iz radnog u neradno satnje akcijom automata koji uključuje ili isključuje. Radnik neprekidno provjerava stanje mašine i, ako uoči da ona ne radi, ispituje uzrok i otklanja ga, a zatim uključuje mašinu. Radnik treba ponekad da izvrši akciju nad mašinom-objektom, tako što će joj zamijenuti nož, i time je dovesti u stanje spremnosti za rad, a zatim će je prevesti u stanje rada. Kada se sanduk sanduk prepuni, radnik ne treba da vrši nikakvu posebnu akciju nad mašinom, osim da je upali kada se sanduk isprazni, čime je opet prevodi u stanje rada. Na slici 6.3. je šematski prikazan ovaj objektni model. Objekti se predstavljaju kao blokovi “Kutije”, čija se unutrašnjost ne vidi. Unutrašnjost objekta je njegovo trenutno stanje i način na koji se to stanje realizuje, kao i način na koji se konkretno prelazi iz stanja u stanje. Spolja se nad objektom mogu vršiti samo akcije koje mjenjaju ili ispituju njegovo trenutno stanje. Drugi objekti sarađuju sa dati objektom samo preko prikaznih akcija.

Slika 6.3: Objektni model

Pokušajmo da usporedimo sada ova dva objekta, prema onome koliko je lako nad njima vršiti izmjene ako se originalni sistem promijeni. Pretpostavimo da je unutrašnja organizacija mašine za proizvodnju eksera takva da ona zahtijeva još neke resurse, recimo ulje za podmazivanje koje se vremenom troši. U algoritamskom pristupu bi smo morali da uočimo mjesto u algoritmu na koje treba ubaciti još jedan uslov za zamjenu ulja. Objekt radnik treba i dalje da ispituje stanje mašine i da po potrebi treba da izvrši novu akciju zamjene ulja. Pretpostavimo dalje da je potrebno da umjesto jedne mašine

Page 59: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

58

za pakovanje, jednoj mašini za proizvodnju pridružimo dvije mašine za pakovanje, kao bismo skratili vrijeme stajanja mašine za proizvodnju zbog punog radnog vremena odnosno skraćenje zastoja. Objektni pristup omogućava da se na jednostavan način definiše više objekata istog tipa- više mašina za pakovanje. Svaka od ovih mašina potpuno ravnopravno će uzimati eksere iz sanduka, a ostatak modela ( mašina i sanduk) ne trpe nikakve promijene. U prikazanom algoritamskom modelu to nije tako lahko izvesti. Najzad, zamislimo da fabrika ima nekoliko ovakvih mašina, ali u različitim podsistemima. Objektni pristup opet jednostavno omogućava multipliciranje objekata istog tipa. Možemo zaključiti da je objektni pristup bliži originalu, a to je kao što je kazano, jedan od ciljeva programiranja. Objektno orijentisano modeliranje je širi pojam koji predstavlja način razmišljanja o problemu i kreiranje apstraktnog modela problema. Objektno orijentisano programiranje, sa druge strane, predstavlja tehniku realizacije ovog modela. O objektno orijantisani jezici kakav je C++, posjeduju koncepte koji omogućuju lahko uobličavanje objektnog modela u računarski program. OOP je smišljeno krajem sedamdesetih kao odgovor na softversku krizu. Sofverska kriza je fenomen koji je nastao kada su mogućnosti računara naglo porasle, a time porasli i zahtjevi za kompleksnim softverom. Pokazalo se da organizacija velikih softverskih projekata nije više dovoljno dobra da bi bila u stanju da izađe na kraj sa velikim zahtjevima korisnika. Projektovanje, izrada i održavanje softvera postali su preskupi, preglomazni poslovi koji su davali sve manje rezultate u odnosu na rad u koji se i njih ulagao. Pored toga, greške u softveru postajale su sve ozbiljnije i teže za uočavanje i otklanjanje. Može se izdvojiti nekoliko problema koji su doveli do softverske krize: Prvo, zahtjevi korisnika su se drastično povećali. Za to su uglavnom «krivi» sami programeri. Oni su korisnicima pokazivali šta sve računari mogu. A računari su mogli mnogo više nego što su korisnici mogli da očekuju. Kao odgovor, korisnici su počeli da traže mnogo više nego što su programeri bili u stanju da postignu. Da bi se odgovorilo na zahtjeve korisnika, bilo je neophodno postići veću produktivnost programera. Prirodno je bilo povećati timove programera koji realizuju složene sisteme. Međutim, povećanje broja ljudi donosi više briga u organizaciji projekta. Kada se radi o velikom timu, potrebno je podijeliti posao tako da dijelovi koje su realizovali različiti ljudi mogu uspješno da se uklope u cjelinu. Iskusnijim programerima, a naročito onima koji su radili u timu, jasno je koliko muke donosi skladanje dijelova programa u cjelinu. Tradicionalno programiranje podrazumijeva programiranje po modulima. Često se dešava da svaki modul za sebe radi sasvim korektno, ali da cjelina nikako ne funkcioniše. Tajna je u tome što moduli u tradicionalnom programiranju imaju prejake interakcije. Više puta se programski kod jednog modula oslanja na internu realizaciju drugog modula. Programer koji realizuje jedan modul može namjerno da zanemari činjenicu na koji se je oslonio programer drugog modula, prosto zato što činjenica nema nikakvog posebnog uticaja na rad samog modula u kome se nalazi. Međutim, ta činjenica možda ima uticaj na rad drugog modula. Na taj način može se nastati greška koja se pojavljuje tek kada se moduli sklope u cjelinu. Nažalost, takve se greške teško otklanjaju. Prema tome ključ uspjeha velikih softverskih projekata je podjela posla na dijelove koji imaju jasno specifikovane interakcije i koji ne zalaze jedan u drugi u unutrašnjost. Bolja proizvodnja softvera može se postići i ponovnom upotrebom već napisanih dijelova softvera ( eng. Software reuse). Često se događa da programer shvati da je već mnogo puta realizovao neku strukturu podataka ili algoritama koji mu ponovo treba, ali ga ne može ponovo upotrijebiti bez značajnih izmjena, i zato se često odluči da ga

Page 60: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

59

napise ponovo. Ovo znači da tradicionalno programiranje ničim ne pomaže programeru da program, napiše tako da ga kasnije ponovo može iskoristiti. Dalje, povećani su značajno i troškovi održavanja softvera. Tradicionalno programiranje ne obezbjeđuje koji su jasno strukturirani, čitljivi i lahki za modificiranje. Dešava se da jedna ispravljena greška u programu generiše niz novih grešaka. Tradicionalno programiranje ne obezbjeđuje mehanizme koji mogu da «lokalizuju» realizaciju nekog dijela programa i tako spriječe da se izmjene u nekom dijelu softvera odraze ne ostatak sistema. Mora se naglasiti da tradicionalno programiranje ne obezbjeđuje mehanizme koji garantuju sve navedene prednosti, ali ipak omogućava da se naprave veliki i ispravni programi. Međutim, da bi se napravio veliki i ispravan program tradicionalnim načinom programiranja, potrebno je striktno poštovati mnoga stroga pravila pisanja »čistog» koda. Strogo poštovanje pravila nije u čovjekovoj prirodi, a tradicionalno programiranje ne pomaže programeru da se tih pravila pridržava. Zato se kod ovakvog pristupa lako potkradaju greške koje se teško uočavaju. Objektno orijentisano programiranje daje odgovore na pobrojane probleme. On nudi mehanizme koji automatski kontrolišu interakcije između dijelova softvera. OOP je nastao kao prirodan odgovor na nabrojane probleme. Njega su smislili programeri čisto da sebi olakšaju život. 6.1. Programski jezik C++ Jezik C++ je objektno orijentisani jezik opće namjene. Pogodan je kako za sistemsko tako i za aplikativno programiranje. Jezik C++ je sredstvo za primjenu objektno orijentisanih koncepata. Treba ga shvatiti kao pogodan alat koji se zamisao u objektnom duhu sprovodi u djelo. Jezik C++ ipak nije čisto objektno orijentisani jezik. On je nastao kao nasljednik jezika C, pa je zadržao i koncepte tradicionalnog programiranja. U jeziku C++ se i dalje mogu pisati ne-objektno orijentisani programi, poput onih u jeziku C. Čisti objektni jezici dozvoljavaju samo objektne koncepte. Zato se C++ naziva hibridnim jezikom. Jezik C++ je zamislio, početkom 80-tih godina Bjarne Stroustrup, američki programer iz Bell laboratorija preduzeća AT&T. Danas Bell laboraatorija je poslije 1995 godine pripala Lucent technology, firma za telekomunikacije. Bjarne S. Bio je zaposlen kao programer na velikom projektu, za koji mu je bilo jasno da ga neće efikasno završiti bez primjene novih koncepata u programiranju. Kako je jezik C bio najpopularniji među profesionalnim programerima, Stroustrup je jeziku C dodao osnovne koncepte OOP-a ( klase i objekte), po ugledu na jezik SIMULA. Treba zato naglasiti da jezik C++ nije prvi jezik koji je uveo objektno orijentisane koncepte. Prvobitno je Stroustrup realizovao jezik tako što se programu u novom jeziku, koji se tada još uvijek zvao « C sa klasama », pretprocesirao u program u jeziku C. Jezik Jezik se proširivao tokom 80-tih, bio proširivan novim konceptima i dobijao prave kompajlere na mašinski jezik. Danas je C++ savremen i moćan jezik. 1997 godine je konačno jezik C++ standardiziran od strane ANSI i ISO, do tog vremena C++ nije bio standardiziran. Jezik C++ se toliko koristi i toliko se je raširio da je definitivno najviše korišteni objektno orijentisani jezik. Jezik C++ je izvršio povratni uticaj na svog prethodnika na jezik C, tako da skoro svi koncepti iz jezika C++ koji nisu objektno orijentisani dodani su u jezik C.

Page 61: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

60

6.2. Kratki pregled osnovnih koncepata jezika C++ Kao odgovor na softversku krizu, OOP pruža nekoliko bitnih koncepata koje podržava i jezik C++. To su:

1. Apstarktni tipovi podataka. Kao što je u jeziku FORTRAN ili nekom drugom jeziku postoje ugrađeni tipovi podataka ( kao npr. cjelobrojni int, realni real i sl.), u jeziku C++ programer može proizvoljno definisati svoje tipove i potpuno ravnopravno ih koristiti. Na primjer, programer može definisati tipove: complex, point, disk, printer, jabuka, bankovni račun i sl. Korisnik može definisati proizvoljan broj varijabli svog tipa i potpuno ravnopravno ih koristiti. Na primjer, korisnik ( programer) može definisati svoje tipove podataka i za njih definisati operatore pomoću kojih može manipilisati s njima. Prema tome, tipovi podataka u OOP i jeziku C++ mogu biti pojmovi koji predstavljaju apstrakcije iz problema koji se modelira. Apstrakcija se smatra skup objekata iz problema koji imaju neka zajednička svojstva, bitna sa stanovišta njihovog okruženja.

2. Klasa. Klasa je osnovna organizaciona jedinica programa u OO jeziku kakav je i C++. Klasa predstavlja tip, skup objekata istih osobina. Klasa je tip, a objekat je primjerak te klase. Klasa predstavlja neki apstarkni tip koga definiše korisnik jezika, tj. Programer. Zato se klasa u jeziku C++ još zove i korisnički tip, za razilku od tipova koji su već ugrađeni u sam jezik. Klasu npr. predstavlja sve mašine za proizvodnju eksera istih svojstava, svi računari klijenata i sl. Na slici 6.6. dijagramski je prikazana je klasa sa imenom mašina. Svaka klasa ima svogkonstruktora koje se automatski poziva kada se objekt klase instancira i destruktora kada se objekt uništava. Samim ti svaka klasa je sačinjena iz sljedećih kompnenata:

- Konstruktora - Destruktora - Funkcija članica - Varijabli članica

3. Enkapsulacija – skrivanje detalja realizacije nekog tipa. Realizacija nekog tipa može da bude skrivena od ostatka sistema ( od onih kojih ga koriste). Potrebno je korisnicima tia precizno definisati samo šta se sa tipom može uraditi, a način kako se talno radi sakriva se od korisnika (definiše se skriveno). Termin enkapsulacija se može slobodnije prevesti i kao “učahuravanje” neke cjeline, ili skrivanje informacija. Ako se vratimo na primjer mašine s ekserima, onda tip predstavlja cio skup pojedinačnih mašina za proizvodnju eksera iste vrste. Svaka pojedinačna mašina je poseban primjerak ( pojava, instanca) tog tipa. Tip opisuje ista svojstva cijelog skupa primjeraka . Interna realizacija mašine kao tipa, kao što smo vidjeli, nije bitna za ostatak svijeta, pa je treba sakriti. Skrivanje pomaže u kasnijim izmjenama realizacije. Ako se želi izmjena nekog detalja realizacije datog tipa, nema rizika da se time prouzrokuje neka greška u ostatku modela jer je sigurno da niko spolja ne oslanja na detalje realizacije, prosto zato što te detalje ne može vidjeti.

Page 62: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

61

4. Nasljeđivanje. Ovo je, mnogi se slažu najvažniji koncept OOP-a. Objasnimo ga samo ukratko na jednom primjeru. Pretpostavimo da je u program već formiran tip štampača printer koji ima operaciju nalik na print_line ( oštampaj liniju teksta), line_feed (pređi na novu stranicu ), goto_xy(odi na poziciju sa koordinatama x i y) itd., i da je predueće u kome se koristi ovaj program nabavio i štampače koji imaju bogatiji skup stilova pisama i želja je da se i oni koriste. Nepotrebno je kreirati novi tip ispočetka ili prepravljati stari kod. Dovoljno je kreirati novi tip štampača PrinterWithFonts koji je baš kao i običan štampač samo još može da mijenja stilova fonta. Novi tip će aditi kao i stari samo još ponešto više moći da uradi.

5. Polimorfizam. Vratimo se na prethodni primjer. Pošto je PrinterWithFonts već ionako jedna vrsta tipa printer, jer je to prethodno obezbjeđeno odgovarajućim mehanizmom nema razloga da ostatak programa koji koristi ovaj tip, ne koristi njega na isti način kako i običan štampač, sve dok mu nisu potrebne neve mogućnosti štampača. Ranije napisani dijelovi programa koji koriste tip Printer nemoraju se uopće prepravljati, oni će isto tako dobro raditi i sa novim tipom. Štampači novog tipa će vrđiti ispis na sebi svojstven način, dakle sa stilovima koje posjeduju iako ih ostatak programa smatra starim štampačima. Pod određenim uslovima, stari dijelovi programa ne moraju se čak ponovo ni kompajlirati. Karakteristika da se nivi tip «odaziva» na novi, sebi svojstven način, iako ga je neko spolja «prozavo » kao stari tip, zovemo polimorfizam.

Jezik C++ ima još jedan koncept koji ne spada u grupu osnovnih koncepata OOP-a. To je koncept preklapanja operatora. Da bi tipovi koje definiše programer bili sasvim ravnopravni sa ugrađenim tipovima, i za njih se u jeziku C++ mogu definisati značenja operatora koji postoje u jeziku. Na primjer, ako je korisnik definisao tip kompleksin brojeva, odnosno preklopio operatora sabiranja i množenja slobodno možemo pisati c1+c2, c1*c2, ako su apstraktni tipovi complex c1,c2. Sve navedene osobine mogu se pojedinačno na neki način realizirati u tradicionalnom jeziku, ali je realizacija svih koncepata svih zajedno vrlo teška ili sasvim nemoguća. U svakom slučaju, realizacije nekog tipa od ovih principa u tradicionalnom jeziku umnogome otežava rad oko održavanja softvera i smanjuje čitljivost koda. Jezik C++ prirodno podržava sve navedene koncepte. Oni su ugrađeni u sam jezik. 6.3. Microsoft Visual C++ Microsoft kao svjetski lider u softverskoj industriji razvio je aplikaciju koja dozvoljava vizualno programiranje tj. programiranje pomoću Microsoftovih biblioteka za Operativni sistem Windows. Visual C++ je alat za programiranje koji Microsoft razvija unazad 10-tak godina, i koji je postao najčešće korišten alat za programiranje u Windowsima. U Visual C++ postoje nekoliko uslužnih biblioteka na kojima se baziraju aplikacije. MFC Microfoft Fondation Classes je Microsoftova biblioteka uslužnih klasa koja pomaže programeru da zaobiđe hiljade linija koda kod razvijanja softvera u OS Windows. Također u Visual C++ postoje i ATL Active Template Library Biblioteka aktivnih šablona koji Microsoftov tim razvija u zadnjih 3 godine. MFC sadrži nekoliko desetina klasa i nekoliko stotina funkcija članica. Slika 6.7. prikazuje MFC dijagram klasa.

Page 63: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

62

Slika 6.4: MFC Dijagram

6.4. OpenGL Otvorene grafičke biblioteke Softverski interfeis za grafički hardver, može se jednostavno kazati za OpenGL. Glavna zadaća OpenGL je renderiranje 2D i 3D objekata u okvirni bafer ( frame buffer). Ti objekti su opisani kao sekvence vrhova ( koji definišu geometrijski objekt) ili piksela (koji definišu sliku). OpenGL zahtjeva da se u nekoliko koraka procesiraju podaci u piksele za dobijanje željene slike na ekranu. Ovaj interfeis sadrži oko 150 različitih komandi koje se koriste za određivanje objekata i operacija potrebni za proizvodnju interaktivnih 3D aplikacija. OpenGL je dizajniran kao protočni, hardverski nezavisan interfeis koji može biti implementiran na mnogim različitim hardverskim konfiguracijama-platformama. Da bi se postigla takva hardverska neovisnost u OpenGL-u ne postoji ni jedna komanda koja bi tražila korisnikov unos, nego se unos podataka korisnika prenosi preko operativnog sistema koji kontroliše hardverske komponente. Također OpenGL ne obezbjeđuje komande visokog nivoa za određivanje 3D modela. Kada se kaže komande visokog nivoa misli se na složena tijela npr. automobil, dijelove tijela i sl. Sa OpenGL –om može se graditi željeni model iz malog skupa primitiva koje obezbjeđuje OpenGL( tačke, linije, i poligone). Sofisticirane biblioteke koje obezbjeđuju složene objekte mogu se graditi preko OpenGL-a. Tako je kreirana openGL Utility Library ( GLU) koja obezbjeđuje razne dijelove složenih modela: kvadratik, zakrivljene površine, NURBS krive. GLU je standardni dio svakog implementacijskog sistema OpenGL. OpenGL zbog velikog broja komandi i funkcija standardizirao je svoju konvenciju imena funkcija, konstanti kao i tipove podataka. Svako ime funkcije, varijable stanja ili tipove počinje sa prefiksom “gl”. Npr. funkcije glClearColor() je naziv jedne funkcije OpenGL, velika slove sa crticom GL_ počinje

Page 64: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

63

imena svih konstanti u OpenGL npr. GL_COLOR_BUFFER_BIT. Imena fukkcija imaju i još jednu konvenciju a to je da u imenu funkcije stoji i broj parametara koji funkcija prima te i tip parametra. Tako kada napišemo: glVertex3f(),funkcije Vertex() prima 3 parametra sa tipom float ( realni broj), odnosno glVertex3i(), funkcije prima tri int (cjelobrojna) parametra. Tabela dolje prikazuje tipove podataka i konvenciju zapisa u OpenGL-u.

Tabela 6-1 : Komandni Sufiksi i argumenti tipove podataka

Suffix Tip podatka Reprezentacija u C++-u OpenGL definicija tipa

b 8-bit integer signed char GLbyte

s 16-bit integer short GLshort

i 32-bit integer int or long GLint, GLsizei

f 32-bit floating-point float GLfloat, GLclampf

d 64-bit floating-point double GLdouble, GLclampd

ub 8-bit unsigned integer unsigned char GLubyte, GLboolean

us 16-bit unsigned integer unsigned short GLushort

ui 32-bit unsigned integer unsigned int or unsigned long GLuint, GLenum, GLbitfield

Skoro sve implementacije OpenGL-a imaju isti poredak operacija. Odnosno to je serija procesnih faza nazvanih OpenGL renderirani cjevovod. Poredak koji je također prikazan na slici 6.8. nije striktno pravilo kako se OpenGL implementira, ali je dobra vodilja da se shvati kako to OpenGL radi.

Slika 6.5: Poredak operacija u OpenGL-u

Page 65: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

64

Slika 6.8. prikazuje Henry Ford-od linijsko sklopni pristup OpenGL-ovog procesiranja podataka. Geometrijski podaci ( tjemena, linije i poligoni ) prolaze kroz putanju a to je evalvator i operacije po tjemenu, za to vrijeme podaci piksela ( pikseli, fotografije i slike) se tretiraju kao različiti dijelovi procesa. Obadva tipa podataka podvrgavaju se istom ciljnom koraku ( rasterizaciji i operacijama po fragmentu) prije završnog zapisa podatka piksela u famebuffer.

Jedna od najuzbudljivijih stvari koja se može realizirati sa kompjuterskom grafikom je prikaz slike koja se kreće. Bilo da je riječ o inženjeru koji pokušava da vidi sve strane mašinskog dijela koji konstrruiše, ili pilota koji želi da nauči letjeti koristeći similacijski softver, ili se zabavljati sa kompjuterskim igricama, sigurno je animacija važan dio kompjuterske grafike. Poznato je da se animacija ostvaruje brzim izmjenama statičkih slika. Izmjena se vrši tako brzo da naše oko ne može primijetiti izmjenu pa se prividno odvija jedan kontinualni proces. Kompjuterska grafika obezbjeđuje da se naš ekran osvježava približno 60-70 puta u sekundi, pa čak i do 120 puta u sekundi. Da bi se osvježavao ekran tako da naše oko ne primijeti nikakav nus produkt , u kompjuterskoj grafici poznat je termin double buffering ili duplo baferovanje. To je proces pri animaciji kao i svakom drugom softveru da se definišu dva buffera u koji se stavljaju podaci koji se šalju na ekran monitora. Pri takvom procesiranju izmjena statičkih slika odvija se za naše oko kontinuirano pa se na taj način stvara virtualna stvarnost.

Page 66: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

65

7. RoBoSIM program za simuliranje SCARA robota U okviru diplomskog rada realizirao sam program za simuliranje SCARA robota. Kroz prethodna poglavlja definisao sam neophodne dijelove za konačnu realizaciju programa. Tako sam kroz poglavlje 2 modeliranje definisao geometrisko kinematički model SCARA robota. U poglavlju 2 također, sam riješio direktni i inverzni kinematički problem, koji mi je bio potreban za definisanje simulacije. Kroz poglavlje simulacija definisao sam osnovne pojmove simulacije, programski jezik u kojem sam progamirao te i grafičke biblioteke u kojem samo modelirao geometrijsko kinematički model. RoBoSIM je 32 bitna aplikacija koja radi pod Operativnim sistemom Windows 95, Windows 98, Windows 2000 i Windows Milenium. RoBoSIM aplikacija je urađena pomoću jezika C++, sa Microfoftovim verzijom kompajlera Visual C++, koji uključuje MFC Microfoft Fondation Classes, te grafičkim bibliotekama OpenGL firme Silicon Graphic. RoBoSIM aplikacija programirana je po najmoderniji standardima Windowsovih aplikacija, koja uključuje Toolbar, Menu, Statusbar. Ove komponente kompajlirane su po najnovijim verzijama tih resursa. Aplikacija je programirana na Bosanskom jeziku koji je cjelokupno podržan u aplikaciji ( misli se na slova č,ć,š,đ). Statistički podaci o Aplikaciji: - Broj linija koda 5214 ( oko 100 stranica kucanog teksta) - Broj failova: 55; 17 failova zaglavlja i 17 C++ failova te ostali failovi. - Broj klasa koje su definisane: 25 - Broj funkcija članica: 176 - Broj ikona kutije sa alatima: 20 - Broj menija: 6 - Broj aktivnih naredbi koji korisnik može da realizira: 30 RoBoSIM aplikacija podržava tačkasti, žičani te volumni model. Također, simulacija se može vršiti sa svakim od navedenih vrsta modela. Aplikacija podržava tzv. CULLING, skrivanje zadnjih površina modela, efekat glatkih površina i linija, te svjetlo. Za optimalni rad aplikacije potrebna je sljedeća hardverska konfiguracija:

1. Pentium 2 ili veći ( 333 MHz) 2. 32 MB ili više RAM-a 3. Grafička karta 16 MB ili više. 4. 1 GB praznog prostora na Hard Disku.

Naravno aplikacija može da radi i na manjom hardverskim konfiguracijama ali joj se umanjuje vizualni efekt simulacije. Aplikacije je ciljana za korisnike koji u suštini i ne moraju poznavati dublje Robotiku, jer se interakcija Računar – Čovjek odvija pomoću Dijaloških okvira, koji ne dozvoljavaju unos bilo kakvih nedozvoljenih i ne validnih vrijednosti. Samim tim RoBoSIM je stabilna aplikacija koja se može koristiti i u edukacijske svrhe npr. na predavanjima i vježbama iz predmeta robotika. Ovo je prvi proizvod ovakvog tipa koji se je realizirao na Tehničkom fakultetu. Smatram da će naredne generacije moći koristiti ovu aplikaciju u realizaciji svojih diplomski i seminarskih radova u okviru predmeta Robotika.

Page 67: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

66

7.1. Dijagram Klasa i objekata RoBoSIM Slika 7.1. prikazuje dijagramski relacije svih objekata i klasa RoBoSIM aplikacije. Zeleni kvadrati prikazuju standardni tip relacije za SDI (Single Document Inteface ) aplikacije. Dijagram zorno prikazuje da u objektu dokument se čuvaju svi neophodni podaci aplikacije. Objekat SCARA, kao i upravljane koordinate, EULER-ovi uglovi, dimenzije robota, kao i vrste putanja po kojima se može kretati robot. Za razliku od Dokument klase CRoBoSIMView klasa ili klasa prikaza ostvaruje interakciju sa korisnikom, i stara se za prikaz simulacije kao i sve vrste modela. Prvi objekat je objekat aplikacije u kojem su sadržanih svi drugi objekti. Klasa CSingleDocInteface klasa je podklasa glavne klase aplikacije, a ona sadrži glavna tri objekta svake SDI aplikacije: CMainFrame- glavni okvir prozora, CRoBoSIMDoc – podaci za aplikaciju, te CRoBoSIMView prikaz podataka iz dokument klase.

Slika 7.1: Relacija Klasa i objekata za Aplikaciju RoBoSIM

Page 68: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

67

7.2. Glavne funkcije RoBoSIM aplikacije Na početku sam napomenuo da RoBoSIM aplikacije sadrži 176 funkcija članica i ne članica odnosno globalnih funkcija. Međutim, u ovom poglavlju ću spomenuti osnovne funkcije za robot SCARA, a to su:

1. CSCARA::CSCARA() – konstruktor klase CSCARA 2. void CSCARA::Robot(CDIM * dim,CDrivenCoordinates

*q,EulerAngles *ea,CForeignCoordinates *p) - funkcija članica

3. void CSCARA::Moving(CDIM * dim,CDrivenCoordinates

*q,CForeignCoordinates *p,EulerAngles *ea) - funkcija članica

4. void CSCARA::MatrixTransformation(CDrivenCoordinates

*q, CForeignCoordinates *p,EulerAngles *ea) - funkcija članica

CSCARA() je konstruktor CSCARA klase koja se poziva pri svakom kreiranju objekta SCARA. Ona inicijalizira sve neophodne početne varijable za konstrukciju robota. Izvorni kod za ovu funkciju prikazan je na Slici 7.2.

CSCARA::CSCARA() { m_first=TRUE; first=TRUE; m_origin=TRUE; opt=TRUE; m_CurPos.m_px=0; m_CurPos.m_py=0; m_CurPos.m_pz=0; m_bWeld=FALSE; m_trans=FALSE; m_hook_on=FALSE; m_leave=FALSE; }

Slika 7.2: Kod konstruktora klase CSCARA Robot() funkcija članica konstruiše robota a poziva se preko dijaloškog okvira koji će biti objašnjen kasnije. Izvorni kod ove funkcije prikazuje slika 7.3. Ova funkcija je jedna od najobimnijih funkcija jer je u njoj sadržan suštinski kod koji realizuje robota. Samo po se vidi se da ona sadrži nekoliko stotina linija koda.

Page 69: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

68

void CSCARA::Robot(CDIM * dim,CDrivenCoordinates *q,EulerAngles *ea,CForeignCoordinates *p) { quad=gluNewQuadric (); d1=dim->m_dl1; d2=dim->m_dl2; d3=dim->m_dl3; if(m_first){ q1=q->m_dq1; q2=q->m_dq2; q3=q->m_dq3; q4=q->m_dq4; } double r=sqrt(pow(d2,2)+pow(d3,2)-2*d2*d3*cos(Radian(180-q2))); double alpha=asin(d3*sin(Radian(180-q2))/r); m_CurPos.m_px=r*cos(alpha+Radian(q1)); m_CurPos.m_py=r*sin(alpha+Radian(q1)); m_CurPos.m_pz=d1-q4; static float ambient[] = { 1.00f, 0.0f, 0.0f, 1.0f }; static float diffuse[] = { 1.0f, 0.0f, 0.0f, 1.0f }; static float position0[] = { 90.0f, -90.0f, 150.0f, 0.0f }; static float position1[] = { -90.0, 90.0, -150.0, 0.0 }; static float front_mat_diffuse[] = { 0.90f, 0.0f, 0.0f, 1.0f }; static float front_mat_specular[] = { 0.90f, 0.0f, 0.0f, 1.0f }; static float front_mat_shininess[] = { 64.0f }; static float back_mat_diffuse[] = { 0.70f, 0.0f, 0.0f, 1.0f }; static float back_mat_specular[] = { 0.70f, 0.0f, 0.0f, 1.0f }; static float back_mat_shininess[] = { 32.0f }; if(d1!=0 && d2!=0 && d3!=0) { /////******************* ///// RED glColor3d(1.0,0,0); ambient[0] =1.0f; ambient[1] =0.0f; ambient[2] =0.0f; diffuse[0] =1.0f; diffuse[1] =0.0f; diffuse[2] =0.0f; front_mat_diffuse[0] =0.9f; front_mat_diffuse[1] =0.0f; front_mat_diffuse[2] =0.0f; front_mat_specular[0]= 0.9f; front_mat_specular[1]= 0.0f; front_mat_specular[2]= 0.0f; back_mat_diffuse[0] =0.7f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.0f; back_mat_specular[0] =0.7f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.0f; //////*********** glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glPushMatrix(); Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); Box(d1-d1/8,d1/2,d1/24); glTranslated(0,0,d1/24); Cylinder(d1/5,d1/5,d1/2); //***************************************** glRotated(q1,0,0,1); //****************************************** //// YELOW glColor3d(1.0,1.0,0); ambient[0] = 1.0f; ambient[1]=1.0f; diffuse[0] = 1.0f; diffuse[1] =1.0f; front_mat_diffuse[0] = 0.9f; front_mat_diffuse[1]= 0.90f; front_mat_specular[0] = 0.9f; front_mat_specular[1] = 0.90f; back_mat_diffuse[0] =0.70f; back_mat_diffuse[1] =0.70f; back_mat_specular[0] = 0.70f; back_mat_specular[1] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); /////******** glTranslated(0,0,d1/2); Cylinder(d1/8,d1/8,d1/5); glPushMatrix(); //****************************************** /// BLUE glColor3d(0,0,1.0);

Page 70: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

69

ambient[0] = 0.0f; ambient[1]=0.0f; ambient[2]=1.0f; diffuse[0] = 0.0f; diffuse[1] =0.0f; diffuse[2] =1.0f; front_mat_diffuse[0] = 0.0f; front_mat_diffuse[1]= 0.0f; front_mat_diffuse[2]= 0.90f; front_mat_specular[0] = 0.0f; front_mat_specular[1] = 0.0f; front_mat_specular[2] = 0.90f; back_mat_diffuse[0] =0.0f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.70f; back_mat_specular[0] = 0.0f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); /////******** glTranslated(0,0,d1/5); Box(3*d2/2,d1/3,2*d1/2.5); glTranslated(d2,0,d1/8); glTranslated(0,0,d1/8);//***************** //////******** /////RED glColor3d(1.0,0,0); ambient[0] =1.0f; ambient[1] =0.0f; ambient[2] =0.0f; diffuse[0] =1.0f; diffuse[1] =0.0f; diffuse[2] =0.0f; front_mat_diffuse[0] =0.9f; front_mat_diffuse[1] =0.0f; front_mat_diffuse[2] =0.0f; front_mat_specular[0]= 0.9f; front_mat_specular[1]= 0.0f; front_mat_specular[2]= 0.0f; back_mat_diffuse[0] =0.7f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.0f; back_mat_specular[0] =0.7f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.0f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); ///////******* glPushMatrix(); glRotated(180,1,0,0); Cylinder(d2/10,d2/10,d1/15); glTranslated(0,0,d1/15); Cylinder(d2/15,d2/15,d1/20); glPopMatrix(); ///////********* ////GREEN glColor3d(0,1.0,0); ambient[0] = 0.00; ambient[1]=1.0; diffuse[0] = 0.0; diffuse[1] =1.0; front_mat_diffuse[0] = 0.0f; front_mat_diffuse[1]= 0.9f; front_mat_specular[0] = 0.0f; front_mat_specular[1] = 0.90f; back_mat_diffuse[0] =0.0f; back_mat_diffuse[1] =0.7f; back_mat_specular[0] = 0.0f; back_mat_specular[1] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); //////******** Box(d2/2,d1/3,d1/7.5); glTranslated(0,0,5*d1/12); Box(d2/2,d1/3,d1/7.5); //////******** /////RED glColor3d(1.0,0,0); ambient[0] =1.0f; ambient[1] =0.0f; ambient[2] =0.0f; diffuse[0] =1.0f; diffuse[1] =0.0f; diffuse[2] =0.0f; front_mat_diffuse[0] =0.9f; front_mat_diffuse[1] =0.0f; front_mat_diffuse[2] =0.0f; front_mat_specular[0]= 0.9f; front_mat_specular[1]= 0.0f; front_mat_specular[2]= 0.0f; back_mat_diffuse[0] =0.7f;

Page 71: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

70

back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.0f; back_mat_specular[0] =0.7f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.0f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); ///////******* glTranslated(0,0,d1/7.5); Cylinder(d2/10,d2/10,d1/15); glTranslated(0,0,d1/15); Cylinder(d2/15,d2/15,d1/20); glPopMatrix(); glTranslated(d2,0,11*d1/24); //**************************** glRotated(q2,0,0,1); //**************************** //****************************************** /// BLUE glColor3d(0,0,1.0); ambient[0] = 0.0f; ambient[1]=0.0f; ambient[2]=1.0f; diffuse[0] = 0.0f; diffuse[1] =0.0f; diffuse[2] =1.0f; front_mat_diffuse[0] = 0.0f; front_mat_diffuse[1]= 0.0f; front_mat_diffuse[2]= 0.90f; front_mat_specular[0] = 0.0f; front_mat_specular[1] = 0.0f; front_mat_specular[2] = 0.90f; back_mat_diffuse[0] =0.0f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.70f; back_mat_specular[0] = 0.0f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); /////******** glTranslated(0,0,d1/8);//***************** Cylinder(d2/6.5,d2/6.5,d1/3); glTranslated(d3/2,0,0); Box(d3,d1/3.3,d1/4); glTranslated(d3/2,0,0); Cylinder(d2/6,d2/6,d1/3); glPushMatrix(); //////******** /////RED glColor3d(1.0,0,0); ambient[0] =1.0f; ambient[1] =0.0f; ambient[2] =0.0f; diffuse[0] =1.0f; diffuse[1] =0.0f; diffuse[2] =0.0f; front_mat_diffuse[0] =0.9f; front_mat_diffuse[1] =0.0f; front_mat_diffuse[2] =0.0f; front_mat_specular[0]= 0.9f; front_mat_specular[1]= 0.0f; front_mat_specular[2]= 0.0f; back_mat_diffuse[0] =0.7f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.0f; back_mat_specular[0] =0.7f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.0f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); ///////******* glTranslated(0,0,d1/3); Cylinder(d2/10,d2/10,d1/15); glTranslated(0,0,d1/15); Cylinder(d2/15,d2/15,d1/20); glPopMatrix(); glPushMatrix(); //****************************************** //// YELOW glColor3d(1.0,1.0,0); ambient[0] = 1.0f; ambient[1]=1.0f; diffuse[0] = 1.0f; diffuse[1] =1.0f; front_mat_diffuse[0] = 0.9f; front_mat_diffuse[1]= 0.90f; front_mat_specular[0] = 0.9f; front_mat_specular[1] = 0.90f;

Page 72: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

71

back_mat_diffuse[0] =0.70f; back_mat_diffuse[1] =0.70f; back_mat_specular[0] = 0.70f; back_mat_specular[1] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); /////******** glRotated(180,1,0,0); Cylinder(d3/17,d3/17,((5*d1-6*d2)/40)+q4); //**************************** glTranslated(0,0,q4); //**************************** //***************************************** glRotated(q3,0,0,1); //****************************************** glTranslated(0,0,d1/8);//***************** if(m_bWeld) { Pen(); } else { Hand(); } glPopMatrix(); glPopMatrix(); /////RED glColor3d(1.0,0,0); ambient[0] =1.0f; ambient[1] =0.0f; ambient[2] =0.0f; diffuse[0] =1.0f; diffuse[1] =0.0f; diffuse[2] =0.0f; front_mat_diffuse[0] =0.9f; front_mat_diffuse[1] =0.0f; front_mat_diffuse[2] =0.0f; front_mat_specular[0]= 0.9f; front_mat_specular[1]= 0.0f; front_mat_specular[2]= 0.0f; back_mat_diffuse[0] =0.7f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.0f; back_mat_specular[0] =0.7f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.0f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess); if(m_trans && !m_bWeld) Baha(ea,p); } //****************************************** /// BLUE glColor3d(0,0,1.0); ambient[0] = 0.0f; ambient[1]=0.0f; ambient[2]=1.0f; diffuse[0] = 0.0f; diffuse[1] =0.0f; diffuse[2] =1.0f; front_mat_diffuse[0] = 0.0f; front_mat_diffuse[1]= 0.0f; front_mat_diffuse[2]= 0.90f; front_mat_specular[0] = 0.0f; front_mat_specular[1] = 0.0f; front_mat_specular[2] = 0.90f; back_mat_diffuse[0] =0.0f; back_mat_diffuse[1] =0.0f; back_mat_diffuse[2] =0.70f; back_mat_specular[0] = 0.0f; back_mat_specular[1] =0.0f; back_mat_specular[2] =0.7f; Set_Light(GL_LIGHT0,ambient,diffuse,position0); Set_Light(GL_LIGHT1,ambient,diffuse,position1); Set_Material(GL_FRONT,front_mat_diffuse,front_mat_specular,front_mat_shininess); Set_Material(GL_BACK,back_mat_diffuse,back_mat_specular,back_mat_shininess);

}

Slika 7.3: Kod Robot funkcije članice klase CSCARA

Page 73: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

72

Moving() funkcija sadrži kod koji obezbjeđuje kretanje robota sa zadim parametrima. Slika 7. 4. prikazuje izvorni kod ove funkcija. Iz koda se vidi na se na jednostavan način odvija kretanje robota. Funkcija se odvija u nekoliko koraka a to su:

1. Poziva se funkcija za prikaz robota sa parametrima. 2. Povjerava se da li je izvršena optimizacija putanje robota ako nije poziva se

funkcija za optimizaciju ako jeste program ide dalje 3. Povjerava se da li robot tek počinje da ide u određeni položaj ako je istina robot

se sa funkcijom Home_q4(q) postavlja u položaj za kretanje inače se svi članovi moraju postaviti u nulti položaj.

4. Ako no nije istina onda se ide na funkciju Coordinates(q)odnosno izračunavaju se koordinate zglobova koji treba da zauzmu za taj trenutak simulacije.

void CSCARA::Moving(CDIM * dim,CDrivenCoordinates *q,CForeignCoordinates *p,EulerAngles *ea) { Robot(dim,q,ea,p); if(opt) Optimisation(q,p,ea); if(m_origin) Home_q4(q); else Coordinates(q); }

Slika 7.4 Kod funkcije članice Moving klase CSCARA MatrixTransformation() funkcija je pored funkcije Robot jedna je od najvažnijih. U njoj se izračunavaju homogene transformacije za poznate vrijednosti vanjski koordinata. Odnosno izračunava se inverzni kinematički problem koji sam riješio u poglavlju 2. Slika 7.5. prikazuje izvorni kod te funkcije.

Page 74: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

73

void CSCARA::MatrixTransformation(CDrivenCoordinates *q, CForeignCoordinates *p,EulerAngles *ea) { double r,F,F2,F3,AA,G; px=p->m_dpx; py=p->m_dpy; pz=p->m_dpz; theta=ea->m_dtheta; psi=ea->m_dpsi; phi=ea->m_dphi; r=sqrt(pow(px,2)+pow(py,2)); if(px>=0 && py>=0) F=asin(py/r); if(px<=0 && py>=0) F= acos(px/r); if(px<=0 && py<0) F=asin((-1*py)/r)+PI; if(px>0 && py<0) { F=asin(-1*py/r); F=2*PI-F; } G=acos((pow(r,2)+pow(d2,2)-pow(d3,2))/(2*d2*r)); AA=asin((d2/d3)*sin(G)); if((F-G)<0) { F2=2*PI+(F-G); } else { F2=F-G; } F3=AA+G; q->m_dq1=Degrees(F2); q->m_dq2=Degrees(F3); q->m_dq3=(q->m_dq2)+(q->m_dq1)-theta; if(q->m_dq3>180) q->m_dq3-=180; q->m_dq4=d1-pz; }

Slika 7.5 Kod funkcije članice MatrixTransformation klase CSCARA

7.3. Inteface aplikacije RoBoSIM U prethodnim poglavljima prikazao sam aplikaciju iz prespektive programera i programerskih parametara. U ovom poglavlju biće detaljno objašnjen postupak rukovanja aplikacijom RoBoSIM, odnosno sa stanovišta korisnika aplikacije. Na slici 7.6. prikazan je prozor aplikacije u koje se mogu uočiti standardne komponente svake moderne aplikacije programirane u OS Windows. RoBoSIM aplikacije sadrža traku sa nazivom aplikacije, menije: Datoteka, SCARA, Simulacija, Efekti, Pogled, Pomoć, trake sa alatima, Render Scene te statusne linije.

Page 75: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

74

Slika 7.6 Početni izgled RoBoSIM aplikacije za simuliranje SCARA robota.

Render Scena je područje prozora u kojem se odvija simulacija robota. Aplikacija je tako konstruirana da omogućuje potpuni pogled sa svake željene pozicije. Odabir željenog pogleda postiže se mišom gdje pritiskom lijevog tastera te povlačenjem miša preko ekrana postižemo željenu transformaciju u X, Y, i Z smjeru. Pritiskom desnog dugmeta miša postižemo željeno zumiranje, dok pritiskom istovremeno i lijevog i desnog tastera te povlačenjem ostvarujemo rotaciju po svakoj osi koordinatnog sistema. Učitavanje robota. Učitavanje robota SCARA ostvaruje se tako što iz menija SCARA izaberemo opciju učitaj ili preko trake sa alatima izaberemo dugme sa slovom R. Poslije odabira pojavljuje se dijaloški okvir pomoću kojeg unosimo željene vrijednosti robota u metrima. Ograničenje u pogledu dimenzija je ostvareno. Nije moguće unijeti vrijednost dimanzije većih od 1 m. Urađeno je iz tog razloga što ni stvarne dimenzije ovog robota ne prelaze 1 m, a druga stvar je da se sa vrijednostima od 0-1 postižu sve kombinacije zbog geometrijske sličnosti. Slika 7.7. prikazuje dijaloški okvir za učitavanje robota.

Page 76: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

75

Slika 7.7 Dijaloški okvir za učitavanje SCARA robota.

Sa dijalog se vidi da se može učitati robot za obavljanje transporta i za zavarivanje odnosno za kretanje robota po određenoj putanji ( Ova verzija omogućuje kretanje robota po liniji i kružnici). Unosom vrijednosti i odabirom radio dugmadi za vrstu obavljanja zadatka robota, te pritiskom na dugme OK, učitavanje robota je završeno. Npr. unesimo vrijednosti L1=1,L2=0.9,L3=0.9, te odaberimo robota za transport te odaberimo dugme OK. Slika 7.7. pokazuje učitanog robota za transport. Kod odabira robota za transport pojavljuje se prihvatinca u obliku ruke, dok robot za zavarivanje učitava prihvatnici u obliku olovke.

Slika 7.8 Prikaz SCARA robota u aplikaciji RoBoSIM.

Page 77: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

76

Postavljanje pozicije robotu. Nakon što smo učitali robota u stanju smo da mu zadamo određeni položaj u koji treba da ode, odnosno poziciju predmeta koji treba da uz,e i poziciju na koju treba da odnese predmet. Prije toga ispitajmo šta meni efekti sadrži. U meniju Efekti nalazi se opcije za odabir modela. Tako da možemo volumni model robota koji je automatski učita pretvoriti preko naredbe vrste modela promijeniti u TAČKASTI i ŽIČANI model. Postaviti odnosno zadati poziciju robotu vršimo preko dijaloškog okvira koji se poziva preko menija Simulacija odabirom opcije Postavi poziciju, ili preko alatne trake odabirom dugmeta . Poslije odabira pojavljuje se različit dijaloški okvir u odnosu kakav smo odabrali robot za transport ili zavarivanje. Slika 7.8. i 7.9. pokazuje oba moguća dijaloška okvira.

Slika 7.9 Dijaloški okvir robota za transport.

Slika 7.10 Dijaloški okvir robota za zavarivanje

Slika 7.9. prikazuje spomenuti dijaloški okvir te unošenjem vrijednosti položaja objekta zadajemo komandu robotu. Odabirom radio dugmeta za transport tek tad smo u mogućnosti da unesemo željeni položaj u koji robot treba da odnese predmet. Ako to nismo učinili tada će se simulacija odvijati bez transporta predmeta. Znači čisto kretanje robota. Npr. unesimo sljedeće vrijednosti:

Page 78: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

77

Položaj objekta: px=-1, py=-1,pz=0.2, theta=45 ( u stepenima) kliknuti na radio dugme Transport, X=1,Y=1, Z=0.5. Kada se odabere robot za zavarivanje pojavljuje se dijaloški okvir kao na slici 7.10. prvi korak je da odaberemo vrstu kretanja robota odnosno linijsko ili kružno zavarivanje. Odabirom vrste zavarivanja tek smo u stanju da unesemo vrijednosti. Npr. odaberimo kružno zavarivanje i unesimo sljedeće vrijednosti: Xc=0,Yc=0, Zc=0.3, Radijus=1.4. na kraju odaberimo Ok. Kada smo postavili položaje u mogućnosti smo da pokrenemo simulaciju. Ako smo odabrali transportovanje predmeta simulaciju pokrećemo pritiskom na dugme

. Kada robot uzme predmet potrebno je zadati komandu robotu da predmet prenese u definisani položaj. Prijenos predmeta ostvarujemo pritiskom na dugme . Aplikacija ima mogućnost da se ove dvije komande zadaju istovremeno ako se dva puta pokrene komanda . Ako smo odabrali simulaciju za zavarivanje pokrećemo je pritiskom na dugme . Ostale komande simulacije su zaustavljanje simulacije u bilo kojem položaju robota, komanda da robot zauzme nulti položaj. Sljedeće slike pokazuju robota u obavljanju zadataka prenošenja (transporta) ze zavarivanja odnosno kretanja po zadanoj putanji ( kružnici i liniji).

Slika 7.11 SCARA Robot prenosi transport

Page 79: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

78

Slika 7.12. Zavarivanje sa SCARA robotom

Slika 7.13. Zavarivanje sa SCARA robotom

Page 80: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

79

7.4. Izlazne vrijednosti Aplikacije Izlazne vrijednosti svakog programa pored simulacije predstavlja važan dio. Izlazne vrijednosti RoBoSIM aplikacije nalaze se u meniju SCARA a to su:

1. Tekuća pozicija prihvatnice. Ovaj prozor prikazuje trenutni položaj prihvatnice za bilo koji trenutak vremena. Slika 7.11. prikazuje spomenuti prozor.

Slika 7.11. Prozor tekućeg položaja prihvatnice

2. Homogene transformacije. Ovaj prozor prikazuje homogene transformacije za bilo koji zadani položaj robota.

Slika 7.12. Prozor Homogenih transformacija

3. Upravljene koordinate. Ovaj prozor prikazuje tekuće upravljane koordinate.

Slika 7.13. Prozor Upravljanih koordinata

Page 81: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

80

4. EULER-ovi uglovi.

Slika 7.14. EULER ovi uglovi

5. Dimenzije robota

Slika 7.15. Dimenzije robota

Ovdje su pobrojane glavne funkcije i mogućnosti RoBoSIM aplikacije. Aplikacija je kao što je pomenuto napisana u jeziku C++, što znači da se može obagaćivati novim vrstama robota jer to dozvoljava objektno orijantisani koncept. Napomenimo još da je RoBoSIM aplikacija napisana zadnjom verzijom Microsoftovog VISUAL C++ verzija 6.0. 7.5. Ostali podaci o aplikaciji te način instaliranja Napomenimo još da aplikacija zauzima preko 1 MB prostora na disku. Sadrži glavni direktorij RoBoSIM u kojem se nalazi exe dataoteka aplikacije. Također se nalazi još i direktorij Dana, koji sadži bitmap datoteke koje su potrebne aplikaciji. Postupak instalacije RoBoSIM-a.

1. CD koji se nalazi kao prilog diplomskog rada ubacite u CD drive. 2. Otvorite sadržaj diska. 3. Iskopirajte direktorij RoBoSIM na bilo koju lokaciju vašeg računara. 4. Otvorite direktorij te pokrenite program. 5. Također se može kreirati schortcut na desktop ili u start – programms.

Page 82: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

81

Zaključak Razvoj informatike kao i hardverskih komponenta doveo je do stadija kada inženjer može svoje ideje i konstrukcijska rješenja vidjeti i prije same primjene. To mu omogućava modeliranje i simuliranje problema. Također razvoj numeričkih metoda, a koje su opet uslovljene razvojem informatike dovode do rješavanja i onih problema (diferencijalnih jednačina) koje je bilo skoro nemoguće za riješiti. Pojava objektno orijentisanih programskih jezika dovela je do nezamislivog razvoja softverske industrije. Danas, skoro da ne postoji naučna disciplina o kojoj nije modeliran neki softverski paket striktno iz datog područja. Softverska kriza je prevaziđena pojavom objektno orijentisanih programskih jezika. Ovaj Diplomski obradio je analizi simuliranja robota. Na početku rada dana je kinematska analiza robota koja je vrlo važan faktor simuliranja robota. U tom poglavlju spomenut je Denavit–Hartenberg–ov metoda zapisa koordinatnih sistema zglobova robota. Ovo je jedna od najčešće korištenih metoda kod simuliranja robota. Mnogo softverskih paketa koji se bave simuliranjem robota upravo koriste ovu metodu kod kreiranja robota u 3D. Drugi dio diplomskog rada bavio se Modeliranjem za simulaciju. Tu su date opće naznake modeliranja Industrijskih robota. Naravno, potrebno je prvo modelirati a tek onda simulirati problem. Spomenuti su modeli koji se najčešće koriste kod simuliranja robota (kinematički, dinamički, geometrijski, volumni, žičani itd.). Naredni dio bavi se Objektno orijentisanim programiranjem i sa jednim od najčešće korištenim programskim jezikom C++ odnosno Visual C++. C++ je moderni programski jezik pogodan kako za sistemsko tako i aplikativo programiranje. Navedena su osnovna svojstva objektno orijentisanog programiranja, Apstrakcja, Nasljeđivanje, Polimorfizam, Enkapsulacija ili Učahuravanje. U poglavlju 6 također je spomenuto o Otvorenim Grafičkim bibliotekama-popularnije OpenGL. Zadnji dio diplomskog rada obrađuje program za simuliranje SCARA robota kojeg sam za ovaj diplomski rad posebno i kreirao. Ime programa je RoBoSIM. Aplikacija je kreirana pomoću spomenutog objektno orijentisanog jezika Visual C++. Program je sa svojim izlazim vrijednostima pored simulacije zadovoljio sve zahtjeve jedne moderne aplikacije za simuliranje robota. Program daje sve izlazne parametre simulacije, Homogene transformacije, EULER – ove uglove, upravljane koordinate, trenutna pozicija prihvatnice Robota odnosno TCP(Centar prihvatnice) itd. Aplikacije je vrlo jednostavna za rad te se može koristiti na vježbama za demonstraciju simuliranja robota. Komunikacija se obavlja preko dijaloških okvira tako da je pogrešno rukovanje smanjeno na minimum. Aplikacija zadovoljava sve standarde Windowsovih aplikacija odnosno sadrži osnovne Windowsove komponente: Meni, Kutije s alatima, te statusnu Traku. Na kraju Aplikacija nije jedna zaokružena cjelina, iz dva razloga što je napisana Objektno orijentisanim jezikom, i što sam ostavio prostora da se aplikacija može obogaćivati s drugim vrstama robota.

Page 83: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

82

LITERATURA: 1. Bahrudin Hrnjica, “Kinematic Analisys of Mehanism by Computer Utilization”,

SUMMER ACADEMY Pula 1999. University of Nuinberg, Germany University Sarajevo, Bosnia and Herzegovina.

2. Brucke Eckel “Thinking In C++ Second Edition” Volume 1, Upper Saddle River, New Jersey 07458, 2000.

3. Brucke Eckel “Thinking In C++ Second Edition” Volume 2, Upper Saddle River, New Jersey 07458, 2000.

4. Dr.-Ing. Andreas Jochheim, Dr.-Ing. Michael Gerke and Dipl.-Ing. Andreas Bischoff “Modeling and simulation of robotic systems ”, Control Systems Engineering group Department of Electrical Engineering University of Hagen D-58084 Hagen, Germany Version 3.0, August 17, 2000.

5. David J. Kruglinski, George Shepherd and Scot Wingo “ Programming Microsoft Visual C++ Fifth Edition ” Microsoft Press, Redmond- Washington 1998.

6. Dragan Milićev “ Objektno orijentisano programiranje na jeziku C++”, Mikro Knjiga, beograd 1995.

7. David Blythe, “Advanced Graphics Programming Techniques Using OpenGL”, SIGGRAPH `99 Course. 8. E.Freund,O.Stern,”Robotrtechnologie I”, Institut fur Roboterforschung, Dortmund 1999. 9. Frank B. Brokken and Karel Kubat “ C++ Annotation”, Computing center,

University of Groningen 2000. 10. Eric M. Schwartz Machine Intelligence Laboratory Department of Electrical & Computer Engineering University of Florida Gainesville, Florida 32611, Rachid Manseur Robotics and Image Analysis Lab. Department of Electrical & Computer Engineering University of West Florida Pensacola, Florida 32514 and Keith L. Doty Mekatronix Corporation 316 NW 17 Street, Suite A Gainesville, Florida 32603 “Algebraic Properties of Noncommensurate Systems”

1999 Florida Conference on Recent Advances in Robotics April 29-30, 1999, University of Florida ”

11. Keith L. Doty “An essay on the application of weighted generalized-inverses in robotics” University of Florida Gainesville, 12. Keith L. Doty, Claudio Melchiorri and Claudio Bonivento “A theory of generalized inverses applied to robotics ” University of Florida Gainesville, 13. Richrad C. Leinecker and Tom Archer “ Visual C++ 6 Bible” , IDG Books 14.Tugomir Šurina, Malden Crneković “ Industrijski roboti ” Školska Knjiga- Zagreb 1990.

Page 84: PRILOG ANALIZI TEHNIKE SIMULIRANJA ROBOTA U 3D · PDF fileOdređivanje orijentacije u prostoru 9 2.1.3. Rotacije u Cartesievom prostoru 11 2.1.4. EULER-ovi ulovi 13 ... U ovom slučaju,

83

Web Stranice: http://Easy-Rob.com, http://sankyosiki.co.jp, http://inet.keldysh.ru/5-dep-robot/engl/graph.htm, http://146.227.129.14/~ibelousov/inet_rob.html, http://www.cse.buffalo.edu, http://www.cs.ubc.ca, http://coli.lili.uni-bielefeld.de, http://www-pu.informatik.uni-tuebingen.de, http://www.dlr.de/, http://www.roboter.com/, http://www05.abb.se/robotics/, http://www.evl.uic.edu, http://www.evl.uic.edu/, http://robotics.jpl.nasa.gov/robotics.html, http://mars.graham.com/mplwits/, http://ece.uwaterloo.ca, http://www.nist.gov, http://www.awe.com/mark/fave-inter.html, http://www.cadkey-systems.co.jp, http://www.hk-r.se/, http://sirima.ima.hk-r.se/, http://www.hk-r.se/ima/en_utvecklingsprojekt.html, http://www.hk-r.se/ima/ivfiler/testkub.wrl, http://ece.clemson.edu/crb/, http://ece.clemson.edu/crb/students/ncostes/, http://iota.nuceng.ufl.edu, http://www.dei.uminho.pt, http://www.op.dlr.de/FF-DR/, http://www.robotic.dlr.de/, http://www.dlr.de/, http://prt.fernuni-hagen.de/prt-eng.html, http://www.robotic.dlr.de/Joerg.Vogel/Vrml/index.html, http://www.robotic.dlr.de/Joerg.Vogel/Vrml/lib.html, http://prt.fernuni-hagen.de/pro/richodl/simulation.html, http://www.nist.gov/, http://ci.etl.go.jp/~matsui/, http://www.etl.go.jp/~matsui/Motion/index.html, http://www.nist.gov/itl/div878/ovrt/projects/vrml/VRML2/kinematics/, http://dead.ucd.ie/VR-workbench.html, http://www.ee.uwf.edu/robotdraw.htm, http://www.rpi.edu/~leew9/Tetrobot/tetrobot.html, http://www.sover.net/~tlongtin/, http://www.rosl.com/models.htm, http://prt.fernuni-hagen.de/prt-eng.html http://www.lecad.uni-lj.si/~leon/FE/robotika/osnrob/node25.html http://www.robotics.com/robomenu/scara.html