Planowanie i symulacja chwytów za pomocą sztucznej

Transkrypt

Planowanie i symulacja chwytów za pomocą sztucznej
Politechnika Warszawska
Wydział Elektroniki i Technik Informacyjnych
Instytut Automatyki i Informatyki Stosowanej
Wrzesień 2009
Praca dyplomowa inżynierska
Krzysztof Czajkowski
Planowanie i symulacja chwytów
za pomocą sztucznej, trójpalczastej ręki
Opiekun naukowy:
dr inż. Wojciech Szynkiewicz
Ocena. . . . . . . . . . . . . . . . . . . . . . . . . .
...............................
Podpis Przewodniczącego
Komisji Egzaminu Dyplomowego
Streszczenie
Celem pracy było opracowanie trójwymiarowych, symulacyjnych modeli sztucznej,
trójpalczastej ręki, manipulatora IRp6 oraz modeli wybranych, chwytanych obiektów. Modele
obiektów i manipulatora IRp6 wykorzystano do obliczenia najlepszych, w sensie zadanego
kryterium, chwytów za pomocą sztucznej ręki.
Głównymi narzędziami jakimi się posługiwano były symulator chwytania GraspIt! oraz
program do modelowania trójwymiarowego 3D Studio Max.
Do obliczeń wykorzystano algorytm przybliżania prymitywami zaimplementowany w
GraspIt! Polega on na użyciu „brutalnej siły” i ocenie określonej ilości chwytów. Chwyty oceniane
są przy użyciu zadanego modelu ręki oraz przybliżonego prymitywami kształtu chwytanego
obiektu. Implementację algorytmu zmodyfikowano w taki sposób, aby mógł on działać z modelem
prototypowej, sztucznej ręki, która jest konstruowana na Politechnice Warszawskiej.
Symulacje i odnalezione chwyty są punktem wyjścia dla implementacji i realizacji
chwytów w rzeczywistym środowisku za pomocą struktury ramowej MRROC++.
Słowa kluczowe: robotyka, GraspIt, chwyt, sztuczna ręka, manipulator
Abstract
Title: Grasp planning and simulation using an artificial, three-fingered hand
Th e aim o f th is thesis was to d esig n 3 D simu latio n mo d els o f an artificial, th reefingered hand, Irp6 manipulator and chosen grasped objects. The objects and Irp6 manipulator
models were used to calculate the best grasps, according to a given criterion, using the artificial
hand.
The main tools used were a grasp simulator GraspIt! and a 3D modelling program 3D
Studio Max.
For calculations an algorithm using shape primitives implemented in GraspIt! was used.
It is based on “brute force” method and evaluation of a given number of grasps. Grasps are
evaluated using a given hand model and a shape-primitive approximation of an object. The
implementation of the algorithm was modified in order to enable it to work with a prototype of an
artificial hand constructed at Warsaw University of Technology.
The simulations and found grasps are a starting point for an implementation and
realization of grasps in the real environment using MRROC++ framework.
Key words: robotics, GraspIt, grasp, artificial hand, manipulator
Spis treści
1 Wstęp.....................................................................................................................................4
1.1 Cel i zakres pracy..........................................................................................................4
2 Sztuczne ręce i chwyty..........................................................................................................6
2.1 Sztuczne ręce.................................................................................................................6
2.2 Rodzaje chwytów........................................................................................................10
3 Wykorzystane narzędzia.....................................................................................................13
3.1 Symulator GraspIt!......................................................................................................13
3.1.1 Proste symulacje..................................................................................................16
4 Modele symulacyjne...........................................................................................................21
4.1 Ręka.............................................................................................................................21
4.1.1 Model kinematyczny ręki....................................................................................21
4.1.2 Model kinematyczny palca..................................................................................22
4.1.3 Model mechaniczny.............................................................................................24
4.1.4 Model komputerowy............................................................................................26
4.2 Obiekty........................................................................................................................31
4.3 Manipulator Irp6..........................................................................................................34
5 Algorytm planowania chwytów..........................................................................................37
6 Wyniki symulacji................................................................................................................42
7 Możliwości dalszych badań................................................................................................50
7.1 Implementacja algorytmów chwytania w strukturze ramowej MRROC++................50
7.2 Symulowane wyżarzanie.............................................................................................51
8 Podsumowanie....................................................................................................................53
9 Literatura.............................................................................................................................54
10 Załączniki..........................................................................................................................55
3
1 Wstęp
Budowa sztucznych rąk jest jednym z istotnych elementów tworzenia robotów o
dużych zdolnościach manipulacyjnych. Próby ich wykorzystania motywowane są, między
innymi, ułatwianiem i poprawą warunków życia ludzkiego. Budowane są z myślą o
wykonywaniu niebezpiecznych, uciążliwych czy po prostu rutynowych i mało ciekawych
dla człowieka zadań. Nietrudno sobie wyobrazić robota, którego sztuczne ręce byłyby
wykorzystywane do wielu typowych czynności wykonywanych codziennie przez człowieka.
Zastosowania sztucznych rąk są jednak dużo większe i ograniczane jedynie przez ludzką
wyobraźnię. Mogą one równie dobrze być wykorzystywane do rozbrajania niebezpiecznych
ładunków wybuchowych czy obsługi urządzeń na stacjach kosmicznych, nie narażając przy
tym ludzkiego zdrowia czy życia.
Bardzo interesującym obszarem zastosowań dla sztucznych rąk jest medycyna.
Wiele osób każdego roku traci kończyny w wyniku wojen lub chociażby wypadków. Ręka
taka mogłaby służyć jako proteza pozwalająca odzyskać tym ludziom utraconą sprawność.
Przyczepiona bezpośrednio do mięśni lub poprzez mechanizm odbierający impulsy nerwowe
mogłaby naśladować ruchy prawdziwej, ludzkiej ręki.
Kolejnym obszarem zastosowań robotów są usługi. Roboty usługowe muszą
mieć duże możliwości chwytania i manipulowania różnymi przedmiotami. Są
wykorzystywane na przykład do karmienia osób niepełnosprawnych, serwowania potraw w
restauracjach lub różnych czynności sprzątania i czyszczenia. Potrafią wyręczać ludzi
zarówno w domu jak i w pracy. Montaż samochodów, praca przy kasie w sklepie i pomoc
przy transporcie bagażu w hotelu to tylko niewielka część obszarów ich zastosowań.
Aby sztuczna ręka mogła dobrze spełniać swoje funkcje, potrzebny jest
odpowiednio zaawansowany mechanizm sterowania jej ruchem. Jest to kolejny, złożony
problem, który wymaga rozwiązania. Ręka, która nie potrafi efektywnie chwytać i
manipulować obiektami ma bardzo ograniczoną użyteczność.
Chwytanie obiektów z zastosowaniem sztucznych rąk robotów jest stosunkowo
nowym zagadnieniem. Znalezienie optymalnych chwytów, w sensie zadanego kryterium,
jest problemem trudnym i dlatego stanowi bardzo ciekawy obszar badań. Ograniczenia
technologiczne budowanych rąk, ich wysokie ceny i złożoność skutkują jednak stosunkowo
małym tempem rozwoju tych badań. Większość proponowanych rozwiązań dla szukania
chwytów to, wynikające z intuicji, heurystyki.
1.1 Cel i zakres pracy
Cel pracy:
– opracowanie trójwymiarowego modelu symulacyjnego trójpalczastej ręki
– zbudowanie modeli wybranych obiektów
– wyznaczenie chwytów obiektów za pomocą trójpalczastej ręki z wykorzystaniem
symulatora
4
Jako założenia przyjęto znajomość rozmiarów modelowanych obiektów, w
szczególności sztucznej ręki, liczby stopni swobody oraz maksymalnych i minimalnych
wartości przyjmowanych przez zmienne przegubowe. Zakładana jest znajomość
współczynników tarcia oraz współczynników Younga użytych materiałów. Zakłada się
również znajomość położenia i orientacji chwytanych obiektów oraz innych obiektów
będącymi przeszkodami. Symulator bierze przeszkody pod uwagę, automatycznie
odrzucając znalezione chwyty, przy których ręka wchodzi z tymi przeszkodami w kolizję.
Poszukiwanie chwytu polega na rozwiązaniu zadania optymalizacji. Jest to
maksymalizacja wartości zadanego wskaźnika jakości.
Schwycony obiekt, taki jak kubek, butelka czy długopis, będzie mógł być
następnie manipulowany przez sztuczną rękę robota. Rozważaną tu ręką jest, powstający
właśnie w Instytucie Automatyki i Informatyki Stosowanej Politechniki Warszawskiej,
trójpalczasty chwytak. Będzie on przymocowany do ramienia robota IRp6. Całość natomiast
jest częścią rozwijanego projektu budowy robota, który miałby zdolności manualne w
przybliżeniu odtwarzające umiejętności człowieka. Mógłby wspomagać go w realizacji
zadań życia codziennego.
Do szukania najlepszych chwytów użyto symulatora GraspIt! wykorzystującego
algorytm przybliżania prymitywami. Algorytm polega na użyciu „brutalnej siły” i ocenie
określonej ilości chwytów. Chwyty oceniane są przy użyciu zadanego modelu ręki oraz
przybliżonego prymitywami kształtu chwytanego obiektu. Implementację algorytmu
dostosowano do nowego modelu ręki, gdyż w swej pierwotnej postaci działał jedynie dla
ręki Barretta. Wynikiem pracy są sceny w GraspIt! odpowiednio przygotowane do
testowania obiektów oraz obrazy w formacie JPG pokazujące znalezione chwyty.
Zawartość rozdziałów:
Rozdział 2 – zawiera krótki przegląd zagadnień związanych z konstrukcją sztucznych rąk
oraz z problematyką chwytania
Rozdział 3 – przedstawiono wykorzystane w pracy narzędzia
Rozdział 4 – przedstawiono utworzone modele oraz opisano sposób tworzenia
podobnych obiektów przy użyciu wspomnianych wcześniej narzędzi
Rozdział 5 – opisano wykorzystany algorytm poszukiwania chwytów oraz wprowadzone
w nim zmiany
Rozdział 6 – omówiono wyniki badań symulacyjnych
Rozdział 7 – przedstawiono możliwości dalszych badań i zastosowania znalezionych
chwytów w praktyce
Rozdział 8 – zawiera podsumowanie i wyciągnięte, na podstawie rezultatów pracy,
wnioski
5
2 Sztuczne ręce i chwyty
2.1 Sztuczne ręce
Rys. 2.1: IntelRobot, Barrett hand [14]
W mowie potocznej termin ręka i dłoń często są ze sobą utożsamiane. W tej
pracy przez słowo ręka będziemy rozumieli dłoń i palce. Dłoń natomiast oznaczać będzie
śródręcze oraz nadgarstek.
Dwie najważniejsze cechy sztucznych rąk to antropomorfizm oraz zręczność [12,
7]. Przez antropomorfizm rozumiemy stopień podobieństwa sztucznej ręki do ludzkiej.
Bierzemy pod uwagę czynniki takie jak: rozmiar, kształt, kolor, temperaturę oraz sposób w
jaki ręka się porusza [12, 7]. Aby ręka przypominała ludzką niezbędne jest śródręcze, do
którego będzie przymocowany kciuk oraz, mogące działać w przeciwną stronę, pozostałe
cztery palce. Antropomorfizm nie jest kluczową cechą sztucznych rąk, gdyż np. do
chwytania obiektów wystarczą już dwa palce. Nieantropomorficzną rękę przedstawiono na
rys. 2.1. Trudno jest też osiągnąć wysoki poziom antropomorfizmu ze względu na
ograniczenia technologiczne. Ludzka ręka jest sama w sobie bardzo skomplikowanym
organem i odwzorowanie jej w mechaniczny szkielet powoduje wiele problemów, np. jak
umieścić wewnątrz wiele silników napędzających poszczególne stopnie swobody. Nie mniej
jednak antropomorfizm jest cechą pożądaną, gdyż robot używający takiej ręki będzie działał
w środowisku dostosowanym do człowieka. Potrzebna może okazać się interakcja robota z
człowiekiem (np. przy przynoszeniu i podawaniu przedmiotów osobie upośledzonej), więc
rozważania dotyczące estetyki wyglądu ręki nie są bezzasadne. Ręka wyglądająca na ludzką
może spotkać się z większą akceptacją użytkowników.
Zręczność, w przeciwieństwie do antropomorfizmu, wyznacza możliwości ręki
w wykonywaniu zadań, nie ma nic wspólnego z jej wyglądem. Określa ona jak bardzo
skomplikowane zadanie można wykonać i zależy od takich czynników jak liczba palców,
liczba stopni swobody oraz liczba użytych czujników [12]. Możemy wyróżnić zręczność
chwytania, czyli swego rodzaju zdolność związania obiektów z ręką oraz zręczność
manipulacji, czyli sterowanie trajektorią ruchu trzymanego obiektu wraz ze zmieniającymi
6
się równaniami więzów [7].
Na rys. 2.2 przedstawiono porównanie rąk antropomorficznych i zręcznych, z
podziałem na 4 obszary. Przedstawiono również ludzką rękę, która ma najlepsze
współczynniki antropomorfizmu i zręczności.
Przykładem chwytaka przemysłowego jest „WG-125 Angular Gripper” firmy
Adelaide Pneumatic Sales (rys. 2.3a). Chwytaki takie nie są zbyt skomplikowane. Zazwyczaj
mają dwa palce i są ukierunkowane na wykonywanie z góry określonych zadań.
„The Shadow Hand” (rys. 2.4a) jest przykładem ręki antropomorficznej. Jest ona
wyposażona w 40 odpowiedników mięśni, zwanych „Air Muscle” [20], i posiada nawet
sztuczne paznokcie na każdym z palców.
Dotychczas ręką najlepiej odwzorowującą ludzką rękę oraz mającą zarówno
wysoki współczynnik antropomorficzności jak i zręczności jest „Robonaut Hand” (rys.
2.4b). Jest ona częścią projektu tworzenia robota, który mógłby zastąpić człowieka w
misjach kosmicznych prowadzonych przez NASA.
Rys. 2.2: Porównanie rąk antropomorficznych i zręcznych [12]
Rys. 2.3: (a) WG-125 Angular Gripper [13]
(b) Applied Robotics Smart Gripper 2.1 [15]
7
Rys. 2.4 (a) The Shadow Hand [19]
(b) Robonaut Hand [17]
Ręce można podzielić również na zintegrowane, czyli złączone na stałe z
ramieniem, co wynika z ich architektury np. „UB Hand” (rys. 2.5a), oraz modularne, będące
odrębną całością, np. „DLR Hand” (rys. 2.5b). Istotną zaletą rąk modularnych są szerokie
możliwości integracji z różnymi ramionami. Wadą są ich rozmiary. Ręce zintegrowane są
mniejsze co sprawia, że są wykorzystywane do zadań wymagających większej precyzji.
Wraz z układem zasilającym i sterującym ich gabaryty są jednak duże a ramię
niewymienialne.
Rys. 2.5: Sztuczne ręce [12] (a) UB Hand
(b) DLR Hand
Ze względu na sposób napędu dla poszczególnych stopni swobody ręce możemy
podzielić na napędzane wewnętrznie oraz zewnętrznie. Podział ten jest silnie związany z
modularnością ręki.
Przy napędzie wewnętrznym staramy się umieścić silniki, lub inne urządzenia
wykonawcze, jak najbliżej lub nawet w napędzanym przegubie. Znacznie upraszcza to
konstrukcję przegubów. Nie trzeba też rozwiązywać problemu przenoszenia napędu i
budowania odpowiednich przekładni. Wadą jest jednak rozmiar tak zbudowanej ręki.
Rozmiary palców muszą być zwiększone co najmniej do rozmiarów użytych elementów
wykonawczych. Te z kolei są duże z czego wynikają problemy konstrukcyjne. Istnieje
oczywiście możliwość wybrania odpowiednio małych elementów, ale to wiążę się ze
zmniejszeniem siły chwytów realizowanych przez rękę. To podejście zostało zrealizowane
we wspomnianej wcześniej DLR Hand (rys. 2.5b).
W napędzie zewnętrznym elementy wykonawcze są umieszczone poza stopniami
swobody, np. w dłoni lub przedramieniu i są do nich podłączone. Skutkuje to mniejszymi
rozmiarami ręki. Jest to również podejście, które można zaobserwować w naturze, np. w
8
ludzkiej ręce. Związany z tym problem to konieczność brania pod uwagę faktu że napędy
będą wpływać na siebie. Siła napędowa oddziałująca na pewien stopień swobody i ogniwo
musi być przeniesiona przez ogniwa poprzedzające. Rozwiązanie to wykorzystano w NASA
Robonaut Hand (rys. 2.4b).
Można wyróżnić trzy główne kategorie sposobów sterowania stopniami
swobody. Przyjmujemy, że W to liczba napędów ręki, a S to liczba przegubów:
•
W<S – niektóre przeguby są bierne lub sprzężone z innymi
•
W=S – każdy przegub ma swój napęd
•
W>S – niektóre z przegubów są napędzane przez więcej niż jeden napęd
W ostatnim przypadku działanie jest podobne do ludzkiej ręki, gdzie jeden
mięsień odpowiada za zginanie palca, a inny za prostowanie.
W rękach robotowych, tak jak i w innych urządzeniach robotowych, czujniki
można podzielić na proprioceptywne oraz eksteroceptywne. Te pierwsze mierzą wielkości
wewnętrzne robota (np. pozycja, prędkość), a te drugie wielkości związane z interakcją ze
środowiskiem (np. tarcie, kształt dotykanego obiektu). Wyróżniamy następujące cztery klasy
czujników:
•
czujniki pozycji/prędkości napędzanych przegubów
•
czujniki napięcia ścięgien i momentów obrotowych przegubów
•
czujniki dotyku dla końcówki palca (zakładany kontakt punktowy)
•
czujniki dotyku (zakładany kontakt powierzchniowy, np. sztuczna skóra)
9
2.2 Rodzaje chwytów
Chwyt jest to relacja ręki z chwytanym obiektem [7]. Na obiekt są nałożone
więzy wynikające z jego kontaktu z ręką. Przez punkt kontaktu rozumiemy punkt wspólny
ręki oraz schwyconego obiektu. Znając momenty sił działające na przeguby palca można
znaleźć siłę z jaką palec działa na punkt kontaktu. Znając siły działające w punktach
kontaktów można znaleźć wypadkową siłę działającą na chwytany obiekt oraz jego moment,
np. względem jego środka ciężkości. Przekształcenia są też możliwe w drugą stronę, czyli
dla zadanej siły działającej na obiekt można wyznaczyć odpowiednie momenty sił działające
na przeguby.
Możliwe do wykonania chwyty to takie, które spełniają 3 typy ograniczeń [5]. Są
to ograniczenia zadania (np. ruch i siły jakie muszą działać na obiekt), ograniczenia obiektu
(np. kształt i kruchość) i ograniczenia ręki (np. maksymalna siła jaką można przyłożyć i
maksymalny kąt rozwarcia palców). Mając zbiór możliwych chwytów można wybierać
lepsze kierując się wybranymi ich cechami. Istnieje wiele takich cech używanych w języku
potocznym, które są trudne do sprecyzowania i obiektywnej oceny. Są to np.
bezpieczeństwo, stabilność, zręczność i precyzja. W celu analizy należy wybrać i
zdefiniować cechę, która zostanie następnie użyta w zadanej funkcji celu. Przykładem może
być odporność na wyślizgiwanie się obiektu, czyli jak duże mogą być siły i momenty
przyłożone do obiektu zanim zacznie się on przemieszczać względem ręki.
W zależności od użytej ręki można zastosować różnego rodzaju chwyty.
Przykłady chwytów pokazano na rysunku poniżej (rys. 2.6). Znajomość kształtu i rozmiarów
chwytanego obiektu jest bardzo pomocna w wyznaczeniu odpowiednich punktów
przyłożenia siły dla każdego z palców. Im większa ich liczba tym potencjalnie bardziej
skomplikowane i adekwatne do obiektu chwyty można zastosować. Łatwiej jest też przy
użyciu takiej ręki manipulować obiektem. Czwarty i piąty palec nie są niezbędne, ale pełnią
one rolę pomocniczą. Podtrzymują dodatkowo obiekt i zwiększają stabilność chwytu.
Większa liczba palców komplikuje jednak algorytm chwytania, gdyż należy brać pod uwagę
większą liczbę stopni swobody.
Chwyty możemy ogólnie podzielić na domknięte siłowo (rys. 2.7b) oraz
domknięte kształtowo (rys. 2.7a) [7]. Chwyty domknięte kształtowo mają miejsce wtedy gdy
dłoń i palce ręki zamykają się na obiekcie dopasowując do jego kształtu. Obiekt nie może się
poruszyć w żadnym kierunku.
W domknięciu siłowym znaczącą rolę odgrywają siły działające na obiekt.
Wymagane jest aby obiekt pozostawał w równowadze nawet pod działaniem sił
zewnętrznych. W związku z tym należy zauważyć, że wszystkie chwyty domknięte
kształtowo są również domknięte siłowo. Nie mniej jednak te drugie są możliwe przy
mniejszej liczbie punktów kontaktu, a tarcie odgrywa w nich większą rolę. Chwyty mogą
być również mieszane, tzn. niektóre stopnie swobody możemy ograniczyć kształtowo, a inne
siłowo.
Rozróżniamy trzy rodzaje kontaktu przydatne przy analizie chwytu [7]:
•
punktowe bez tarcia
•
miękki palec
•
twardy palec
10
Rys. 2.6: Przykładowa klasyfikacja chwytów [5]
Pierwszy jest używany wtedy gdy obszar kontaktu z obiektem jest bardzo mały
oraz gdy tarcie jest pomijalne. Jedynie składowa prostopadła do powierzchni obiektu jest
brana pod uwagę. Siły tarcia i momenty można zaniedbać.
Model „twardego palca” ma zastosowanie wtedy gdy siły tarcia podczas
kontaktu są na tyle duże, że nie można ich pominąć. Obszar kontaktu jest jednak ciągle
punktowy. Momenty są pomijane.
Model „miękkiego palca” jest używany wtedy gdy zarówno tarcie jak i
powierzchnia kontaktu są duże. Rozważane są wszystkie siły i momenty działające na
obiekt.
Rys. 2.7: Domknięcie kształtowe (a)
Domknięcie siłowe (b)
11
Na rys. 2.8 pokazano przybliżony stożek tarcia, czyli sposób modelowania tarcia
między ręką a obiektem dla „twardego palca”. Kąt rozwarcia stożka
β = 2 tan−1 μ, gdzie μ to współczynnik tarcia statycznego. Dozwolone siły, przykładane w
danym punkcie, które nie spowodują przesuwania się palca na obiekcie, muszą zawierać się
wewnątrz tego stożka.
Dla „miękkiego palca” tarcie zależy od współczynnika Younga oraz rodzaju i
pola powierzchni stykających się ze sobą materiałów. Można wyróżnić trzy rodzaje kontaktu
ze względu na liczbę punktów kontaktu:
•
kontakt powierzchniowy
•
kontakt krawędziowy
•
kontakt punktowy
Tarcie między płaskimi powierzchniami będzie większe niż między stykającymi
się krawędziami i dużo większe niż między stykającymi się punktami.
Rys. 2.8: Aproksymacja stożka tarcia [10]
12
3 Wykorzystane narzędzia
Głównymi narzędziami wykorzystywanymi w niniejszej pracy były symulator
GraspIt! Ver. 2.0 oraz program 3D Studio Max ver. 9.0. Narzędziami pomocniczymi były
IVCON ver. 1.0 i MeshLab ver. 1.1.1. GraspIt! działał pod kontrolą systemu operacyjnego
Linux Ubuntu 8.10, pozostałe narzędzia natomiast pod kontrolą systemu Windows XP.
Poszczególne ogniwa łańcuchów kinematycznych sztucznej ręki zostały
zamodelowane w 3D Studio Max, a następnie złożone w pełny model używając pliku
konfiguracyjnego GraspIt! Formatem roboczym w 3D Studio Max był .3ds natomiast w
GraspIt! obsługiwany jest jedynie format Open Inventor .iv. Z tego powodu konieczna była
konwersja formatów do czego posłużył program open source IVCON, obsługujący wiele
popularnych formatów plików graficznych. Dodatkowo, do budowy modelu robota IRp6,
użyto programu MeshLab. Całą scenę wraz z modelem tego robota można znaleźć w pracy
P. Szufladowicza [11] zapisaną w formacie .x3d. Za pomocą MeshLab z łatwością można
wyodrębnić z takiego pliku sceny poszczególne człony robota.
3.1 Symulator GraspIt!
Symulacje przeprowadzono za pomocą ogólnodostępnego, zaawansowanego
symulatora planowania i realizacji chwytów - GraspIt! autorstwa Andrew T. Millera [10].
Rys. 3.1: Przykładowy ekran w GraspIt!
13
Na rys. 3.1 przedstawiono przykładowy ekran z GraspIt! Jak widać, środkową
część zajmują przedstawione w trójwymiarze części wirtualnego świata, takie jak ręce oraz
chwytane obiekty. Interfejs użytkownika jest bardzo intuicyjny. Kilkuminutowe
użytkowanie programu pozwala nauczyć się jego obsługi. W dalszej części przedstawiono
podstawowe funkcje programu. Z prawej strony znajduje się pionowy pasek narzędziowy:
–
tryb interakcji. Tylko w tym trybie można manipulować elementami wirtualnego
świata – zmieniać zmienne przegubowe, przesuwać i obracać obiekty.
–
tryb kamery. W tym trybie można manipulować wirtualną kamerą – przesuwać,
obracać i powiększać oglądany świat.
–
ustawia kamerę w zapamiętanej pozycji.
–
zapamiętuje pozycję kamery.
–
automatycznie przesuwa kamerę tak, aby wszystkie obiekty mieściły się na
ekranie.
–
tryp poszukiwania. W tym trybie kliknięcie na obiekt powoduje wycentrowanie
kamery na punkt kliknięcia oraz zbliżenie.
–
powoduje włączenie/wyłączenie perspektywy.
Gdy użytkownik jest w trybie interakcji, jej rodzaj określony jest przez następujące przyciski
na górnym, poziomym pasku narzędziowym:
–
przesuwanie obiektu lub zmiana wartości stopni swobody.
–
obracanie obiektu lub zmiana wartości stopni swobody.
–
wybór obiektów na ekranie. Trzymając wciśnięty Shift można wybrać wiele
obiektów.
Kolejne dwa przyciski odnoszą się do zaznaczonych obiektów:
–
włączenie/wyłączenie systemu kontroli kolizji dla zaznaczonych obiektów.
Jeżeli żadne nie zostały zaznaczone to efekt odnosi się do wszystkich.
–
menu wyboru materiału dla zaznaczonych obiektów. Wybór ten
zmienia współczynniki tarcie powierzchni obiektów.
Przed włączeniem systemu kolizji należy upewnić się, że żadne dwa obiekty nie kolidują ze
sobą, gdyż uniemożliwi to późniejszą interakcję z nimi.
14
Symulator ten pozwala na ustawienie i wizualizację w środowisku 3D
dowolnego chwytu. Chwyty można symulować przy użyciu dostępnych już kilku modeli rąk
i obiektów jak również dodawać własne. Dodatkowo możliwy jest pomiar jakości
uzyskanych chwytów, na którego podstawie wybierany jest najlepszy.
Dostępne są różne modele sztucznych rąk (rys. 3.2), włączając w to rękę Barretta
oraz rękę Robonauty, najbardziej przypominający ludzką rękę model NASA. Obiekty te
zapisane są w formacie Open Inventor więc można je modyfikować oraz dodawać własne
dowolnym programem obsługującym ten format, np. Autodesk Maya lub 3D Max Studio.
Do modelu 3D należy dodać też plik z dodatkową informacją o obiekcie taką jak materiał,
masa i środek ciężkości.
Do wirtualnego świata GraspIt! można dodać obiekty zwane przeszkodami,
których jedyna rola polega na ograniczaniu przestrzeni roboczej manipulatora. Jest to
przydatna cecha, gdyż chwytane obiekty prawdopodobnie będę znajdowały się na stole lub
podobnej powierzchni.
Rys. 3.2: Hierarchia elementów wirtualnego świata w GraspIt! [16]
Na rys. 3.2 przedstawiono hierarchię klas elementów świata w GraspIt!
Implementacje tych klas można dowolnie zmieniać, lub dodawać własne.
15
W GraspIt! zaimplementowano algorytm szukający najlepszego chwytu dla ręki
Barretta. Polega on na sprawdzeniu i ocenie dużej liczby chwytów. Można go określić jako
„brute force” i nie jest to ani praktyczne ani wydajne podejście do rozwiązania problemu.
Przetestowanie odpowiednio dużej liczby chwytów może niestety trwać nawet kilka godzin
[2]. W GraspIt! można obejrzeć projekcję sił przyłożonych i sił tarcia. Pozwala nam to w
pewnym stopniu zobaczyć jakość chwytu i jego słabe punkty. W punkcie kontaktu palca
robota z obiektem pojawiają się stożki tarcia. Cały przebieg chwytu w czasie, to jest
zachowanie obiektów w kontakcie, można zaobserwować wciskając przycisk symulacji.
Położenia punktów chwytu znalezione w GraspIt! mogą zostać poprawione, a na
ich podstawie mogą zostać obliczone przykładane siły, używając na przykład algorytmu
opisanego w [6]. Eksperymenty pokazują, że użycie takiego systemu planowania i
wykonania chwytu sprawdza się w praktyce.
3.1.1 Proste symulacje
●
a)
Chwyt kubka na stole, siły i stożki tarcia
b)
Rys. 3.3: Chwyt kubka za pomocą trójpalczastej ręki.
Na rys. 3.3a przyłożone siły w punktach zetknięcia zobrazowane jako długie
strzałki oraz stożki tarcia pokazane w punktach kontaktu. Otrzymany chwyt jest stabilny,
obiekt nie przesuwa się po zaciśnięciu palców ręki. Na rys. 3.3b pokazano, że model kolizji
nie działa dokładnie. Stożki powinny tworzyć zamknięty okrąg przy podstawie kubka.
16
●
a)
Demonstracja sił tarcia, ślizganie
b)
c)
Rys. 3.4: Chwyt butelki za pomocą trójpalczastej ręki.
Na rys. 3.4a butelka spoczywa na chwytaku. Na rys. 3.4b, bez tarcia, ręka
próbuje schwycić obiekt ale wyślizguje się on podczas zaciskania palców. Na rys. 3.4c, dla
butelki z gumy, udaje się jednak utrzymać uchwyt.
●
a)
Niewłaściwa realizacja chwytu
b)
Rys. 3.5: Automatyczny chwyt butelki stojącej na stole za pomocą trójpalczastej ręki.
Z lewej strony na rys. 3.5a widzimy pozycję startową do wykonania chwytu.
Uruchamiana jest funkcja automatycznego chwytu, powodująca, że wszystkie palce
zaczynają zaciskać się z tą samą prędkością. Jeden z palców pierwszy dotyka butelki, a
ponieważ inne palce jeszcze nie zdążyły przesunąć się na właściwą pozycję, butelka zostaje
przewrócona (rys. 3.5b). Oznacza to, że nie zawsze łatwo jest ręcznie dobrać odpowiednią
pozycję ręki i wartości zmiennych przegubowych. Rezultaty mogą być dobre, ale
odpowiednie ustawienie ręki wymaga czasu.
17
●
Dynamika, zbyt duża siła
a)
b)
Rys. 3.6: Chwyt klocka za pomocą trójpalczastej ręki.
Chwyt na rys. 3.6a jest chwytem stabilnym. Został wyznaczony za pomocą
algorytmu przybliżania prymitywami w GraspIt! Po uruchomieniu opcji automatycznego
chwytania i przyłożeniu dużych momentów sił na przeguby, po pewnym czasie klocek
zostaje przepchnięty w stronę pojedynczego palca i przewraca się (rys. 3.6b). Wynika to z
niedopracowanego systemu odpowiedzialnego za dynamikę w GraspIt! Używa on
parametrów modelu symulacyjnego dobieranych ręcznie i eksperymentalnie, a dla
niektórych ich wartości staje się niestabilny. Jak można przeczytać w dokumentacji, system
jest ciągle rozwijany.
●
Inne przykłady
Niektóre chwyty, mimo iż początkowo niestabilne, w czasie dynamicznej
symulacji mogą stać się stabilne. Przykładem takiego chwytu jest chwyt słuchawki
telefonicznej przedstawiony na rys. 3.7. Początkowo palce ręki są rozwarte i dotykają
słuchawkę od dołu. Taki chwyt jest niestabilny i nie zostanie znaleziony przez algorytm
przybliżania prymitywami. W czasie zaciskania się palców ręki dodawane są jednak nowe
punkty kontaktu z boku obiektu i chwyt staje się stabilny. Jest to przykład niedoskonałości
algorytmu, gdyż istnieje możliwość pominięcia prawidłowych chwytów
Na rys. 3.8 przedstawiono znalezione 5 najlepszych chwytów w symulatorze
GraspIt! dla 4 przykładowych obiektów za pomocą algorytmu przybliżania prymitywami i
ręki Barretta. Część chwytów jest niestety bezużyteczna jeśli założymy, że obiekt leży na
stole. Innym ograniczeniem może być np. druga ręka trzymająca już dany obiekt. Dla
takiego przypadku chwyty musiałyby być obliczane od początku.
Symulator GraspIt!, mimo swych ograniczeń, jest bardzo zaawansowanym
symulatorem i udostępnia wiele możliwości przydatnych w analizie chwytów.
Najważniejsza jest możliwość interakcji z wirtualnym światem, ustawienia testowanej ręki i
różnych obiektów w dowolnych pozycjach i w dowolny sposób. Umożliwia to sprawdzenie
wielu chwytów i różnych metod interakcji ręki z obiektem bez angażowania właściwych
18
robotów. Możliwe jest również obejrzenie działających robotów w czasie rzeczywistym, na
przykład sposoby zaciskania się ręki wokół obiektu. Modelowany świat jest dobrze
odwzorowany, autor uwzględnił działające siły grawitacji i tarcia, zależnego od kilku
rodzajów dostępnych współczynników tarcia.
Chwyty znajdowane za pomocą algorytmu przybliżania prymitywami muszą być
obliczane za każdym razem gdy zmienia się chwytająca ręka lub przeszkody czy chwytane
obiekty. Ręczne znajdowanie chwytów jest natomiast czasochłonne. System wykrywania
kolizji nie jest dokładny a system odpowiedzialny za dynamikę powoduje czasem błędy.
Nie jest to jednak program komercyjny, a jedynie pomoc naukowa, która jest ciągle
rozwijana.
Rys. 3.7: Przykład chwytu słuchawki telefonicznej który początkowo jest niestabilny, ale
zmienia się to w miarę zaciskania palców chwytaka [10].
19
Rys. 3.8: Znalezione 5 najlepszych chwytów w symulatorze GraspIt! dla 4 przykładowych
obiektów za pomocą algorytmu przybliżania prymitywami i ręki Barretta [1].
20
4 Modele symulacyjne
W tym rozdziale opisano sposoby konstruowania modeli, które użyto w
symulacjach w GraspIt! Pokazano jak rozszerzyć bibliotekę GraspIt! o nowe obiekty.
Opisany został sposób w jaki należy używać odpowiednich narzędzi oraz informacje z jakich
korzystano budując je.
4.1 Ręka
4.1.1 Model kinematyczny ręki
Przyjęty tu model ma 2 aktywne i 1 bierny stopień swobody. Na rys. 4.1
przedstawiono szkieletowy model ręki z zaznaczonym bazowym układem współrzędnych.
Znajduje się on w środku prostopadłościanu obrazującego dłoń ręki. Trzy pozostałe,
ponumerowane układy to pozycje przegubów, które rozpoczynają odpowiednie łańcuchy
kinematyczne – palce. Czarne koła na palcach oznaczają przeguby. Pierwszy i drugi
przegub, licząc od strony dłoni, są połączone z pierwszym, aktywnym stopniem swobody.
Trzeci przegub natomiast z drugim, aktywnym stopniem swobody.
3
1
2
x3
z3
x1
x2
z1
y1
z2
z0
y0
x0
Rys. 4.1: Model szkieletowy ręki
21
y3
y2
Przesunięcia [mm] i obroty od układu bazowego do początków układów
łańcuchów kinematycznych palców z rys. 4.1 przedstawiono we wzorach (4.1).
[ ] [ ] [ ]
[ ] [ ] [ ]
0 1 0
R 1= 0 0 1
1 0 0
d 1=
18
0
−10
0 −1 0
R2= 0 0 −1
1 0
0
0 −1 0
R3= 0 0 −1
1 0
0
18
d 2= 15
−10
(4.1)
18
d 3= −15
−10
4.1.2 Model kinematyczny palca
Na rys. 4.2 pokazano przyjęty, szkieletowy model palca, dla którego rozwiązane
zostały proste (PZK) i odwrotne (OZK) zadania kinematyczne. Parametry DenavitaHartenberga znajdują się w tab. 4.1.
L3
2
x2
y2
L2
− 1
x1
y1
1
x0
L1
Rys. 4.2: Model szkieletowy palca
22
y0
i−1
ai−1
di
i
0
0
0
1
0
L1
0
− 1
0
L2
0
2
0
0
L3
0
Tab. 4.1: Parametry Denavita-Hartenberga dla palca
Proste zadanie kinematyki
Rozwiązanie PZK przedstawia wzór (4.4). Na podstawie parametrów z tab. 4.1
wyznaczono macierze przekształceń jednorodnych, przedstawionych we wzorze (4.2). Wzór
(4.4) wynika z równości (4.3).
c 1 −s1 0 0
c 1 s1 0 L1
0 T = s 1 c 1 0 0 ; 1 T = −s1 c 1 0 0
2
1
0
0 1 0
0
0 1 0
0
0 0 1
0
0 0 1
(4.2)
c 2 −s 2 0 L 2
1 0 0 L3
s
c
0
0
2T= 2
2
; 3T = 0 1 0 0
4
3
0 0 1 0
0
0 1 0
0 0 0 1
0
0 0 1
gdzie c i=cos i , s i=sin  i , i=1, 2
[
[
] [ ]
] [ ]
0 T =0 T⋅1 T⋅2 T⋅3 T
4
1 2 3 4
[
c 2 −s 2
0 T = s 2 c2
4
0
0
0
0
0
0
1
0
(4.3)
L 3 c 2  L 2  L 1 c1
L3 s 2L1 s1
0
1
]
(4.4)
Odwrotne zadanie kinematyki
Rozwiązanie OZK metodą algebraiczną opisuje wzór (4.6). Przekształcenie
jednorodne dla manipulatora płaskiego o zadanej pozycji [ x , y , ] oraz równość z której
wynika wzór (4.6) przedstawiono w (4.5). Dla zadanego x, y i kąta  otrzymujemy
wartości zmiennych przegubowych θ1 i θ2. Jak widać rozwiązanie jest jednoznaczne a kąt
 równa się kątowi θ2. Zgadza się to z intuicją i wynika również z rys. 4.2.
