raport z wykonania projektu - Encoder

Transkrypt

raport z wykonania projektu - Encoder
Studenckie Koło Naukowe Robotyki „Encoder”
Wydział Automatyki, Elektroniki i Informatyki
Politechnika Śląska
Manipulator OOO
z systemem wizyjnym
Raport z realizacji projektu
Daniel Dreszer
Kamil Gnacik
Paweł Kaleta
Oliwia Szymańska
Gliwice, czerwiec 2013
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
Spis treści
1
Krótki opis projektu .................................................................................................. 2
2
Model stanowiska .................................................................................................... 3
3
Zadanie proste kinematyki ....................................................................................... 4
4
Zadanie odwrotne kinematyki ................................................................................. 5
5 Transformacja z układu współrzędnych związanego z obrazem do układu
bazowego manipulatora............................................................................................................. 6
6
Opis funkcjonalności programu ............................................................................... 7
Bibliografia ...................................................................................................................... 8
1 Krótki opis projektu
Rysunek 1. Manipulator OOO sterowany z użyciem informacji z umieszczonej nad nim kamery
W ramach prac SKN Encoder posiadany manipulator OOO wyposażono w system
sterowania oparty na informacji wizyjnej pochodzącej z kamery RGB umieszczonej nad
stanowiskiem. Na podstawie danych z obrazu, za pomocą odpowiednich przekształceń
uzyskiwane są informacje o obecnym i docelowym położeniu elementów do przeniesienia;
następnie na podstawie rozwiązania zadania odwrotnego kinematyki manipulatora
wypracowywane jest sterowanie serwomechanizmów poruszających członami manipulatora
2
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
oraz jego chwytakiem. System, oprogramowany w środowisku LabVIEW, zapewnia interakcję
z użytkownikiem. Manipulator podczas pracy przedstawia rysunek 1.
2 Model stanowiska
Na rysunku 2. przedstawiono schemat rozmieszczenia elementów systemu wraz
z zastosowanymi układami współrzędnych (x0y0z0 - układ bazowy manipulatora, xMyMzM układ związany z markerem, xKyKzK - układ związany z kamerą (obrazem z kamery)).
Położenie układu xKyKzK na rysunku jest jedynie orientacyjne, gdyż mocowanie kamery nie
jest zupełnie usztywnione; może więc zachodzić rotacja układu o niewielki kąt wokół osi zK,
jednak przyjmuje się, że równoległość osi zK, zM, z0 jest zachowana.
Rysunek 2. Rozmieszczenie elementów systemu (widok z góry) oraz zdefiniowane układy współrzędnych
Schemat połączeń komunikacyjnych między elementami systemu przedstawiono na
rysunku 3.
3
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
Rysunek 3. Schemat komunikacji w systemie
3 Zadanie proste kinematyki
Schemat kinematyczny manipulatora jest następujący (rysunek 4):
Rysunek 4. Schemat kinematyczny posiadanego manipulatora OOO
Długości przedstawione na rysunku mają wartości:
λ1 = 16.5 cm
L2 = 17.4 cm
L3+L4 = L34 = 22 cm
4
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
Zgodnie ze schematem, korzystając z przekształceń opisanych w podręczniku [1],
transformacja z układu współrzędnych skojarzonego z końcówką chwytaka do układu
bazowego manipulatora jest opisana jako:
gdzie si = sin(Θi), ci = cos(Θi) oraz sij = sin(Θi + Θj), cij = cos(Θi + Θj), i, j = 1, 2, 3.
4 Zadanie odwrotne kinematyki
By możliwe było wyznaczenie kątów Θi, i = 1, 2, 3, na podstawie zadanego położenia
elementu wykonawczego, należało rozwiązać zadanie odwrotne kinematyki manipulatora. W
tym celu posłużono się algorytmem zawartym w [1] na stronie 116. Algorytm został
uproszczony na mocy ograniczeń nałożonych na kąty Θi, które są następujące:
W praktyce oznacza to ograniczenie ilości sposobów osiągnięcia danego położenia
elementu wykonawczego do jednego. Uwzględnione zostały tutaj również fizyczne
ograniczenia manipulatora.
Zgodnie ze wspomnianym algorytmem, w pierwszej kolejności należy sprawdzić
przynależność zadanego położenia do przestrzeni roboczej manipulatora. Według
zastosowanej w niniejszym projekcie metody, dla uproszczenia dokonywane jest to jednak
po próbie wyliczenia kątów Θi, co zostanie omówione za chwilę.
Kolejnym krokiem jest ustalenie, czy orientacja zadana jest zdefiniowana
jednoznacznie. W przypadku tego projektu orientacja zadana jest dowolna.
W kolejnym kroku wyliczony zostaje kąt Θ1. Obliczony jest on na podstawie wzoru
Biorąc pod uwagę ograniczenia nałożone na kąt Θ1 oraz analizując możliwe
współrzędne dx oraz dy dochodzi się do wniosku, że otrzymany kąt Θ1 jest wynikiem
ostatecznym.
Kolejnym obliczanym kątem jest kąt Θ3. Obliczany jest on dzięki wyznaczeniu wartości
funkcji sinus i cosinus tego kąta.
5
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
W związku z ograniczeniami nałożonymi na kąt Θ3 można stwierdzić, że s3 będzie
zawsze ujemny. W związku z tym prawdziwe jest:
.
Następnie, znając s3 oraz c3 możemy obliczyć kąt Θ3 z następującego wzoru:
.
Ostatnim krokiem jest obliczenie kąta Θ2. Obliczony jest on na podstawie wzorów:
λ
Dzięki przyjęciu odpowiednich ograniczeń, otrzymujemy jedno rozwiązanie zadania
kinematyki odwrotnej manipulatora. Ostatnim etapem algorytmu jest wcześniej
wspomniane sprawdzenie przynależności zadanej pozycji do przestrzeni roboczej
manipulatora. Zrealizowane jest to na podstawie analizy otrzymanych wyników zadania
odwrotnego. Jeśli kąty Θ2 oraz Θ3 mają przypisaną wartość NaN (Not a Number), to zadany
punkt jest zbyt odległy od manipulatora. Objawia się to wyliczeniem c3 > 1, co jest oczywiście
niemożliwe i kąty Θ2 oraz Θ3 nie mogę zostać obliczone. Z kolei jeśli wszystkie wartości kątów
zostały obliczone, to należy jedynie sprawdzić zgodność z przyjętymi ograniczeniami, co
zapewni fizyczną realizowalność dojścia do zadanego położenia.
5 Transformacja z układu współrzędnych związanego
z obrazem do układu bazowego manipulatora
Rozwiązanie zadania odwrotnego wystarcza do takiego wysterowania
serwomechanizmów manipulatora, aby końcówka chwytaka znalazła się w zadanym
położeniu; jednakże, aby ułatwić użytkownikowi definiowanie tych położeń, wprowadzono
dodatkowy układ współrzędnych: układ xKyKzK związany z obrazem z kamery umieszczonej
6
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
nad stanowiskiem. Wskazanie punktu myszką na obrazie jest bowiem dla użytkownika
znacznie wygodniejsze, niż podawanie współrzędnych w [cm] w układzie bazowym. Ponadto,
dodanie podsystemu wizyjnego wprowadza dodatkowe możliwości automatyzacji zadania
przenoszenia elementów - umożliwia bowiem programowe wyszukiwanie położenia
elementów do przeniesienia.
Aby jednak możliwe było użyteczne wykorzystanie informacji uzyskanych z obrazu,
potrzebna jest transformacja 0TK z układu współrzędnych xKyKzK do układu bazowego
manipulatora; aby ją otrzymać, wprowadzono pomocniczo układ związany z markerem
xMyMzM. Prawdziwe jest:
0
TK = (KT0)-1 = (KTM · MT0)-1 .
Przejście KTM z układu markera do układu związanego z obrazem zrealizowane jest
jako translacja o współrzędne środka większego koła markera (czyli współrzędne początku
układu xMyMzM) wyrażone w układzie xKyKzK, następnie rotacja o 180° wokół osi x, rotacja
wokół osi z o kąt skręcenia osi xM względem xK, a na koniec przeskalowanie macierzy ze
współczynnikiem skali równym ilorazowi promienia większego koła markera wyrażonego
w pikselach do promienia wyrażonego w centymetrach:
K
TM = Trans (xKM, yKM, 0) · Rot (x, 180°) · Rot (z, αKM) · Scale (rK/ rM, rK/ rM, rK/ rM) .
Parametry xKM, yKM, αKM, rK obliczane są w programie na podstawie obrazu z kamery,
za każdym razem, gdy pobierany jest nowy obraz, zaś rM jest wielkością stałą i według
pomiaru wynosi 3.85 cm.
Z kolei orientacja osi xM, yM, zM została tak dobrana, że transformacja MT0 jest
macierzą stałą i jest równa translacji o współrzędne punktu (0, 0, 0) układu bazowego
wyrażone w układzie markera:
M
T0 = Trans (oM0) = Trans (22.4, -44.25, 0) .
Mając współrzędne danego punktu na obrazie [x, y, z]Kp, można zatem otrzymać jego
współrzędne w układzie bazowym manipulatora jako:
[x, y, z]0p = 0TK · [x, y, z]Kp .
6 Opis funkcjonalności programu
Aplikacja oferuje dwa tryby: przenoszenie wybranego elementu na pozycję wskazaną
przez użytkownika oraz na wykryte automatycznie prostokątne pole - podest. Wówczas
należy dodatkowo wprowadzić informację o wysokości podestu, aby umożliwić poprawne
pozycjonowanie chwytaka podczas przenoszenia obiektu.
Po uruchomieniu programu następuje automatyczna kalibracja układu wizyjnego: na
obrazie pobranym z kamery określana jest pozycja i orientacja markera, by na ich podstawie
można było obliczyć macierz transformacji 0TK. Następnie na obrazie wyszukiwane są okrągłe
7
[SKN Encoder]
Manipulator OOO z systemem wizyjnym
kształty, czyli obiekty do przeniesienia. Znalezione elementy zostają zaznaczone na obrazie
różnymi kolorami, a użytkownikowi zostaje przedstawiona ich lista, aby mógł wybrać, który
obiekt należy przenieść. Środek obiektu zostaje ustalony jako punkt docelowy dla końcówki
chwytaka. Następnie określany jest punkt, do którego należy przenieść obiekt. Jeśli
uruchomiono program w trybie przenoszenia na podest, jego kształt (prostokąt)
wyszukiwany jest na obrazie, a punkt nad środkiem podestu staje się kolejnym punktem
docelowym dla chwytaka. Jeśli zaś program działa w trybie przenoszenia na dowolną
pozycję, należy kliknąć pożądany punkt końcowy na obrazie. Następnie, jeśli punkty
początkowy i końcowy leżą w przestrzeni roboczej manipulatora, do serwomechanizmów
wysyłane są instrukcje sterujące i manipulator wykonuje żądaną operację przenoszenia. Jeśli
zaś któryś z punktów leży poza przestrzenią roboczą lub też podest czy żadne obiekty nie
zostały wykryte, informacja o tym przekazywana jest użytkownikowi, a manipulator nie jest
uruchamiany.
Zrzut ekranu stworzonej aplikacji przedstawiono na rysunku 5.
Rysunek 5. Panel użytkownika aplikacji sterującej manipulatorem
Bibliografia
1. Szkodny Tadeusz: Zbiór zadań z podstaw robotyki. Wydawnictwo Politechniki Śląskiej,
Gliwice 2010
8

Podobne dokumenty