• Nie Znaleziono Wyników

Dopasowanie geometrii stożka do znalezionych punktów powierzchni sita 45

Obecnie system wizyjny jest przystosowany do spawania wymienników ciepła, których sita są płaskie lub mają kształt wklęsłego lub wypukłego stożka. Dopasowanie parame-trów płaszczyzny do wyznaczonych punktów RSi, leżących na płaszczyźnie płaskiego sita jest stosunkowo proste, omówiona zostanie jedynie metoda wyznaczenia parame-trów stożka opisującego geometrię wklęsłego lub wypukłego sita. Opisany poniżej algo-rytm można również wykorzystać do dopasowania geometrii płaskiego sita do punktów pomiarowych, przy założeniu kąta rozwarcia ramion stożka równego 0. Modyfikując funkcję kryterium odległości punktu od powierzchni sita, możliwe jest dostosowanie po-niższego mechanizmu do spawania wymienników ciepła o innej geometrii sita. W tym przypadku należy również zmodyfikować mechanizm wyznaczania lokalnych układów współrzędnych otworów.

Model geometrii sita

Model geometrii sita można zdefiniować za pomocą następującego wektora

Xs= [ xs, ys, zs, αs, βs, γs]T (4.5) gdzie xs, ys i zs oznaczają położenie wierzchołka stożka względem przyjętego układu współrzędnych robotaR. Orientacja przestrzenna stożka zdefiniowana jest za pomocą kątów αsi βs oznaczających obrót bryły odpowiednio wokół osi x a następnie wokół osi y układuR. Parametr γs określa kąt rozwarcia ramion stożka. Kąt γs = 0 oznacza, że powierzchnia stożka ma kształt płaszczyzny, natomiast γs = 90 oznacza, że stożek jest zredukowany do półprostej wychodzącej z wierzchołka stożka (punkt (xs, ys, zs)).

αs βs

γs

Sx Sy

Sz

Rysunek 4.9: Model geometrii stożka.

Kryterium dopasowania

Do wyznaczenia wartości parametrów modelu stożka opisującego powierzchnię sita, zde-finiowano kryterium, służące do oceny stopnia dopasowania parametrów modelu stożka do otrzymanych punktów pomiarowychRSi. Kryterium ma postać

Js(Xs,RSi) = 1 Ns

Ns

i=1

ξs(Xs,RSi) = 1 Ns

Ns

i=1

Ds2(Xs,RSi), (4.6)

gdzie Nsjest liczbą testowanych punktów aRSi jest położeniem i-tego punktu leżącego na powierzchni sita w globalnym układzie współrzędnych robotaR. ξs(·) jest składową kryterium dopasowania modelu stożka do punktów pomiarowych dla i-tego punktu.

Ds(·) jest odległością testowanego punktu od powierzchni stożka.

γs

Ds(·) (xi, yi)

x y SP

Rysunek 4.10: Przekrój przez płaszczyznę tworzącej stożka

W celu wyznaczenia wartości funkcji ξs(·), na podstawie podanych wartości pa-rametrów modelu stożka Xs, wyznaczana jest macierz transformacji położenia punk-tu ze współrzędnych globalnych robota R na lokalny układ współrzędnych stożka S, w którym położenie wierzchołka stożka leży w punkcie (0, 0, 0) natomiast oś symetrii stożka pokrywa się z osią Sz układu współrzędnych S. Dla każdego punktu RSi = (Rxsi,Rysi,Rzsi) wyznaczane jest jego położenie w lokalnym układzie współrzędnych stożka SSi = (Sxsi,Sysi,Szsi) a następnie jest ono rzutowane (4.7) na dwuwymiaro-wą płaszczyznę SP, zawierającą tworzącą stożek w postaci półprostej wychodzącej z punktu (0, 0) (rys. 4.10). Początek układu współrzędnych płaszczyzny SP odpowiada wierzchołkowi stożka a oś y pokrywa się z jego osią symetrii.

SSi= RX(−αs)RY(−βs)RSi = odległością punktuSPSi od półprostej reprezentującej tworzącą stożka.