c  −s 0 x
0 T ' = s  c  0 y ; 0 T =0 T '
(4.5)
4
4
4
0
0
1 0
0
0
0 1
[
]
23
x− L3 c− L2
L1
c 1∈[−1,1]
c 1=
y− L3 s 
L1
s 1∈[−1,1]
s1 =
 1=atan2 s 1 , c 1
2 =
(4.6)
Rozwiązanie PZK jest automatycznie obliczane przez GraspIt!, również dla
dowolnych innych łańcuchów kinematycznych, na podstawie tabelki parametrów DenavitaHartenberga. Symulator dba o nieprzekraczanie dozwolonych maksymalnych i minimalnych
wartości zmiennych przegubowych. Ograniczenia te są wprowadzane do modelu przy użyciu
pliku konfiguracyjnego. Wykrywane są też kolizje między palcami a innymi obiektami.
Możliwa jest więc sytuacja, w której pewne wartości zmiennych przegubowych nie będą
mogły być osiągnięte, pomimo zgodności ze wspomnianymi ograniczeniami. Zgięcie
przegubu palca w symulatorze nie będzie możliwe jeżeli oznaczać to będzie kolizję palca z
innym obiektem.
4.1.3 Model mechaniczny
Na rys. 4.3a i rys. 4.3b pokazano wczesny prototyp palca. Nie posiada on jeszcze
odpowiednich czujników ani nie jest niczym pokryty. W wersji końcowej będzie to
plastyczna substancja zwiększająca tarcie.
a)
Rys. 4.3: Wczesny prototyp sztucznego palca
24
b)
Rys. 4.4: Specyfikacja techniczna nowej, sztucznej ręki [9]
25
4.1.4 Model komputerowy
Schematy szkieletowe ręki i palca są bardzo pomocne przy budowaniu modelu
komputerowego dla GraspIt! Komputerowy model sztucznej ręki jest najważniejszym
elementem tej pracy. Był on wzorowany na technicznym opisie, dostarczonym przez K.
Mianowskiego, głównego konstruktora tworzonej ręki (rys. 4.4). Ręka składa się z trzech
identycznych palców z przeciwstawnym kciukiem. Każdy palec ma 3 stopnie swobody.
Na rys. 4.5 i rys. 4.6 pokazano końcową wersję modelu ręki w środowisku
GraspIt! Każdy z palców ma po 3 stopnie swobody. Zapewnia to elastyczność rozwiązania i
łatwe dopasowywanie do ciągle rozwijanej konstrukcji prototypu ręki. Trzeci stopień
N
O1
O3
Rys. 4.5: Model sztucznej ręki – pełne rozwarcie palców
Rys. 4.6: Model sztucznej ręki – palce wyprostowane
26
O2
Okręgi (O1, O2, O3) widoczne na rys. 4.5 są rysowane wokół osi obrotu i są
wykorzystywane w symulatorze do interakcji z symulowaną ręką. Za pomocą myszki można
je obracać ustawiając pożądaną wartość zmiennej konfiguracyjnej. Dla ostatniego przegubu
brakuje narysowanego okręgu, ale za to występuje on w przedostatnim przegubie.
Przesunięcie to wynika z niedopracowania symulatora. Autorzy najprawdopodobniej nie
wzięli pod uwagę możliwości występowania biernego stopnia swobody w środku łańcucha
kinematycznego. Jest to jednak wada jedynie wizualna. Model ręki zachowuje się i działa
prawidłowo.
Na rysunku rys. 4.5 można również zauważyć narysowane odcinki (jeden
przykładowy oznaczono jako N), przyczepione do powierzchni palców. Są to normalne do
tych powierzchni i zostały dodane z myślą o wykorzystaniu modelu ręki w przyszłości, w
rozwijanych dopiero algorytmach. Przykładem takiego algorytmu jest wspomniany w
rozdziale 7 algorytm symulowanego wyżarzania.
Kluczowymi parametrami w budowie modelu komputerowego w GraspIt! są
parametry Denavita-Hartenberga. Poniżej, w tab. 4.3, przedstawiono je dla kciuka, a dla
pozostałych palców są one analogiczne. W tab. 4.2 przedstawiono wersję tych parametrów
dla GraspIt!, w formacie w jakim znajdują się one w pliku konfiguracyjnym. d0, d1 i d2
oznaczają odpowiednie zmienne przegubowe w symulatorze. Muszą być wpisane w
kolumnie  dla stopni swobody, które są przegubami (ruch wokół osi) lub w kolumnie p
dla stopni swobody, które umożliwiają ruch posuwisty (ruch wzdłuż osi). Jak widać,
przeguby drugi i trzeci są ze sobą sprzężone. Długości są wyrażone w milimetrach, a miarą
kątową są stopnie. W notacji GraspIt! d1+-60 oznacza d1-60, natomiast d1*-1+60 oznacza
-d1+60. Wartości dodawane do d1 mają na celu osiągnięcie początkowego położenia
kątowego odpowiednich przegubów, czyli domyślnej pozycji palców widocznej na rys. 4.5.
Dodając inne wartości można uzyskać inną pozycję domyślną palców, na przykład taką jak
na rys. 4.6. min i  max oznaczają minimalne i maksymalne dopuszczalne wartości
zmiennych przegubowych. Najprostszym sposobem zablokowania dowolnego stopnia
swobody (np. dla sprawdzenia jak zachowuje się wtedy ręka) jest więc ustawienie min i
max na tą samą wartość. Ograniczenia nakładane na wartości d0, d1 i d2 z tab. 4.2:
−20≤d0≤20
0≤d1≤60
0≤d2≤60
•
•
•
natomiast związek d0, d1, d2 i 0 , 1 , 2 z tab. 4.3 jest następujący:
0=d0
1=d1−60
 2=d2
