Krmiljenje robota s strojnim vidom preko serijske povezave
V laboratoriju LASIM smo preizkusili alternativni pristop, kjer smo komunikacijo izvedli z uporabo univerzalne serijske komunikacije. Program v robotskem krmilniku prejme poslane nize podatkov in ustrezno spremeni spremenljivke položaja objektov.
Strojni vid se uporablja na področju avtomatizacije, strege in montaže že več let. Strojni vid se uporablja za razpoznavanje objektov, določanje njihove usmeritve, odkrivanje napak in druge naloge. Algoritmi za on-line nadzor industrijskih robotov so šifrirani, zato je on-line krmiljenje mogoče doseči le s programsko opremo proizvajalca robotov. V tem prispevku je predstavljen poenostavljen način za povezovanje strojnega vida preko serijskega vmesnika do industrijskega krmilnika robota. S pravilno strukturiranim komunikacijskim algoritmom in uporabo zunanjih senzorjev smo dosegli prijemanje in manipulacijo naključno postavljenih izdelkov v realnem času.
V laboratoriju LASIM smo preizkusili alternativni pristop, kjer smo komunikacijo izvedli z uporabo univerzalne serijske komunikacije. Program v robotskem krmilniku prejme poslane nize podatkov in ustrezno spremeni spremenljivke položaja objektov. Krmilnik robota je v tem primeru »master«, medtem ko osebni računalnik vključno s kamero predstavlja »slave«, ki na zahtevo robotskega krmilnika pošlje zaznani položaj in orientacijo predmeta. Za potrditev tega koncepta smo naredili dvosmerni komunikacijski kontrolni algoritem s programskim orodjem MATLAB in testirali njegovo točnost in ponovljivost. S pomočjo strojnega vida smo zaznali lokacijo predmeta v x in y osi, medtem ko smo višino izdelka določili s pomočjo končnega stikala na vakuumskem prijemalu robota. S pomočjo teh podatkov je robot vse naključno postavljene predmete postavil na odlagališče z isto orientacijo. Testni predmeti so bili v našem primeru beli leseni bloki z merami 150x100x50 mm.
Uporabljen osebni računalnik je uporabljal FireWire komunikacijo za zajem slik iz kamere DMK CCD 21F04. Kamera omogoča zajemanje sivinskih slik z ločljivostjo 640x480 pik, kjer smo z uporabljeno goriščno razdaljo dobili dimenzijo enega piksla, ki znaša 0,653 mm. Industrijski robot, ki smo ga uporabili pri tem testiranju, je bil Motoman HP-20 s krmilnikom NX-100. Odprti serijski nekodirani komunikacijski protokol za krmilnik NX-100 je omejen na hitrost 9600 bit/s in ga ni mogoče spremeniti [1]. Končni efektor robota je vakuumsko prijemalo z mejnim stikalom za zaznavanje predmeta (slika 1 ). Končno stikalo smo uporabili za določitev višine predmeta, ki se je uporabila za določitev načina odlaganja izdelka.

Slika 1: Shema povezave CCD kamere, osebnega računalnika in robota (levo) in vakuumsko prijemalo s končnim stikalom na koncu robotske roke (desno).
Krmilni algoritem
Krmilni algoritem je sestavljen iz treh delov. Prvi del je strojni vid za zaznavanje objektov, ki uporablja analizo binarne slike, dobljene preko CCD kamero. Drugi del je komunikacijski algoritem s protokolom za komunikacijo PC <-> krmilnik NX-100. Tretji del algoritma je program v krmilniku NX-100, ki pošilja PC–ju zahtevo za podatke o orientaciji objekta in pri pobiranju izdelka zazna njegovo višino in izbere pravi način odlaganja tako, da imajo vsi odloženi predmeti isto usmerjenost.
Algoritem strojnega vida
Algoritem temelji na zaznavi in označevanju belih področij na binarnih slikah. To opravimo s funkcijo bwlabel() v programu MATLAB [2]. Ta rutina zazna predmete na binarni sliki z iskanjem povezanih belih pikslov. Po odkritju belih področij smo uporabili bwareaopen() [2] funkcijo za odstranjevanje manjših predmetov in regionprops() [2] za pridobivanje položaja in usmerjenosti zaznanih področij. Zadnji korak je pretvorba teh podatkov iz pikslov v mm, da jih lahko pošljemo v robotski krmilnik. Slika 2 prikazuje blokovno shemo algoritma in prikazane zaznane predmete. Zadnji del algoritma je generiranje podatkovne matrike zaznanih predmetov, ki ga sestavlja indeks objekta, X in Y koordinate središča objekta in kot postavitve objekta glede na koordinatni sistem strojnega vida. Program prikaže zaznane predmete s podatki o predmetu, kot je prikazano na sliki 2.