Wektor Xsopt, dla którego funkcja Js(·) przyjmuje wartość minimalną, znajdywany jest za pomocą opisanej w dodatku A metody Hooke’a-Jeevesa. W celu zagwaranto-wania niezawodnej pracy systemu, jako początkowy wektor poszukiwańXs0 przyjmuje się wektor posiadający zerowe wartości kątów αs, βs i γs oraz punkt (xs, ys, ys) będący środkiem ciężkości znalezionych punktówRSi. Jeżeli kąt γs jest znany, można przyjąć niezerową wartość tego kąta w początkowym wektorze poszukiwań lub też wyłączyć ten parametr z procesu dopasowania modelu stożka do punktów pomiarowych, zmniejszając tym samym wymiar przestrzeni poszukiwań wektoraXsopt.

Zwiększenie niezawodności dopasowania parametrów stożka

Doświadczenia wyniesione z pracy systemu pokazały, że kryterium Js(Xs,RSi) dopa-sowania modelu stożka do punktów pomiarowych opisane zależnością 4.6, w pewnych szczególnych przypadkach nadmiernie faworyzuje punkty leżące w większej odległości od wierzchołka stożka, dzięki czemu algorytm wyznaczający wektorXsopt, dla którego funkcja Js(·) przyjmuje wartość minimalną, potrafi ’utknąć’ w minimum lokalnym, mi-nimalizującym jedynie odległość stożka do trzech punktów leżących na obrzeżach sita.

Prowadzi to do zmniejszenia dopasowania stożka do sita w pozostałym obszarze. W celu wyeliminowania tego problemu, zaproponowano następującą modyfikację funkcji ξs(·)

Js(Xs,RSi) = 1 gdzie xi jest odległością punktu od osi symetrii sita, zdefiniowaną za pomocą wzoru 4.7.

Pojawienie się członu xi(Xs,RSi) powoduje, że położenie punktów leżących dalej od osi stożka ma mniejszy wpływ na wartość kryterium Js(Xs,RSi). W takim przypadku, bardzo ważny staje się właściwy dobór początkowego wektora poszukiwańXs0. Tak jak poprzednio, za początkowe położenie wierzchołka stożka przyjmujemy środek ciężkości znalezionych punktówRSi. Możliwe są również inne modyfikacje funkcji ξs(·).

Podczas testowania niezawodności algorytmu dopasowania stożka do znalezionych punktów RSi zauważono, że pojedynczy błędny pomiar odległości (jeden punkt zbioru

RSi oddalony od powierzchni sita) może znacząco zmienić wartości wyznaczonych para-metrów stożka. Wynika to stąd, że możemy znaleźć minimum lokalne funkcji Js(Xs,RSi), w którym błędny punkt pomiarowy leży blisko powierzchni znalezionego stożka. Wpro-wadzenie zmodyfikowanej postaci kryterium Js(Xs,RSi) znacząco zmniejsza prawdo-podobieństwo zakończenia poszukiwań wektora Xsopt w nieodpowiednim minimum lo-kalnym. Innym rozwiązaniem jest wielokrotne przeprowadzenie poszukiwania wektora Xsopt,RSi dla nieco innych danych wejściowych. Za każdym razem, ze zbioru znalezio-nych punktówRSi odrzucany jest kolejny (tylko jeden) punkt pomiarowy. Tzn szukamy wektorów Xsoptk, minimalizujących następujące funkcje

Jsk(Xs,RSi) = 1

Na koniec wybierany jest wektor opisujący geometrię stożka, dla którego uzyskano naj-mniejszą wartość kryterium Jsk(Xs,RSi): bezgradientowego algorytmu szukania minimum funkcji Hooke’a-Jeevesa.

Rzutowanie znalezionych otworów na płaszczyznę stożka

Z pierwszego etapu rozpoznawania sita otrzymujemy zbiór punktówJPo(k)

i , gdzie k jest numerem wykonanego zdjęcia a i jest numerem znalezionego otworu na k-tym zdjęciu.

Ponieważ na początku dokładne położenie sita nie jest znane, położenie punktówJPo(k)i rzutowane jest na hipotetyczną podstawę stożka7 w układzie współrzędnych robotaR.

Otrzymujemy zbiór punktówRPo(k)

i na podstawie których dopasowywany jest wzorzec sita do znalezionych otworów.

