Framework for Digital Images Analysis
Wstęp
Do wykonywania powtarzalnych prac w dobrze ustukturyzowanym środowisku (np. na linii produkcyjnej) roboty nie muszą koniecznie być wyposażone w czujniki.
Natomiast inaczej sprawa wygląda w przypadku robotów usługowych, które mają realizować różnorodne zadania w dynamicznie zmieniającym się środowisku (jak np. mieszkanie).
Wtedy nieozdowne jest wyposarzenie ich w urządzenia, dzięki którym będą mogły rozpoznawać stan otoczenia, lokalizować ludzi czy też identyfikować obiekty.
Do najbardziej porządanych zmysłów należą wzrok oraz dotyk. Ciężko jest wyobrazić sobie jakiekolwiek, wykonywane przez człowieka złożone zadanie, przy którym nie korzysta on z jednego, bądź
obu z tych zmysłów.
Podczas prowadzanych przez wiele lat doświadczeń Zespół Sterowania Robotów i Systemów Rozpoznających stworzył wiele aplikacji, w których rozpoznawanie obrazów było
kluczowym zagadnieniem. Wystarczy wspomnieć grę w warcaby, selekcję przedmiotów poruszających się na taśmie produkcyjnej czy wreszcie układanie kostki Rubika.
Funkcje
Myślą przewodnią struktury ramowej FraDIA było stworzenie uniwersalnej platformy, standaryzującej pracę osób zajmujących się przetwarzaniem oraz rozpoznawaniem obrazów (ang. digital images processing) dla celów robotycznych oraz stanowiącej
bibliotekę algorytmów opracowanych przez członków zespołu. Dzięki prostemu dostępowi do gotowych rozwiązań ma ona również ułatwiać pracę osobom, które stawiają pierwsze kroki w robotyce.
Omawiana struktura ramowa została napisana w języku C++, a jej serce stanowią:
- open-source'owa biblioteka OpenCV, która oferuje wiele gotowych algorytmów, od prostych filtrów i operatorów morfologicznych po klasyfikatory hierarchiczne czy analizę ruchu. W bibliotece tej zaimplementowane zostało również szereg zagadnień związanych z uczeniem (ang. machine learning).
- biblioteka FLTK użyta do budowy interfejsu graficznego. Ważną rzeczą było opracowanie skalowalnego rozwiązania, które umożliwiałoby tworzenie, modyfikowanego przez użytkowników, interfejsu graficznego. Panele związane z poszczególnymi zadaniami są kompilowane do dynamicznych bibliotek, które są wczytywane podczas startu aplikacji. Dzięki temu rozwiązaniu użytkownik może w dowolnym momencie przełączyć sie na panel innego użytkownika oraz porównać jego rozwiązania z własnym.
W strukturze ramowej FraDIA obrazy, podobnie jak w OpenCV, przechowywane są w strukturze IplImage, wywiedzionej z Intelowskiej biblioteki
IPP.
Obecnie zespół dysponuje dwoma manipulatorami IRp-6, z których każdy ma do dyspozycji dwie kamery - po jednej umieszczonej nad robotem oraz po jednej zamontowanej w jego chwytaku.
Jednak często to właśnie sprzęt bywa wąskim gardłem, które zwalnia pracę poszczególnych członków zespołu. Dlatego w FraDIA istotny nacisk położono na możliwość akwizycji obrazów
z wielu źródeł, czyli:
- kamer,
- filmów avi,
- obrazów png.
Struktura ramowa oferuje możliwość przełączania się pomiędzy tymi źródłami w dowolnej chwili, jak również zapisywanie pojedynczych klatek (oraz całych filmów) otrzymanych z kamery do plików.
MRROC++
FraDIA może działać jako samodzielna aplikacja, umozliwiając testowanie zaimplementowanych algorytmów. Dzięki gotowym mechanizmom komunikacji może również działać jako specjalizowany proces wirtualnego czujnika VSP (ang. Virtual Sensor Process) stanowiąc element systemu
MRROC++. Dzięki temu stworzone algorytmy można wykorzystać automatycznie w trakcie sterowania robotami.
GPU
FraDIA umożliwia implementację algorytmów przetwarzania obrazów z wykorzystaniem GPU. Wykorzystanie GPU ma na celu przyspieszenie niektórych algorytmów rozpoznawania obrazów - w przypadku prostych operatorów nawet kilkunastokrotne. Jedno z przykładowych zadań, zaimplementowane przez Kamila Rockiego (opisane w jego
pracy magisterskiej), implementuje kilka algorytmów na GPU oraz umożliwia porównanie czasu ich działania z czasem działania rozwiązań wykorzystujących jedynie CPU. W zadaniu tym wykorzystana została biblioteka
CUDA stworzona przez firmę NVIDIA.
Dostęp
Biblioteka została umieszczona w
repozyturium SVN na naszym serwerze.
Zadania związane z strukturą ramową
FraDIA umieszczone są w
systemie zarządzania projektami naszego zespołu.
Konta zarówno w repozytorium, jak i w Bugzilli zintegrowane zostały z LDAP.
Uwaga: Nieprzeniesione zadania niektórych użytkowników nadal znajdują się na google code.
Instalacja
Opis instalacji na systemie Linux został umieszczony na stronie
Instalacja FraDIA
Problemy podczas uruchamiania oraz kompilacji znajdują się na stronie
FAQ
Dokumentacja
Dokumentacja kodu jest generowana automatycznie z kodu za pomocą programu
Doxygen.
|
[1]
|
T. Kornuta.
Fradia - zadaniowo zorientowana struktura ramowa do analizy i
przetwarzania obrazów.
Technical Report 08-08, IAiIS, Warszawa, Lipiec 2008. (.pdf )
|
--
TomaszKornuta - 14 Mar 2008