Robot Epson E2S651 in uporaba robotskega vida Cilj naloge 1. del Na mizo v delovnem prostoru robota postavite zamašek in ga z robotskim prijemalom primite. Prijetega odnestite nad poljubno ustje plastenke in ga privijte. Po krajšem premoru ga odvijte in odnesite na začetno pozicijo, kjer ga spustite, robot pa umaknite. Začetno postavitev vidimo na sliki 1. Slika 1: Začetna postavitev v delovnem prostoru robota za 1. del naloge
2. del Z uporabo robotskega vida in robota Epson E2S651 določite pozicijo zamaškov na mizi v delovnem prostoru robota in jih privijte na ustrezna ustja plastenk. Pri nalogi je potrebno izvesti kalibracijo kamere glede na robot, torej je potrebno določiti ustrezno homogeno transformacijo med koordinatnim sistemom objekta in referenčnim koordinatnim sistemom robota. Za izračun potrebnih transformacij uporabite okolje Matlab, za gibanje robota pa razvojno okolje Epson RC+. Na mizo postavite vsaj 7 zamaškov, situacijo pa prikazuje slika 2. Slika 2: Postavitev v delovnem prostoru robota za 2. del naloge
Navodila za vaje Vaja: Robot Epson E2S651 in uporaba robotskega vida Robot Epson E2S651 Robot Epson E2S651 je robot tipa SCARA srednje velikosti. Njegove najpomembnejše prednosti so: hitrost, dobra ponovljivost pozicije in rotacije, preprosta namestitev in programiranje (PC-based kontroler). Model robota Oblika Maksimalna obremenitev Doseg osi Hitrost Ponovljivost T1 + T2 Z U T1 + T2 Z U T1 + T2 (skupaj) Z U E2S651 SCARA 4 Axis AC Servo 5 kg Vztrajnostni moment (U os 5Kg ) 0.120 kg m 2 Masa 650 mm 170/320 mm (čisti prostori: 150/300 mm) ±360 6300 mm/s 1100 mm/s 1870 /s ±0.015 mm ±0.01 mm ±0.020 20 kg; (različni načini pritrditve: 22 kg) Uporabniška vodila 15 električnih, 3 pnevmatska, votla zadnja os Tabela 1: Lastnosti robota Epson E2S651 Slika 3: Robot Epson E2S651 Stran: 5/46
Navodila za vaje Vaja: Robot Epson E2S651 in uporaba robotskega vida Programsko okolje Epson RC+ Krmilnik robota je zasnovan na industrijskem PC-ju. Osi robota krmilijo neodvisni namenski procesorji, uporabniški vmesnik Epson RC+, ki predstavlja delovno okolje za vse robote Epson, pa teče v operacijskem sistemu Windows 2000. Vse komponente krmilnika, vključno s končnimi stopnjami ojačevalnikov, se nahajajo v standardnem 19 ohišju. Pisanje robotskih aplikacij poteka v programskem jeziku SPEL (izpeljanka BASICa), ki nudi široke možnosti komunikacije in vpenjanja v aplikacije, razvite s splošno namenskimi programskimi jeziki (vmesnik ActiveX, TCP/IP itd.). Izgled vmesnika RC+ prikazuje slika 5. Glavno okno Orodna vrstica Menuji Okno za pisanje programov Hierarhično drevo projekta Koda programa ( komentarje pričnemo z znakom ' ) Statusno okno Statusna vrstica Slika 5: Glavno okno programskega okolja Epson RC+ Stran: 8/46
Izvedba 1. dela vaje 1) Ustvarimo nov projekt (Projects\StudentskeVaje in vpišemo poljubno ime projekta). 2) V oknu za programiranje kreiramo funkcijo Main. 3) Robot ne sme imeti vključenega napajanja pogonskih motorjev (Slika 7). 4) Odpremo okno Jog and Teach (Slika 10). 5) Odpremo okno I/O Monitor (Slika 9) in preverimo, da je prijemalo odprto (izhodni naslov 0 ne sme biti izbran). 6) Na mizo v delovnem prostoru robota postavite zamašek. 7) Robot z roko (Slika 4) postavite v poljubno točko v delovnem prostoru robota. 8) V oknu Jog and Teach (Slika 10) shranimo trenutno lego robota v točko P0. 9) Robot z roko (Slika 4) postavite tako, da lahko prime zamašek (lega, kateri sledi samo še prijem). 10) V oknu Jog and Teach (Slika 10) shranimo trenutno lego robota v točko P1. 11) V oknu I/O Monitor (Slika 9) kliknite na naslov izhodnega digitalnega signala 0, da primemo zamašek. 12) Robot s prijetim zamaškom z roko (Slika 4) pripeljite tik nad ustje željene plastenke. 13) V oknu Jog and Teach (Slika 10) shranimo trenutno lego robota v točko P2. 14) Zadnjo os robota s prijetim zamaškom z roko (Slika 4) rotirajte in vertikalno translirajte (pomik navzdol), da privijete zamašek. 15) V oknu Jog and Teach (Slika 10) shranimo trenutno lego robota v točko P3. 16) V oknu I/O Monitor (Slika 9) kliknite na naslov izhodnega digitalnega signala 0, da spustimo zamašek. 17) Robot z roko umaknemo iznad ustja plastenk. 18) Napišite program, da bo robot iz točke P0 odšel v točko P1, prijel zamašek in ga odnesel nad ustje plastenke v točki P2. Sledi privijanje v točko P3. Po krajši pavzi dosedanje postopke obrnemo in odložimo zamašek na izhodiščno pozicijo, robot pa naj se vrne v izhodiščno točko P0. Vsaka operacija prijemanja in spuščanja zamaška zahteva kratke premore, zato uporabite ukaz Wait.
Namig: primer dela programa (točke se nanašajo na navodila na prejšnji strani) Function main Motor On ' Omogočimo napajanje motorjev Power Low ' Izberemo nizko moč delovanja Speed 20 ' Določimo hitrosti gibanja na 20% največje Accel 20, 20 ' Določimo pospešek in pojemek Fend Off 0 ' Preventivno odpremo prijemalo Jump P1 ' Premaknemo robot v točko prijema pokrovčka Wait 0.2 ' Počakamo 0.2 sekunde On 0 ' Primemo pokrovček Wait 0.2 ' Počakamo 0.2 sekunde Jump P0 ' Pokrovček odnesemo v poljubno točko v prostoru Go P1 ' Pokrovček odnesemo nazaj v izhodiščno točko, vendar na drugačen način Wait 0.2 ' Počakamo 0.2 sekunde Off 0 ' Odpremo prijemalo Wait 0.2 ' Počakamo 0.2 sekunde Jump P0 ' Robot odmaknemo v poljubno točko v prostoru
Matlab in umetni vid Matlab s svojo široko paleto funkcij omogoča učinkovito delo z umetnim vidom. 1) Image Acquisition Toolbox skrbi za zajem slike in videa ter strojno podporo 2) Image Processing Toolbox skrbi za nadaljnjo obdelavo slike, razpoznavanje vzorcev, transformacije, ugotavljanje najrazličnejših lastnosti slik itd. Matlab je v osnovi namenjen za numerično računanje, še posebej matričnih funkcij. Sliko lahko predstavimo kot matriko. Sivinske slike predstavljajo M N matrike (Slika 14), barvne slike pa so predstavljene kot M N 3 matrike, kjer tretja dimenzija predstavlja posamezno RGB komponento (Slika 15). 233 233 255 42 255 M 255 255 169 255 210 78 255 201 255 28 N Slika 14: Primer matrike sivinske slike dimenzije M N 233 233 255 42 255 233 255 42 255 233 255 42 255 255 255 169 255 210 255 169 255 210 255 169 255 210 M 78 255 201 255 28 78 255 201 255 28 78 255 201 255 28 3 N Slika 15: Primer matrike barvne slike dimenzije M N 3
Video sistem Firewire vodilo Kamera Objektiv Slika 16: Video sistem nad mizo robota Karakteristike video sistema (Slika 16): kamera The Imaging source DMK 21AF04 s Firewire (IEEE-1394) vodilom, slikovni senzor CCD velikosti 640 480 slikovnih elementov, 256 sivinskih odtenkov, digitalen zajem in prenos slike, objektiv z 8 mm goriščno razdaljo.
Postopek (uporabite okolje Matlab): 1) Delo v okolju Matlabu pričnete tako, da se postavite v vašo delovno mapo (c:\matlab7\work\epson_kamera\) in v ukazni vrstici zaženete Camera Calibration Toolbox, ki bo v pomoč pri kalibraciji kamere. To storite z ukazom: >> calib_gui (Enter) Toolbox vsebuje funkcije za eksperimentalno ugotavljanje parametrov kamere oz. uporabljenega objektiva (uporaba kalibracijskih vzorcev itd.). Po potrditvi ukaza calib_gui se odpre okno, kjer kliknemo gumb Standard (all the images are stored in memory). Potopek je že opravljen, zato kliknite gumb Load in s tem naložite rezultate zadnje kalibracije. Toolbox zapustite s klikom na gumb Exit. 2) V naslednjem trenutku moramo zajeti sliko s kamere in z ravnokar naloženimi parametri odstraniti popačenje objektiva. To storimo tako, da v ukazno vrstico okolja Matlab vpišemo: >> snapcalib (Enter) Če je kamera pravilno priključena, se na zaslon izpišejo parametri kamere, takoj zatem pa se pojavi okno z živo sliko, kakršno vidi kamera. Postavite kalibracijski list v vidno polje kamere, tako da bodo na sliki vse tri točke. Sliko zajamete s tipko <Enter>. Slika se shrani kot calib_image.tif, opravi se transformacija za odstranjevanje popačenja objektiva in popravljena slika se shrani kot calib_image_rect.tif. 3) Na zajeti in binarizirani sliki je potrebno ročno pokazati, kje se označene pike koordinatnega sistema na listu (O, X, Y) nahajajo. Zato v ukazni vrstici okolja Matlab izvršimo ukaz: >> select_dots (Enter)
Prikaže se binarna slika, na kateri z dvojnim klikom izberete pike v naslednjem vrstnem redu: 1 točka O, 2 točka X in 3 točka Y. Pri izbiranju točk ni potrebna velika točnost, pomembno je le, da kliknete v območje pike, saj program sam izračuna središče. Po izbranih vseh treh točkah program središča točk obarva z rdečo piko. Če središča odstopajo preveč izven belega področja pik, postopek iz te točke ponovite. Koordinate točk v slikovnih elementih se shranijo v vektor g. ( O g = ( X ( Y X X X, OY ), X ) Y, Y ) Y 4) V okolju Matlab kreirajte novo.m datoteko (File New M-File). Poimenujte jo zamaski.m, nato pa vpišite naslednje vrstice kode: % Izračunamo faktor pretvorbe št. slikovnih elementov v 1 mm (pixel/mm) Kp = 180/sqrt( ( g(2,1) - g(1,1) )^2 + ( g(2,2) - g(1,2) )^2); Kp = 180 2 2 ( g(2,1) g(1,1)) + ( g(2,2) g(1,2)) % Koordinate točk O,X,Y iz slikovnih elementov pretvorimo v metrične enote (mm) D_KO = g*kp; % Zaradi nazornosti izluščimo koordinate za točko O Dx = D_KO (1,1); Dy = D_KO (1,2); % Izračunamo kot zasuka koordinatnega sistema objekta (O,X,Y) glede na k.s. kamere (Slika 19) fiko = atan( (D_KO (2,2) - D_KO (1,2) ) / (D_KO (2,1) - D_KO (1,1) ) ); % Zapišimo transformacijo s translacijo D(XO, YO) in rotacijo okrog osi Z za kot fio (Slika 20) T_obj2cam = [ cos(fiko), -sin(fiko),0, Dx; sin(fiko), cos(fiko), 0, Dy; 0,0,1,0; 0,0,0,1 ];
Določitev T_cam2ref Da bi lahko s pomočjo robotskega vida iskali in pobirali objekte, potrebujemo še matriko T_cam2ref, ki predstavlja lego kamere v referenčnem k.s. in matriko T_grip2obj, ki predstavlja lego vrha (prijemala) glede na objekt. V trenutku, ko prijemalo zagrabi objekt, morata biti k.s. objekta in vrha poravnana, torej mora biti transformacija T_grip2obj enaka enotski matriki 4x4 (I), zato jo lahko iz nadaljnjih izračunov preprosto izpustimo. Enačba za lego vrha se tako poenostavi: EndEff = T_cam2ref T_obj2cam V tem trenutku je znana transformacija T_obj2cam, rabimo pa transformacijo EndEff ali T_cam2ref. Najlažje določimo transformacijo EndEff, in to po naslednjem postopku. 1) V ustje robota namestimo špico (Slika 21). Špico čim točneje pozicioniramo glede na središče krogcev O in X koordinatnega sistema objekta na listu papirja (Slika 21). V okolju Epson RC+ v oknu Jog and Teach preberemo in si zapišemo trenutno pozicijo O(x 0, y 0 ) in X(x 1, y 1 ) v World koordinatnem sistemu (Slika 11). Slika 21: V ustje robota nameščena špica, ki smo jo pozicionirali v središče točke O
2) Da lahko določimo kot zasuka koordinatnega sistema objekta okrog Z osi referenčnega koordinatnega sistema, določimo kot (ϕ RO ) med osema X R in X O (Slika 22, desno). Odčitana točka O(x 0, y 0 ) nam predstavlja pozicijo koordinatnega sistema objekta glede na referenčni koordinatni sistem (Slika 22, levo). 3) V okolju Matlab smo že prej kreirali novo.m datoteko, zato nadaljujemo vpis kode kar naprej: % V vektor D_RO vpišemo prej odčitane koordinate O(xO,yO) in X(xO,yO) D_RO = [x0, y0; x1, y1]; % Zaradi nazornosti izluščimo koordinate za točko O Dx = D_RO(1,1); Dy = D_RO(1,2); % Izračunamo kot zasuka koordinatnega sistema objekta (O,X,Y) glede na referenčni k.s. (Slika 22) firo = atan( ( D_RO(2,2) - D_RO (1,2) ) / (D_RO (2,1) - D_RO (1,1) ) ); % Zapišimo transformacijo s translacijo D(XO, YO) in rotacijo okrog osi Z za kot fio (Slika 22) EndEff = [ cos(firo), -sin(firo),0, Dx; sin(firo), cos(firo), 0, Dy; 0,0,1,0; 0,0,0,1 ];
4) Določeni imamo obe transformaciji T_obj2cam in EndEff, zato lahko po spodnjem izrazu določimo T_cam2ref. EndEff = T_cam2ref T_obj2cam / z desne možimo z inv(t_obj2cam) EndEff inv(t_obj2cam) = T_cam2ref T_obj2cam inv(t_obj2cam) T_cam2ref = EndEff inv(t_obj2cam) 5) V.m datoteko zapišemo naslednje vrstice. Prva vrstica je izračun transformacije T_cam2ref, ostale pa so potrebne za nadaljevanje naloge in jih samo dopišemo: % Zapišimo izračun transformacije T_cam2ref T_cam2ref = EndEff * inv(t_obj2cam); % Koordinate središč razpoznatih objektov na sliki pretvorimo v metrične enote Objekti = centers * Kp; % Določitev koordinat razpoznatih objektov v referenčnem koordinatnem sistemu % Ker imamo opraviti samo s pozicijami središč pokrovčkov, ni potrebno izvajati nikakršne % rotacije in zato transformacijske matrike vsebujejo samo translacijski del for i = 1:size(centers,1) T_obj2cam = [ 1, 0, 0, Objekti(i,1); 0, 1, 0, Objekti(i,2); 0,0,1,-132; 0,0,0,1 ]; % -132 je vrednost koordinate Z robota, ko se le-ta s prijemalom skoraj dotakne mize EndEff(:,:,i) = T_cam2ref * T_obj2cam; end % Iz serije transformacijskih matrik EndEff izluščimo samo koordinate sredin zamaškov v % referenčnem koordinatnem sistemu koord_zamaskov; 6) Datoteko s končnico.m shranimo pod poljubnim imenom, recimo zamaski.m.
Izvedba 2. dela naloge 1) Vsi dosedanji postopki določanja transformacijskih matrik EndEff, T_obj2cam, T_cam2ref in zapisanih nekaj vrstic kode v datoteki zamaski.m, morajo biti zapisani! 2) V vidno polje kamere postavimo nekaj zamaškov (recimo 7), še prej pa odstranite kalibracijsko špico, umaknite robot iz vidnega področja kamere in odstranite list s kalibracijskim koordinatnim sistemom. 3) V Matlab ukazni vrstici zaženemo ukaz: >> extobject (Enter) Pojavi se okno s kamere, kjer lahko bolje pozicioniramo zamaške. Ko smo s pozicijo zamaškov zadovoljni pritisnemo tipko Enter. Čez določen čas se v ukazni vrstici okolja Matlab izpiše število prepoznatih objektov in izriše se slika s slike 23. Če niste zadovoljni z razpoznavo objektov, ta korak ponovite. 4) V ukazni vrstici okolja Matlab poženemo.m datoteko, ki smo jo sami napisali (ime zamaski.m). >> zamaski (Enter) 5) V Epson RC+ okolju moramo v mapi Projects\ odpreti že prej pripravljen projekt z imenom Epson_kamera. 6) Odprt projekt zaženemo s tipko F5 (Slika 13) in pritisnemo na gumb Start tcpipcomm..
Slika 23: Razbrani zamaški iz slike ter določeni njihovi centri 7) OPOZORILO! Pred zagonom avtomatskega pobiranja zamaškov in njihovega privijanja na ustja plastenk je potrebno zagotoviti, da v delovnem prostoru ni osebe ali predmeta, s katerim bi lahko robot trčil. 8) V ukazni vrstici okolja Matlab izvršimo ukaz: >> zamaski_tcp (Enter)