7Podstawą stożka jest płaszczyzna, której środek (początek układu współrzędnych) pokrywa się z wierzchołkiem stożka a płaszczyzna x− y jest prostopadła do osi symetrii stożka (oś z pokrywa się z osią symetrii stożka). Najczęściej domyślną podstawą stożka jest układ współrzędnychR.

Po otrzymaniu wektora parametrów stożkaXsopt, wyznaczana jest macierz transfor-macji TRS określająca położenie i orientację układu współrzędnych sita S w układzie robota R (układ współrzędnych sita odpowiada układowi współrzędnych stożka). Po-łożenie znalezionych na obrazie otworówJPo(k)

i jest ponownie przeliczane na położenie otworów w globalnym układzie współrzędnych robotaRPo(k)i . Za drugim razem, punkty

JPo(k)i rzutowane są na powierzchnię znalezionego stożka. Schemat rzutowania położenia otworów na powierzchnię stożka pokazany jest na rysunku 4.11. W przedstawionym na rysunku przypadku, pojedynczemu punktowi JPo(k)

i (położenie otworu na obrazie) od-powiada punktKA. Jest to położenie punktu przedstawione w układzie współrzędnych kamery, w którym środek obrazu przyjmuje współrzędne x = 0, y = 0 i z =−1 (zakła-damy, że matryca kamery jest oddalona od punktu reprezentującego środek obiektywu

KB o jednostkową długość). Po przeliczeniu położenia otworów, punktowiRPo(k) i odpo-wiadać będzie położenie punktuSD (punkt leżący na powierzchni znalezionego stożka).

Przeliczenie z układu współrzędnego stożka na układ współrzędnych robota realizowane jest w następujący sposób

Rysunek 4.11: Przeliczenie położenia punktuJPo(k)i (odpowiada mu punktKA) z współ-rzędnych obrazu na współrzędne punktu w układzie robotaR (punktRD).

Na rysunku 4.11,R jest układem odniesienia robota, S jest układem współrzędnych stożka (sita), natomiastK lokalnym układem współrzędnych kamery, zdefiniowanym w układzie współrzędnychR. Położenie kamery i stożka w układzie R (macierze transfor-macji odpowiednioTRK iTRS) są znane. Przejście z układu współrzędnych kamery do układu współrzędnych stożkaTSK uzyskujemy z następującej zależności

TSK = (TRS)−1· TRK. (4.12) Symbol KB oznacza punkt reprezentujący położenie obiektywu kamery (w układzie współrzędnych kamery - początek układu współrzędnych). Punkt KC jest punktem

przecięcia linii łączącej punkty KB i KA z płaszczyzną c, prostopadłą do osi obiek-tywu kamery i oddaloną od kamery na odległość d - wirtualna powierzchnia rzutowania punktów obrazu. Położenie punkuKC w lokalnym układzie współrzędnych kamery mo-żemy przedstawić za pomocą następującego wektora

KC = na obrazie, θx i θy jest kątem widzenia kamery odpowiednio wzdłuż dłuższego i krót-szego boku matrycy kamery. Odwrócenie współrzędnych xo, yo obrazu z współrzędnymi

KxC,KyC punktu KC wynika z przyjętej orientacji lokalnego układu kamery względem matrycy sensora.

Korzystając z wyznaczonego położenia kamery względem stożka (4.12), otrzymu-jemy położenie punktu KC w układzie współrzędnych stożka (położenie punktu KB w układzie współrzędnych stożka SB odczytujemy bezpośrednio z czwartej kolumny macierzyTSK)

SC = (TSK)−1·KC (4.14)

Kolejnym krokiem jest wyznaczenie położenia punktuSD, który jest punktem przecięcia prostej przechodzącej przez punktySB iSC z powierzchnią stożka. Poszukiwany punkt otrzymywany jest w ten sposób, że znajdowane są punkty SE i SF przecięcia prostej z płaszczyznami równoległymi do podstawy stożka (z = zconst) dla dwóch granicznych wartości z = z1 i z = z2 (rys. 4.11). Zakładamy, że początkowe wartości graniczne wynoszą odpowiednio z1 = 0 i z2 = 500 mm (początkowa wartość parametru z2 zależy od wielkości rozpoznawanych sit). Porównując odległości otrzymywanych punktów SE i SF do osi stożka (x = 0, y = 0), metodą bisekcji, zawężamy obszar poszukiwań współrzędnej z, aż do otrzymania położenia punktuSD z zadowalającą dokładnością.