•
•
•

p
a

min
 max
d0
0
8
90
-20
20
d1+-60
0
45
0
0
60
d1*-1+60
0
30
0
-60
0
d2
0
26.5
0
0
60
Tab. 4.2: Parametry Denavita-Hartenberga dla palca w formacie stosowanym w GraspIt!
27
i
di
ai
i
0
0
8
90
1
0
45
0
−1
0
30
0
2
0
26.5
Tab. 4.3: Parametry Denavita-Hartenberga dla palca, notacja zmodyfikowana
0
Plik konfiguracyjny ogniwa zapisany w formacie Open Inventor .iv pozwala na
łatwe operowanie obiektami w podstawowym zakresie, takim jak obroty czy skalowanie, za
pomocą prostych edytorów tekstu. Opis formatu Open Inventor można znaleźć na stronie
[18]. Bardziej skomplikowane przekształcenia wymagają jednak programów do edycji
grafiki 3D.
Dodatkowo w komentarzach na początku tego pliku, po informacji o formacie i
jego wersji, należy dodać parametry rozumiane przez GraspIt!:
•
•
•
material – materiał z jakiego zbudowany jest obiekt. Ma wpływ jedynie na
współczynniki tarcia. Dostępne są następujące opcje: frictionless, glass, metal,
plastic, wood, rubber.
Young – moduł Younga w MPa, jeśli chcemy symulować ”miękki palec”. Dla
„twardego palca” parametr pomijamy.
mass – masa w gramach.
Przykład takich komentarzy znajduje się poniżej. Jest to wersja dla wszystkich
segmentów palców sztucznej ręki.
#Inventor V2.0 ascii
#material rubber
#youngs 100
#mass 100
Aby stworzyć model robota w GraspIt! należy:
1. Utworzyć modele ogniw w formacie Open Inventor .iv
a. Stworzyć ogniwa (bryły) w programie graficznym np. 3D Studio Max.
Odpowiednio obrócić, transponować i wyskalować ogniwo, tzn. należy pamiętać,
że ogniwo będzie obracane wokół osi Z (oś obrotu), a przesunięcie do następnego
ogniwa łańcucha kinematycznego nastąpi wzdłuż osi X (zgodnie z notacją
Denavita-Hartenberga). Początek układu współrzędnych jest punktem styczności
z następnym ogniwem, a jako jednostek należy używać milimetrów.
b. Przekonwertować bryły do formatu Open Inventor .iv, np. używając IVCON.
c. Dodać odpowiednie komentarze na początku pliku określające parametry brył
(patrz przykład powyżej: material, youngs, mass).
2. Utworzyć plik konfiguracyjny GraspIt! dla modelu. Należy pamiętać o
zmodyfikowanej konwencji parametrów Denavita-Hartenberga stosowanej w
symulatorze.
28
Przykład poprawnie napisanego pliku konfiguracyjnego modelu robota w GraspIt!:
#POCZĄTEK PLIKU KONFIGURACYJNEGO-----------------------------------------------------#Nazwa klasy modelu (patrz rys. 3.2).
#'Robot' dla robota z jednym łańcuchem kinematycznym,
#'Hand' dla ręki, gdy jest więcej niż jeden łańcuch kinematyczny. Można również wpisać
#inne, własne klasy, o ile istnieje dla nich odpowiednia implementacja.
Robot
#Opis podstawy (również uważanej za ogniwo)
#nazwa_pliku ostatnie_ogniwo
#(ostatnie_ogniwo wynosi -1 ponieważ żadne wcześniejsze ogniwo nie wpływa na podstawę)
link0v2.iv -1
#Liczba stopni swobody modelu
6
#Dla każdego stopnia swobody podawana jest 1 linia opisu
#rodzaj_stopnia_swobody ('r' dla zwykłych, 'c' dla sprzężonych)
#domyślna prędkość (1 jeżeli funkcja automatycznego chwytu ma korzystać
#z tego stopnia swobody, 0 jeżeli ma być ignorowane)
#maksymalna siła (nie używane w pracy)
#praca (wartość dla kontrolera systemu dynamicznego,
#znajdowana eksperymentalnie, nie używane w pracy)
#przesunięcie (wartość dla kontrolera systemu dynamicznego,
#znajdowana eksperymentalnie, nie używane w pracy)
#rozmiar okręgu umożliwiającego interakcję ze stopniem swobody
r 1.0 1.0e+10 1.0e+12 1.0e+7 180.0
r 1.0 1.0e+10 1.0e+12 1.0e+7 120.0
r 1.0 1.0e+10 1.0e+12 1.0e+7 120.0
r 1.0 1.0e+10 1.0e+10 1.0e+7 80.0
r 1.0 1.0e+10 1.0e+10 1.0e+7 80.0
r 1.0 1.0e+10 1.0e+10 1.0e+7 80.0
#Liczba łańcuchów kinematycznych modelu
1
#------------------------------------------Opis łańcucha numer 0---------------------------------------#Liczba ogniw w łańcuchu
6
#Liczba przegubów w łańcuchu
6
29
#Transformacje od układu współrzędnych bazy do układu współrzędnych początku
#łańcucha kinematycznego
#Przykład:
#r 90 x (obrót o 90 stopni wokół osi x)
#rr 3.0368729 y (obrót o 3.0368729 radianów wokół osi y)
#t 1.92188 134.5 39.0717 (przesunięcie w mm)
t000
#Opis przegubów (1 na linię)
#theta d a alpha DOFminval DOFmaxval
#(przeguby są ostawione od najbliższego dłoni do najdalszego)
#(równania liniowe mają postać: q#*k+c [bez spacji!])
d0
520 0 -90 -170 170
d1+-90 0
455 0 -40 40
d2+90 0
670 0 -25 40
d3+-90 0
0 -90 -90 90
d4+-90 190 0 90 -180 180
d5
95
0 0 -165 168
#Opis ogniw (1 na linię)
#nazwa_pliku ostatnie_ogniwo
#typ_połączenia:
#Revolute – ogniwo jest połączone z poprzednim poprzez pojedynczy przegub
#Universal – ogniwo jest połączone z poprzednim poprzez dwa przeguby,
#zazwyczaj z o prostopadłych osiach
#Ball – ogniwo jest połączone z poprzednim poprzez trzy przeguby,
#zazwyczaj z o prostopadłych osiach
#(ogniwa są ostawione od najbliższego dłoni do najdalszego)
#(ostatnie_ogniwo jest to numer ostatniego ogniwa które może mieć wpływ
#na przegub w tej samej lini)
Revolute
link1.iv 0
Revolute
link2.iv 1
Revolute
link3.iv 2
Revolute
link4v2.iv 3
Revolute
link5.iv 4
Revolute
link6v2.iv 5
#--------------------------------Koniec opisu łańcucha numer 0---------------------------------------#KONIEC PLIKU KONFIGURACYJNEGO----------------------------------------------------------
30
4.2 Obiekty
Do testów wybrano 12 różnych obiektów, z czego 5 to proste figury
geometryczne. Pozostałe 8 są konstruowane jako złożenie prostych figur. Większość
obiektów z otoczenia człowieka, które można chwytać da się przybliżyć tymi obiektami. Na
przykład brakuje obiektu typu „książka”, ale jest obiekt typu „prostopadłościan”, co
wystarcza jako przybliżenie dla potrzeb symulacji.
Proste figury geometryczne:
1. sześcian
2. prostopadłościan (różne długości boków)
3. walec
4. stożek
5. kula
Złożone figury geometryczne:
6. butelka
7. szklanka (z długą nóżką)
8. kubek
9. słuchawka telefonu
10. model samolotu
11. długopis
12. maskotka (miś)
Poniżej znajdują się rysunki użytych obiektów wraz z przykładowymi
fragmentami definicji w formacie Open Inventor. Mogą one być łatwo zmieniane w pliku
.iv. Pełne definicje są załączone w oddzielnych plikach w katalogu „obiekty”. Z symulacji
wynika, że maksymalny rozstaw palców pozwala na chwytanie obiektów o szerokości 8cm.
1. Sześcian
Cube { width 80 height 80 depth 80}
2. Prostopadłościan
Cube { width 120 height 40 depth 80}
31
3. Walec
Cylinder { radius 25 height 40 }
4. Stożek
Cone { bottomRadius 50 height 100 }
5. Kula
Sphere { radius 30 }
6. Butelka
Cone { bottomRadius 50 height 100 }
Cylinder { radius 12 height 80 }
7. Szklanka
Sphere { radius 30 }
Cylinder { radius 3 height 60 }
Cylinder { radius 30 height 6 }
32
8. Kubek
Cylinder { radius 40 height 100 }
Cube { width 30 height 60 depth 15 }
9. Telefon
Cube { width 56 height 106 depth 28}
Cube { width 56 height 50 depth 46 }
Cube { width 56 height 50 depth 35 }
10. Model samolotu
Cube { width 355.6 height 101.6 depth 40.132 }
Cube { width 109.22 height 10.16 depth 203.2 }
Cube { width 109.22 height 10.16 depth 203.2 }
11. Długopis
Cylinder { radius 5 height 150 }
Cone { bottomRadius 5 height 10 }
33
12. Maskotka
Sphere { radius 40 }
Sphere { radius 20 } //*4
Sphere { radius 25 }
Sphere { radius 8 } //*3
Sphere { radius 2 } //*2
4.3 Manipulator Irp6
Rys. 4.7: Manipulatory IRp6 [11]
Manipulator robota IRp6 został zamodelowany w pracy inżynierskiej P.
Szufladowicza [11] w celu dostarczenia jego modelu na potrzeby tej pracy. Należało
przekonwertować modele członów tego robota do formatu .iv i, korzystając ze znanych
parametrów Denavita-Hartenberga, odpowiednio napisać plik konfiguracyjny dla GraspIt!
Model manipulatora nie jest wykorzystywany w symulacji do planowania i wykonywania
chwytów. Służy jedynie do przytrzymywania chwytanego obiektu lub do prezentowania, w
połączeniu z ręką, już znalezionego chwytu.
34
i−1
ai−1
di
i
0
0
520
1
-90
0
0
2
0
455
0
3
0
670
0
4
-90
0
190
5
6
90
0
95
Tab. 4.4: Parametry Denavita-Hartenberga dla manipulatora IRp6
Rys. 4.8: Model manipulatora IRp6 w 3D Studio Max [11]