Slika 2: Shema protokola za zaznavanje objektov s strojnim vidom (levo) in način prikaza zaznanih objektov na osebnem računalniku (desno).
Komunikacijski algoritem
Algoritem uporablja hitrost serijske komunikacije 9600 biti/s z 8 biti, brez paritete in 1 stop bitom. Program se začne z definiranjem komunikacijskih parametrov. V naslednjem koraku program čaka na ukazni niz "START" v ASCII formatu . Po prejetem ukazu se začne zajemanje slike in zaznavanje pozicije objektov. Če ni zaznanih objektov, se robotskemu krmilniku pošlje ukazni niz "STOP". Če je objekt zaznan, se iz podatkovne matrike izbere prvi objekt, za katerega pretvorimo njegove koordinate in usmerjenost v niz, dolg 22 znakov. Prvih 7 znakov predstavljajo x-os, ki mu sledi vejica. Naslednjih 7 znakov predstavlja y-os in zadnjih 5 znakov predstavljajo kot zasuka predmeta. Poslani niz je oblike : ''0022000,0065000,01200'' in prestavlja koordinate x=22mm, y=65mm in kota FI=12 . Niz se pošlje na robotski krmilnik, kjer se uporabi za pobiranje izdelka. Blokovna shema komunikacijskega protokola MATLAB je prikazana na sliki 3.

Slika 3: Shema protokola serijske komunikacije.
Program na krmilniku robota NX-100
Zadnji del sistema je program, ki se izvaja na robotskem krmilniku NX-100 . Na začetku programa se določi vse statične koordinate in spremenljivke:
• Položaj robota za čakanje, medtem ko s strojnim vidom zaznavamo predmete.
• Osnovni položaj, ko ni več predmetov za pobiranje.
• Trije različni protokoli za odlaganje objektov glede na njihovo postavitev.
• Spremenljivke za koordinate X, Y in kot FI, pridobljenimi prek serijske komunikacije.
V naslednjem koraku se robot premakne v položaj "zaznavanje objektov", ki ne blokira pogleda kamere na površino z izdelki. Po zaznavi objektov sprejme krmilnik 22 znakov. Ti znaki se logično obdelajo iz njih določi pozicija in orientacija objekta za pobiranje . Robot se premakne v pridobljeni koordinati X in Y in začne s spuščanjem v Z smeri, dokler ga končno stikalo višine ne ustavi. Četrta spremenljivka višina se v tej točki shrani. Nato se vakuumsko prijemalo aktivira in izvede eden izmed treh protokolov za odlaganje. Po uspešnem odlaganju predmeta se robot vrne v položaj "zaznavanje objektov". Če ni zaznanih predmetov, gre v izhodiščni položaj. Shematska predstavitev programa robota je prikazana na sliki 4.

Slika 4: Shema glavnega programa v krmilniku NX-100.
Testiranje celotnega sistema
V prvi fazi smo opravili kalibriracijo koordinatnega sistema računalnika in robota in testirali natančnost določitve položaja s strojnim vidom. Točnost in ponovljivost pozicioniranja je bila ±1 piksla oz. ± 0,65 mm. Poskus je bil izveden z uporabo dveh izdelkov, ki sta bila postavljena v različne pozicije in pod različnimi koti glede na koordinatni sistem strojnega vida.
Sledil je preizkus sistema s pobiranjem predmetov na celotnem območju zaznavanja z različnimi usmeritvami predmetov. Izvedli smo 30 različnih postavitev predmetov, od katerih so bili vsi uspešno zaznani in pobrani. Uporabljeni trije različni protokoli odlaganja so delovali brezhibno. Tudi prisotnost manjših predmetov na delovni mizi ni prekinila zaznavanje predmetov zaradi uporabe filtra za izločevanje manjših predmetov. Video prikaz izvajanja pobiranja izdelkov je dosegljiv na spodnji povezavi:
http://www.youtube.com/watch?v=TMbC008l66U
Viri:
[1] Yaskawa. NX100 INFORM MANUAL, http://www.ro.feri.uni-mb.si/predmeti/robotizacija/inform.pdf, obiskano: avgust 2013.
[2] H. Moore: MATLAB for engineers 3rd edition. Pearson Education Inc., New Jersey, USA, 2012.
Avtorji novice:
Miha Pipan, Edo Adrović, Niko Herakovič
vsi Laboratorij za strego, montažo in pnevmatiko, Fakulteta za strojništvo, Univerza v Ljubljani
Kontaktni naslov: miha.pipan@fs.uni-lj.si