Po wyznaczeniu położenia znalezionych otworów na powierzchni stożka (w lokal-nym układzie stożka), otrzymane współrzędne są rzutowane na płaszczyznę zi = 0 a następnie dopasowywany jest wzorzec sita do znalezionych otworów (wzorzec sita za-wiera położenie wszystkich otworów spawanego sita, rzutowanych na podstawę stożka).

Po dopasowaniu wzorca sita do znalezionych otworów, dla każdego otworu sita rekon-struujemy jego położenie z na podstawie wyznaczonego modelu stożka oraz odległości otworu od osi symetrii stożka.

Wyznaczenie lokalnych układów współrzędnych znalezionych otworów W celu uzyskania prawidłowej orientacji kamery podczas lokalnego rozpoznawania otwo-ru, dla każdego otworu RPw i (pochodzącego z dopasowanego wzorca sita) wyznacza-ny jest jego lokalwyznacza-ny układ współrzędwyznacza-nych RPi. W układzie tym otwór leży w punkcie (0, 0, 0) zaś oś z jest zwrócona w głąb stożka i jest prostopadła do jego powierzchni.

Na koniec, wyznaczone dane przesyłane są do robota w postaci układów współrzędnych każdego spawanego otworu.

MacierzTRPi, definiującą położenie lokalnego układu współrzędnych otworu w ukła-dzie odniesienia R, otrzymujemy w wyniku przeprowadzenia szeregu operacji obrotu i przesunięcia na macierzy TRS, definiującej położenie stożka względem układu robota R. Wymagane operacje możemy zapisać w następującej postaci

TRPi =TRS· Tzi· Tγs · Tri· Toi, (4.15) gdzieTzi jest obrotem otworu wokół osi z o kąt ϑi, w ten sposób, że po obrocie, otwór leży dokładnie pod (lub nad, w zależności od tego czy mamy do czynienia z sitem wklęsłym czy wypukłym) osią x.Tγs jest obrotem nowopowstałego układu współrzędnych wokół

osi y o kąt γs w ten sposób, że po tym obrocie, otwór leży na osi x. Kolejną operacją jest przesunięcie wzdłuż osi x o odległość Pri będącą odległością otworu od wierzchołka stożka. stożka S, γs jest kątem definiującym rozwarcie ramion stożka (γs = 0 oznacza płasz-czyznę). Obrót Toi układu współrzędnych wokół osi z o kąt −ϑi, został wprowadzony w celu ujednolicenia orientacji układu współrzędnych wszystkich otworów (robot nie musi wykonywać niepotrzebnych obrotów narzędzia wokół osi z). Poszczególne operacje obrotu i przesunięcia zdefiniowane są następująco:

Tγs =

Rysunek 4.12: a) zarejestrowane punkty leżące na powierzchni sita; b) wyznaczone lo-kalne układy współrzędnych otworów.

Na rysunkach 4.5 i 4.12 przedstawiono wynik przeprowadzenia wstępnego rozpozna-wania sita. Na rysunku 4.5 widoczny jest wzorzec sita wraz z znalezionymi otworami.

Narysowane krzyżyki, leżące pomiędzy otworami wzorca, oznaczają miejsce wykona-nia pomiaru wysokości za pomocą laserowego czujnika odległości. Znalezione punkty powierzchni sita wraz z dopasowanym modelem stożka przedstawione są na rysunku 4.12a. Na rysunku 4.12b pokazano wyznaczone lokalne układy współrzędnych każdego z otworów wzorca sita, które są następnie przesyłane do robota.

Rozdział 5

Wstępne przetwarzanie obrazu