p
a

min
 max
d0
520
0
-90
-170
170
d1+-90
0
455
0
-40
40
d2+90
0
670
0
-25
40
d3+-90
0
0
-90
-90
90
d4+-90
190
0
90
-180
180
d5
95
0
0
-165
168
Tab. 4.5: Parametry Denavita-Hartenberga manipulatora IRp6 w formacie stosowanym w
GraspIt!
35
x3
z4
z2
x2
x 4 =z 3
x5
x1
z5
z1
z0
x0
Rys. 4.9: Model manipulatora IRp6 w symulatorze GraspIt!
Poniżej znajduje się fragment pliku konfiguracyjnego robota IRp6 z parametrami
Denavita-Hartenberga. Podobnie jak podczas konstrukcji ręki dodawanie stałych do wartości
stopni swobody ma na celu ustawienie robota w pozycji domyślnej, tak jak na rys. 4.9.
Wartość parametru p1=520 jest różna od wartości 700 znajdującej się w pliku kinematyki
MRROC++. Rozbieżność wynika zarówno z wprowadzonego uproszczenia modelu
podstawy robota jak i zmiany położenia współrzędnych bazowych. Pozostałe parametry są
już jednak takie same.
36
5 Algorytm planowania chwytów
Wybranym algorytmem jest „przybliżanie prymitywami”. Jest to algorytm już
zaimplementowany w GraspIt! dla ręki Barretta, która jest podobna do projektowanej,
sztucznej ręki, i dostosowanie go nie sprawia trudności.
Jest to algorytm typu „brutalna siła”. Sposób działania algorytmu polega na
wyznaczaniu wielu pozycji ręki wokół obiektu przybliżonego prymitywami. Następnie
algorytm sprawdza po kolei wszystkie wyznaczone pozycje. Ręka jest zbliżana z tych
pozycji w kierunku obiektu aż do uzyskania kontaktu. Kolejnym krokiem jest zaciśnięcie
ręki i ocena chwytu [1]. Sieć działań algorytmu pokazano na rys. 5.1.
Rys. 5.1: Sieć działań algorytmu przybliżania prymitywami
Wczytanie modelu obiektu polega na załadowaniu jego pliku konfiguracyjnego
.iv w formacie OpenInventor. Obiekt musi być przybliżony prymitywami kształtu (patrz
rozdział 4.2). Wczytanie modelu ręki polega na załadowaniu jego pliku konfiguracyjnego
.cfg w formacie GraspIt! Przykład takiego pliku znajduje się w rozdziale 4.1.4.
Następnie generowane są punkty testowe których liczba i położenie zależą od
zadanego parametru, kształtu oraz rozmiarów wczytanego obiektu. Na płaszczyźnie
prymitywów wyznaczana jest zadana liczba, jednakowo od siebie odległych punktów.
Następnie punkty te są odsuwane od płaszczyzny wzdłuż normalnych do tej płaszczyzny w
wyznaczonych punktach. Długość przesunięcia jest dana.
Ostatnim krokiem jest sprawdzenie chwytów dla wszystkich wyznaczonych
punktów testowych. Ręka jest przesuwana w kierunku obiektu z punktu i aż do uzyskania
kontaktu. Następnie wszystkie palce są zaciskane na obiekcie i obliczana jest jakość chwytu.
Wynikiem jest wektor jakości chwytów dla wszystkich sprawdzonych punktów.
37
Implementacja algorytmu składa się z 5 klas, które współdziałają ze sobą w celu
znalezienia i pokazania najlepszego, w sensie zadanego kryterium, chwytu.
Grasp_manager – Zarządza przebiegiem całego procesu planowania.
Odpowiedzialny jest za odczytanie prymitywów kształtu z zadanych, uproszczonych
obiektów. Wywołuje następnie grasp_planner z zadanymi prymitywami jako parametrami.
Planer zwraca następnie zestaw punktów testowych (rys. 5.2) które są z kolei przekazywane
do obiektu grasp_tester w celu ewaluacji. Wyniki pomiarów testera są przekazywane do
obiektu grasp_presenter, który umożliwia przeglądanie obliczonych chwytów.
Grasp_planner – Klasa generująca zestaw punktów testowych dla zadanych
prymitywów. Punkty są wyznaczane w zadanej odległości, domyślnie wynoszącej 8cm, od
płaszczyzn prymitywów. Ich liczba zależy od rozmiaru i kształtu prymitywów oraz zadanego
parametru dokładności pomiarów.
Grasp_presenter – Klasa przechowuje, posortowaną według jakości, listę
obliczonych przez testera chwytów.
Grasp_representation – Klasa wizualizująca punkty testowe wyznaczone przez
planer w oddzielnym oknie. Definiuje ona też wygląd punktów testowych. Obrazy
wygenerowane przez tę klasę można obejrzeć na rys. 5.4 i rys. 5.5.
Grasp_tester – Klasa obliczająca chwyty dla zadanych punktów testowych.
Model ręki jest ustawiany w punkcie testowym, i zbliżany do obiektu wzdłuż osi
przybliżania. Następnie wszystkie palce ręki są automatycznie zaciskane na obiekcie aż do
uzyskania kontaktu. Punkty kontaktu są następnie używane do obliczenia jakości chwytu. W
przypadku gdy chwyt jest uznany za niestabilny ręka oddala się o zadaną wartość i palce są
ponownie zaciskane. Domyślna liczba prób wynosi 20 a oddalenie 4mm.
K1
N
K2
Rys. 5.2: Położenie i orientacja sztucznej ręki
Rys. 5.2 przedstawia położenie i orientację ręki. Położenie jest oznaczone jako
środek kuli i w tym miejscu zostanie umieszczony początek układu współrzędnych dłoni.
Jest to punkt rozpoczynania chwytu. Żadne inne punkty położenia ręki lub palców nie są
zadawane. Zmienne przegubowe przyjmują wartości domyślne. Oś N jest normalną dłoni i
jednocześnie kierunkiem zbliżania się ręki do obiektu. Oś K natomiast oznacza kierunek
kciuka. Na tym rysunku widzimy dwie osie K1 oraz K2 i oznaczają one dwa kierunki kciuka,
a więc i dwie możliwe orientacje ręki. Pierwsza oś oznacza kciuk skierowany w prawo, a
druga w dół.
Współczynnik jakości chwytu jest obliczany zgodnie z opisem w [3].
Wyznaczana jest 6-wymiarowa przestrzeń wypukła, składająca się z wartości sił i
momentów obrotowych w 3-wymiarowej przestrzeni dla każdego z punktów kontaktu.
Początkiem układu współrzędnych jest środek ciężkości obiektu. Następnie obliczany jest
maksymalny promień 6-wymiarowej kuli, o środku w tym układzie, pozostający wewnątrz
tej przestrzeni wypukłej. Można wyobrazić sobie, że kula ta ma na początku minimalny
promień, który jest zwiększany aż do zetknięcia się jej powierzchni z powierzchnią
przestrzeni. Jeżeli środek ciężkości znajduje się poza tą przestrzenią to chwyt jest oznaczany
jako niestabilny z wartością jakości równą -1.
38
Implementacja algorytmu została dostosowana do projektowanej ręki, a poniżej
przedstawiono wprowadzone zmiany. W każdym punkcie rozpoczynania chwytu, w
zależności od badanego prymitywu, zmienne przegubowe ręki otrzymują odpowiednie
wartości początkowe, opisane w pliku grasp_preshape.h. Fragment tego kodu z pliku
grasp_preshape.h, wraz z odpowiednimi zmianami, znajduje się poniżej.
/* wartości stopni swobody w punktach rozpoczynania chwytu
RĘKA BARRETTA (wykomentowano)
RĘKA PROJEKTOWANA */
//#define PR_circle_Angle 60.0
#define PR_circle_Angle 0.0
#define PR_circle_F1 0.0
#define PR_circle_F2 0.0
#define PR_circle_F3 0.0
#define PR_two_opp_one_Angle 0.0
#define PR_two_opp_one_F1 0.0
#define PR_two_opp_one_F2 0.0
#define PR_two_opp_one_F3 0.0
//#define PR_three_opp_palm_Angle 180.0
#define PR_three_opp_palm_Angle 0.0
#define PR_three_opp_palm_F1 0.0
#define PR_three_opp_palm_F2 0.0
#define PR_three_opp_palm_F3 0.0
//#define PR_t_shape_Angle 90.0
#define PR_t_shape_Angle 0.0
#define PR_t_shape_F1 0.0
#define PR_t_shape_F2 0.0
#define PR_t_shape_F3 0.0
Interpretacja kodu i wytłumaczenie wprowadzonych zmian
Kod został zmodyfikowany z wersji dla ręki Barretta, która posiada 4 zmienne
przegubowe. Poza kątem rozwarcia palców, były one ustawiane na 0 przed przystąpieniem
do chwytu. Dla projektowanej ręki pierwsze 4 wartości stopni swobody zawsze są ustawiane
na 0, a pozostałe są ignorowane, czyli pozostają z wartościami niezmienionym,
wynoszącymi również 0. Wszystkie zmienne przegubowe otrzymują w efekcie wartości 0 i
ręka przyjmuje ustawienie początkowe (rys. 5.3). Dzięki odpowiedniej budowie modelu
projektowanej ręki (wartości domyślne dla stopni swobody wynoszą 0) uniknięto
znaczących modyfikacji kodu źródłowego. Początkowe wartości zmiennych przegubowych
ręki przed chwytem, w zależności od prymitywu, są wynikiem heurystyki i
najprawdopodobniej mogą zostać ulepszone w wyniku dodatkowych analiz. 4 grupy
wpisów, po 4 linie dla wszystkich zmiennych przegubowych określają 4 strategie chwytania
dla ręki Barretta, wymyślone przez autora symulatora. Różnicowane są jedynie pod
względem kąta rozwarcia palców, który w nowym modelu nie jest uwzględniany.
Wyzerowanie wszystkich wartości powoduje przyjmowanie zawsze tej samej strategii i tych
39
samych wartości początkowych zmiennych przegubowych.
Niepotrzebny kod dla duplikowanych strategii nie został usunięty gdyż jest
podstawą do tworzenia ewentualnych, nowych strategii, a zysk w wydajności byłby i tak
znikomy.
Rys. 5.3 Początkowe, domyślne ustawienie ręki.
Na rys. 5.4 można zauważyć, że kubek został przybliżony dwoma walcami, a na
rys. 5.5 słuchawka telefonu trzema prostopadłościanami. Widać również punkty położenia i
Rys. 5.4 Wyznaczone punkty rozpoczynania chwytu dla kubka.
40
Rys. 5.5: Wyznaczone punkty rozpoczynania chwytu dla słuchawki telefonicznej.
41
6 Wyniki symulacji
Większość symulacji przeprowadzanych zostało z obiektem leżącym na stole.
Dla dwóch obiektów, kubka i telefonu, symulowane jest trzymanie ich przez manipulator
IRp6 w powietrzu. Zastosowanym modelem kontaktu jest tu miękki palec. Chwyty
generowane przez użyty algorytm przybliżania prymitywami są chwytami siłowymi.
Procesor użyty do obliczeń to dwurdzeniowy Intel T2300 1,66GHz wraz z 2GB pamięci
RAM.
Wyniki symulacji są tu prezentowane jako zdjęcia scen z symulatora z realizacją
najlepszego, wybranego przez algorytm, chwytu. Nie jest to najlepsza wizualizacja, ale
zapisane w formacie GraspIt! sceny umożliwiają prezentację w trójwymiarowym,
interaktywnym środowisku. W razie potrzeby można w ten sposób dokładniej przyjrzeć się
chwytowi. Dodatkowo, współrzędne położenia i orientacji ręki względem ustalonego układu
współrzędnych zapisywane są do pliku.
Przykład wpisu z pliku z obliczonymi chwytami:
// x
y
z
qw
qx
qy
qz
a
k
[0.0758485 629.567 -365.803] [-7.78524e-06 0.00211269 0.999998 3.60624e-05] 0 0.355272
Pierwsze 3 (x, y, z) wartości to współrzędne ręki w układzie kartezjańskim,
kolejne 4 (qw, qx, qy, qz) to orientacja (kwaternion jednostkowy), następnie kąt rozwarcia
palców (a, nieużywane) i obliczona jakość chwytu (k). Po ustawieniu ręki w tak zadanej
pozycji uruchamiana może być, zaimplementowana wcześniej, funkcja automatycznego
chwytu powodująca zaciskanie się palców aż do uzyskania przez nie kontaktu. Należy użyć
do tego odpowiednich czujników, np. dotyku lub momentu siły. Położenie i orientacja
chwytanego obiektu jest zadana i znana.
Zdjęcia scen pokazują rękę jako niepołączoną z żadnym manipulatorem.
Przyjmujemy, że wygenerowane pozycje ręki dla poszczególnych chwytów są możliwe do
osiągnięcia w rzeczywistości. Jest to założenie realistyczne dla symulacji przeprowadzonych
z użyciem stołu, na którym leży obiekt oraz trzymającego obiekt manipulatora IRp6.
Dokładne, obliczone współrzędne mają jednak małą wartość praktyczną z uwagi
na takie czynniki jak niedoskonałość symulatora, zastosowane przybliżenie obiektów
prymitywami oraz niedoskonałość modelu ręki. W rzeczywistej realizacji chwytów należy
odwzorować wygląd sceny z symulatora w rzeczywistości (lub wygląd rzeczywistości w
symulatorze, przeprowadzając ponownie symulacje) traktując obliczone współrzędne jako
wskazówki, weryfikując je na podstawie oglądanych w rzeczywistości prawdziwych
chwytów i porównując z symulowanymi. Obliczone chwyty należy traktować jako
uogólnione klasy chwytów dla zadanych typów obiektów. Oznacza to, że chwyty te można
stosować dla podobnych obiektów i o lekko zmienionych rozmiarach. Charakterystyczne
elementy obiektów muszą jednak pozostać niezmienione, np. dla kubka musi istnieć jego
ucho, mimo, że może być ono węższe lub szersze.
42
Przedstawienie wyników symulacji
Czas testu
Wynik
– czas jaki zużyto na poszukiwanie prezentowanego chwytu [s].
– kryterium jakości opisane w poprzednim rozdziale. Przyjmuje wartości
od 0 do 1 lub -1 jeżeli nie znaleziono stabilnego chwytu.
1. Sześcian
Czas testu: 5s
Wynik: 0.418
Rys. 6.1: Chwyt sześcianu
2. Prostopadłościan
Czas testu: 17s
Wynik: 0.210
Rys. 6.2: Chwyt prostopadłościanu
43
3. Walec
Czas testu: 5s
Wynik: 0.441
Rys. 6.3: Chwyt walca
4. Stożek
Czas testu: 4s
Wynik: 0.183
Rys. 6.4: Chwyt stożka
44
5. Kula
Czas testu: 33s
Wynik: 0.431
Rys. 6.5: Chwyt kuli
6. Butelka
Czas testu: 22s
Wynik: 0.148
Rys. 6.6: Chwyt butelki
45
7. Szklanka
Czas testu: 2min 47s
Wynik: 0.215
Rys. 6.7: Chwyt szklanki
8. Kubek (z IRp6)
Czas testu: 27s
Wynik: 0.156
Rys. 6.8: Chwyt kubka
46
9. Telefon (z IRp6)
Czas testu: 1min 42s
Wynik: 0.205
Rys. 6.9: Chwyt telefonu
10. Model samolotu
Czas testu: 3min 30s
Wynik: 0.0329
Rys. 6.10: Chwyt modelu samolotu
47
11. Długopis
Czas testu: 2min 59s
Wynik: 0.0292
Rys. 6.11: Chwyt długopisu
12. Maskotka
Czas testu: 13min 24s
Wynik: 0.335
Rys. 6.12: Chwyt maskotki
48
Chwyty generowane automatycznie mają tę istotną wadę, że ręka jest zawsze
ustawiana na wprost powierzchni badanych obiektów, dlatego niemożliwe jest sprawdzenie
części przestrzeni chwytów. Ciągle możliwe jest manualne, czyli bazujące na ludzkiej
zdolności planowania, znajdowanie chwytów dające lepsze wyniki. Przykładem jest rys.
6.13 z chwytem znalezionym manualnie i wynikiem 0.0295. Jest to ten sam obiekt co na rys.
6.11 z wynikiem 0.0292. Bardziej intuicyjne chwyty mogą dawać lepsze wyniki.
Czas obliczeń zwiększa się drastycznie wraz z ilością użytych do przybliżeń
prymitywów (maskotka) oraz ich rozmiarami (samolot). Niektóre chwyty mogą nie zgadzać
się z naszą intuicją. Wynika to z faktu, że obliczane są tu chwyty jedynie siłowe, a nie
precyzyjne. Dokładność obliczeń jest również ograniczona. Na przykład dla obiektu szklanki
(chwyt na rys. 6.7) najczęściej stosowanym przez ludzi chwytem jest chwyt precyzyjny za
nóżkę szklanki z dwoma palcami i kciukiem kontrującym lub chwyt precyzyjny, sferyczny
podtrzymujący od dołu czaszę szklanki (rys. 2.6).
Rys. 6.13: Chwyt znaleziony manualnie
Chwyty z robotami IRp6 dla kubka i telefonu zrealizowano w ten sposób, że
najpierw wyszukany został najlepszy chwyt dla pierwszej ręki (połączonej później z IRp6
stojącego po lewej stronie na rys. 6.8 i rys. 6.9) i obiektu unoszącego się w powietrzu.
Następnie, z uwzględnieniem ograniczeń przestrzeni nałożonych przez tę rękę, znaleziono
chwyt dla drugiej ręki. Na końcu dodano roboty IRp6 podłączając je odpowiednio do rąk.
Efektem jest przykładowy, optymalny w sensie użytej funkcji celu, chwyt, który może
zostać użyty w przyszłości np. do przekazywania sobie przedmiotów przez roboty. W razie
potrzeby łatwo można wykonać symulacje dla innych obiektów powtarzając opisany
powyżej proces.
Dokładność obliczeń chwytów można dowolnie zwiększać, a jedynym
ograniczeniem jest długi czas oczekiwania na rezultaty. Powyższe chwyty można obliczyć
ponownie zwiększając czas obliczeń. Jest to jednak bezzasadne, gdyż zwiększenie jakości
chwytów będzie nieznaczne.
49
7 Możliwości dalszych badań
Wraz z pojawianiem się nowych chwytaków w laboratoriach uniwersyteckich
pojawiają się nowe prace związane z problemem chwytania. Rozwijane są też nowe
algorytmy planowania, którego przykładem jest, wspomniane tu, planowanie z
wykorzystaniem symulowanego wyżarzania. Ciekawą możliwością kontynuacji pracy jest
sprawdzanie i porównywanie nowo powstających algorytmów planowania chwytów w celu
znalezienia własnego, bardziej wydajnego algorytmu. Możliwe jest też zbudowanie bazy
danych chwytów lub analiza i rozbudowa już dostępnych.
Największą satysfakcją z badań jest możliwość zobaczenia ich wyników w
rzeczywistości. Implementacja obliczonych w tej pracy chwytów w środowisku MRROC++
pozwoliłaby na weryfikację i ulepszanie symulacji, czyli weryfikację teorii w praktyce.
Poprawnie realizowane chwyty w praktyce byłyby inspiracją do dalszych badań.
7.1 Implementacja algorytmów chwytania w strukturze ramowej
MRROC++
Sterownik chwytaka będzie stworzony z wykorzystaniem programowej struktury
ramowej MRROC++ (Multi-Robot Research Oriented Controller). Sam system MRROC++
również został stworzony i jest rozwijany w Instytucie. Został on napisany w języku C++ i
działa pod nadzorem systemu czasu rzeczywistego QNX 6.4. Celem jego stworzenia było
wspomaganie sterowania i rozwoju systemów wielorobotowych. Algorytmy sterowania
chwytaka będą również implementowane w C++.
System MRROC++ jest wielowątkową, wielowarstwową i modularną strukturą
ramową napisaną w C++. Składa się ona z trzech warstw:
● Procesy interfejsu użytkownika (UI) – warstwa zależna od OS, nie zmieniana przez
programistę
● Procesy sterowania (MP, ECP) – warstwa zależna od zadania, tutaj programista
podpina własne procesy wykonujące pewne zadania dla określonego manipulatora
● Procesy sterowników (EDP, VSP) – warstwa zależna od sprzętu, nie zmieniana przez
programistę
Struktura ta jest łatwo rozszerzalna i wygodna w użyciu. Programista, który chce
użyć robota do wykonania nowego zadania nie musi martwić się o komunikację
międzyprocesową, komunikację z użytkownikiem czy szczegóły komunikacji ze sprzętem.
Po prostu używa istniejących procesów EDP/VSP oraz UI. Sam pisze jedynie kod procesu
ECP/MP. W systemie istnieją również zaimplementowane generatory ruchu, które mogą
automatycznie zajmować się o ustawieniem odpowiednich prędkości i przyspieszeń ruchu
robota.
Aby wykorzystać MRROC++ do sterowania ręką robota należy napisać własny
proces sterownika EDP i czujnika VSP, gdyż rozważana ręka wielopalczasta nie była jeszcze
nigdy używana w systemie. Następnie należy napisać własny proces sterowania ECP.
50
Rys. 7.1: Schemat struktury ramowej MRROC++ zaczerpnięty z [8] oraz
wyjaśnienia użytych skrótów.
7.2 Symulowane wyżarzanie
Symulowane wyżarzanie jest to algorytm optymalizacji globalnej użyty w
metodzie poszukiwania chwytu. Metoda ta jest zaimplementowana w GraspIt! dopiero od
końca kwietnia 2009, czyli od ukazania się wersji 2.0. Umożliwia znajdowanie chwytów nie
tylko siłowych, ale również, o ile pozwala na to konstrukcja reki, kształtowych. Istotną
zaletą jest możliwość używania jej z dokładnymi modelami obiektów, a nie tylko z
uproszczonymi przez prymitywy wersjami. Zadanym kryterium poszukiwań jest
minimalizacja wartości funkcji którą autor nazywa „energią”. Dodatkowym usprawnieniem
procesu szukania, zmniejszającym przestrzeń poszukiwań ręki, są wprowadzone chwyty
własne (eigengrasps). Chwyty własne są to podprzestrzenie wartości zmiennych
przegubowych zdefiniowane dla konkretnej ręki.
Na powierzchni ręki zdefiniowane są pożądane punkty jej kontaktu z obiektami.
„Energia” natomiast określona jest przez autora jako funkcja sumy kątów dla każdego
punktu kontaktu między normalną w punkcie a prostą łączącą ten punkt z najbliższym
punktem na obiekcie wraz z sumą odległości tych punktów od obiektów. Zmiennymi do
manipulacji dla algorytmu symulowanego wyżarzania są położenie, orientacja ręki oraz
wartości stopni swobody jej palców. Algorytm ma za zadanie zminimalizowanie „energii”
poprzez ulepszanie tych wartości.
Główną cechą, odróżniającą tę metodę od przybliżania prymitywami jest fakt, że
znalezione chwyty nie są równoważne z zaciśnięciem ręki na obiekcie. Są one, w pewnym
sensie, nie wykonane, ale można je łatwo wykonać uruchamiając funkcją automatycznego
zaciśnięcia ręki. Cecha ta również przyspiesza wyszukiwanie.
Jest to metoda ciągle rozwijana, ale powyższe cechy sugerują, że jest ona bardzo
wartościowa. Przydatne byłoby przeprowadzenie testów jej działania na różnych obiektach i
rękach w celu dokładnego porównania jej z metodą przybliżania prymitywami. Metodę
przedstawiono tu bardzo ogólnie, ale dokładniejsze jej zbadanie, przeanalizowanie i
51
ewentualne poprawki jej implementacji mogą znacznie przyczynić się do rozwoju
algorytmów chwytania.
12. Maskotka
Czas testu: 2min 55s
Liczba iteracji : 40000
Rys. 7.2: Przykładowy chwyt znaleziony przez metodę symulowanego wyżarzania
Wyników jakości chwytów obiektu maskotki z rys. 6.12 i rys. 7.2 nie da się
łatwo porównać ze względu na inne funkcje celu algorytmów. Może być to temat przyszłych
badań. Niemniej jednak można łatwo zauważyć, że czas potrzebny na znalezienie
„jakiegokolwiek” dającego się zrealizować chwytu jest dla symulowanego wyżarzania
znacznie krótszy.
52
8 Podsumowanie
Sztuczne ręce mogą być wykorzystywane do wielu typowych czynności
wykonywanych codziennie przez człowieka. Aby, jako części np. robotów usługowych,
potrafiły wyręczać ludzi zarówno w domu jak i w pracy, rozwiązany musi być problem
stabilnego chwytania różnych obiektów. W pracy tej przedstawiono jego teoretyczne
rozwiązanie dla prototypowej, trójpalczastej ręki. Wyniki łatwo mogą być zastosowane w
praktyce.
Cele pracy, czyli opracowanie trójwymiarowych modeli sztucznej, trójpalczastej
ręki, manipulatora IRp6 oraz modeli wybranych obiektów zostały zrealizowane. Wybrano 12
modeli przedmiotów z otoczenia ludzkiego. Modele sztucznej ręki i manipulatora Irp6 dla
symulatora GraspIt! utworzono za pomocą 3D Studio Max. Uproszczone modele obiektów
utworzono pisząc odpowiednie pliki w formacie Open Inventor. Zmodyfikowano algorytm
przybliżania prymitywami w taki sposób, aby mógł on działać z modelem prototypowej,
trójpalczastej ręki, która jest konstruowana na Politechnice Warszawskiej.
Przeprowadzono symulacje chwytania dla 10 z wybranych obiektów w
pozycjach leżących na stole oraz 2 w pozycjach trzymania w powietrzu przez manipulator
IRp6. Przykładowe widoki obliczonych chwytów zaprezentowano w pracy. Sceny świata
GraspIt! użyte w symulacjach oraz wyniki liczbowe, czyli pozycje i orientacje ręki, zostały
zapisane do plików. Sposób ich użycia został zasugerowany w pracy.
Na koniec omówiono dwa przykłady rozwinięcia tematu. Są to analiza nowych
algorytmów poszukiwania chwytów oraz możliwość praktycznego wykorzystania
uzyskanych wyników na platformie MRROC++ .
Wyniki symulacji są w większości zgodne z intuicją i mogą być
implementowane w środowisku rzeczywistym. Zastosowane rozwiązania są elastyczne i
mogą być zmieniane w miarę potrzeb. Symulacje mogą być łatwo przeprowadzone
ponownie dla nowy obiektów oraz rąk, w szczególności dla użytej ręki o zmienionych
parametrach konstrukcyjnych. Możliwość symulowania chwytów dla nowej ręki w
wirtualnym środowisku niesie wiele korzyści praktycznych, w szczególności oszczędność
czasu projektantów i programistów jej nowych zastosowań.
Nie można jednak zapominać, że użyty algorytm poszukiwania chwytów bazuje
na heurystyce i może być ciągle ulepszany. Pojawiają się też nowe algorytmy, które mogą
spowodować, że znalezione dotychczas chwyty będą zastąpione przez inne, bazujące na
innym sposobie myślenia, oraz, pod pewnym względem, lepsze. Chwyty znaleziono jedynie
dla pewnych uproszczeń rzeczywistych obiektów. Może się więc okazać, że zastosowanie
teorii w praktyce może być trudne i nie przyniesie pożądanych rezultatów.
53
9 Literatura
[1] P. K. Allen, H. I. Christensen, S. Knoop, A. T. Miller - „Automatic Grasp Planning
Using Shape Primitives”, IEEE International Conference on Robotics and Automation,
Proceedings, ICRA '03, Volume 2, 14-19 Sept. 2003, pp: 1824 - 1829.
[2] P. K. Allen, T. Jebara, A. T. Miller, R. Pelossof - „An SVM Learning Approach to
Robotic Grasping”, IEEE International Conference on Robotics and Automation,
Proceedings, ICRA '04, Volume 4, 26 Apr - 1 May 2004, pp: 3512 - 3518.
[3] P.K Allen, A. T. Miller - „Examples of 3D grasp quality computations”, IEEE
International Conference on Robotics and Automation, Proceedings, Volume 2, 10-15 May
1999, pp: 1240 – 1246.
[4] J. J. Craig - „Wprowadzenie do Robotyki: Mechanika i Sterowanie”, WNT 1995.
[5] M.R Cutkosky - „On grasp choice, grasp models, and the design of hands for
manufacturing tasks”, IEEE Transactions on Robotics and Automation, Volume 5, Issue 3,
June 1989, pp: 269 - 279.
[6] R. Dillmann, X. Zhixing, J.M. Zoellner - „Automatic optimal grasp planning based on
found contact points”, IEEE/ASME International Conference on Advanced Intelligent
Mechatronics, AIM '08, 2-5 July 2008, pp: 1053 - 1058.
[7] Eds. O. Khatib, B. Siciliano - „Springer Handbook of Robotics”, Springer 2008,
chapters: 15, 27, 28.
[8] T. Kornuta, W. Szynkiewicz, T. Winiarski, C. Zieliński - „MRROC++ Based System
Description ”, Report No. 06-9, Warsaw, June 2007.
[9] K. Mianowski - „Projekt sztucznej, trójpalczastej ręki”, Raport wewnętrzny, Politechnika
Warszawska 2009.
[10] A. T. Miller - „GraspIt!: A Versatile Simulator for Robotic Grasping”, Columbia
University 2001.
[11] P. Szufladowicz - „Wizualizacja pracy robotów w systemie MRROC++ ”, praca
inżynierska, Instytut Automaryki i Informatyki Stosowanej Politechniki Warszawskiej,
Warszawa 2008.
[12] G. Vassura - „Design of Humanoid Robot Hands: State of art and perspectives”, CIRA
Summer School, Bertinoro, Italy, 14-16 July 2003.
[13] Adelaide Pneumatic sales - Intelligent Peripherals for Robots- End of Arm Robotics
http://www.adelaidepneumatic.com.au/images/ipr/ipr_clip_image015.jpg
54
[14] Gadżetomania.pl - nowości technologiczne
http://gadzetomania.pl/2008/06/12/reka-robota-wyczuwa-ksztalty-zanim-ich-dotknie/
[15] Gizmag - Emerging Technology Magazine
http://www.gizmag.com/pictures/hero/8631_11010854946.jpg
[16] GraspIt! Developer Documentation, ver. 2.0 beta
[17] NASA - Robonaut
http://robonaut.jsc.nasa.gov/status/Mar_Robonaut_Status_files/image002.jpg
[18] Open Inventor: File Format
http://web.mit.edu/ivlib/www/iv/files.html
[19] Raza Sayed' Weblog - Techfest 2008 at IIT Mumbai
http://razasayed.wordpress.com/2008/02/03/techfest-2008-at-iit-mumbaidream-on/
[20] Shadow Robot Company - Air Muscle
http://www.shadowrobot.com/airmuscles/overview.shtml
10 Załączniki
•
Płyta CD zawierająca symulator GraspIt! Ver. 2.0 oraz jego rozszerzenia stworzone
w tej pracy na potrzeby symulacji:
◦
pliki obiektów
◦
pliki scen
◦
pliki sztucznej ręki oraz robota Irp6
◦
plik ze zmodyfikowanym kodem algorytmu przybliżania prymitywami
55

Podobne dokumenty