Ponieważ przedstawiony w rozprawie system wizyjny wykorzystywany jest na rzeczy-wistej linii produkcyjnej, prócz niezawodności rozpoznania obrazu szczególny nacisk kładziony jest również na skrócenie czasu przetwarzania sygnału wizyjnego w celu mi-nimalizacji całkowitego czasu potrzebnego na spawanie jednego otworu. Do prawidło-wego działania właściwych algorytmów wyznaczających dokładne położeniu otworu, konieczne jest przeprowadzenie wstępnego przetwarzania obrazu. W tym celu zaim-plementowano szereg standardowych filtrów rozmywających oraz metod progowania i segmentacji obrazu. Większość metod wstępnego przetwarzania obrazu zgodna jest z ogólnie znaną metodologią, dlatego też w ich przypadku pominięto szczegółowy opis algorytmów a skoncentrowano się na uzyskanych wynikach oraz przesłankach stojących za skorzystaniem z takich a nie innych metod.

Przedstawione algorytmy wykorzystywane są zarówno dla potrzeb rozpoznania glo-balnego (wstępna lokalizacja położenia otworów sita) jak również podczas wstępnego rozpoznawania pojedynczego otworu.

5.1 Założenia

W niniejszej pracy założono, że do wstępnego przetwarzania obrazu zaliczone są te algorytmy lub metody przetwarzania danych, które prowadzą do wyłuskania z oryginal-nego, nieprzetworzonego sygnału wizyjnego informacji zawierających opis znalezionych na obrazie ciemnych obszarów (ang. blobs), które po spełnieniu szeregu kryteriów inter-pretowane są jako otwory. Informacje opisujące znalezione obszary to przede wszystkim:

położenie środka plamy na obrazie, orientacja i wielkość plamy oraz długość jej najkrót-szej i najdłużnajkrót-szej przekątnej. Dodatkowymi informacjami są momenty wyższych rzędów oraz takie wielkości jak zwartość i centryczność [49].

W przypadku wstępnego rozpoznawania sita interesuje nas zbiór znalezionych na ob-razie plam, spełniających przyjęte kryteria. W przypadku rozpoznawania pojedynczego otworu interesuje nas położenie plamy (interpretowanej jako otwór) znajdującej się naj-bliżej środka obrazu (na tym etapie znamy przybliżone położenie wszystkich otworów, dlatego kamera ustawiana jest w takim położeniu, aby analizowany na obrazie otwór znajdował się na środku zdjęcia).

W niniejszej pracy, zakłada się, że obraz zdefiniowany jest w postaci funkcji jasności J (x, y) określonej na płaszczyźnie dyskretnej.

J (x, y) : N2 → NJ, (5.1)

gdzie NJ oznacza zbiór wartości jaką może przyjąć jasność piksela obrazu. Natomiast NJ = {0, . . . , Jm}, gdzie Jm, Jm ∈ N oznacza maksymalną jasność piksela obrazu.

W naszym przypadku Jm= 255.

Parametry funkcji x i y określają położenie pikseli na obrazie i przyjmują warto-ści całkowite. Na definicję obrazu składa się więc zbiór punktów obrazu oraz funkcja

określająca wartość jasności piksela dla każdego punktu. Możemy więc zapisać:

O(x, y) = {p = (x, y, Jxy) : Jxy =J (x, y); 0 ¬ x < Sx; 0¬ y < Sy} (5.2) gdzie Sx i Sy oznaczają rozmiar obrazu odpowiednio w kierunku x i y.

Pod pojęciem piksela obrazu p = (x, y, Jxy) rozumiane są trzy wartości x, y∈ N oraz Jxy ∈ NJ, określające położenie punktu na obrazie oraz poziom jasności obrazu w danym punkcie. ZapisO(x, y) oznacza dowolny obraz bez przypisywania mu źródła pochodzenia lub wyniku kolejnego etapu przetwarzania sygnału wizyjnego.J(x, y) oznacza oryginalny obraz otrzymany z kamery, natomiast JT(x, y) jest obrazem otrzymanym w wyniku wykonania progowania obrazu.

W rozdziale tym przedstawiono przegląd zastosowanych technik wstępnego przetwa-rzania obrazu w kolejności ich wykonywania. W zależności od warunków oświetlenia oraz jakości wykonania sita, część z wymienionych operacji może zostać pominięta. Efektem końcowym jest zbiór parametrów opisujących znalezione na obrazie otwory oraz ob-raz wynikowy, w którym poziom jasności piksela odpowiada numerowi znalezionej na obrazie plamy. Piksele tła mają jasność zerową.