Rok akademicki 2012/2013 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Adam Antoniuk Wybór manewru antykolizyjnego metodą ARTMAP Opiekun pracy mgr inż. Zbigniew Szymański Ocena:...... Podpis Przewodniczącego Komisji Egzaminu Dyplomowego
Kierunek: Informatyka Specjalność: Inżynieria Systemów Informatycznych Data urodzenia: 1989.08.08 Data rozpoczęcia studiów: 2009.02.23 Życiorys Urodziłem się 8 sierpnia 1989 roku w Warszawie. W 2002 roku ukończyłem szkołę Podstawową i rozpocząłem naukę w Gimnazjum nr 27 im. Orląt Lwowskich, które skończyłem w 2005 roku. Po ukończeniu w 2008 roku CV Liceum Ogólnokształcącego im. Zbigniewa Herberta i zdaniu egzaminu maturalnego, rozpocząłem studia na Wydziale Zastosowań Informatyki i Matematyki Szkoły Głównej Gospodarstwa Wiejskiego, z których zrezygnowałem w 2009 roku, aby rozpocząć studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. W 2011 roku odbyłem praktyki w firmie farmaceutycznej POLFA WARSZAWA S.A. w dziale informatyki.... Podpis studenta EGZAMIN DYPLOMOWY Złożył egzamin dyplomowy w dniu...20 r z wynikiem... Ogólny wynik studiów:... Dodatkowe wnioski i uwagi Komisji:.........
STRESZCZENIE W pracy przedstawiono zastosowanie sieci neuronowej typu Fuzzy ARTMAP do wybierania manewrów antykolizyjnych w systemie unikania kolizji AURA (autonomiczny układ antykolizyjny przeznaczony dla bezzałogowych środków latających wykorzystujących aktywną metodę teledetekcji obiektów). System ten może zostać użyty w bezzałogowych środkach latających. Określony został sposób tworzenia zarówno danych uczących jak i danych testowych przy pomocy symulatora radiowego detektora przeszkód. Ponadto wykonano testowanie, za pomocą stworzonych do tego celu skryptów i funkcji, zaproponowanego algorytmu w środowisku MATLAB. Słowa kluczowe: sieć neuronowa, ARTMAP, Fuzzy ARTMAP, MATLAB, AURA, samolot, manewr antykolizyjny, bezzałogowy Collision avoidance using ARTMAP neural network SUMMARY This dissertation analyzes the Fuzzy ARTMAP neural network architecture employed to select from a number of evasive actions enabled by the AURA anti-collision system (an autonomous anti-collision system designed for unmanned aerial vehicles which use active remote sensing). This system may be utilized in unmanned aerial vehicles. Discussed is the method of creating both machine learning data and test data by using a radio wave obstacle detector simulator. Also, carried out is a test of the Fuzzy ARTMAP algorithm in the MATLAB environment with designed functions and scripts for this task. Keywords: neural network, ARTMAP, Fuzzy ARTMAP, MATLAB, AURA, plane, evasive actions, unmanned 2
Spis treści 1. WSTĘP...4 1.1 Opis problemu...4 1.2 Cel pracy...5 1.3 Podział pracy...5 2. ELEMENTY SYSTEMU ANTYKOLIZYJNEGO...6 2.1 Radarowy detektor przeszkód...6 2.2 Attitude and Heading Reference System...7 2.3 Mapa percepcyjna...8 3. SIEĆ NEURONOWA...10 2.1 Fuzzy ARTMAP...10 2.1.1 Sieć fuzzy ART...10 2.1.2 Ogólny opis sieci Fuzzy ARTMAP...11 2.1.3 Działanie Fuzzy ARTMAP...12 4. GENERACJA ZBIORÓW UCZĄCYCH...15 4.1 Środowisko testowe...15 4.2 Symulator Radaru Statku Powietrznego...16 4.3 Zbiory uczące...18 5. UCZENIE I TESTOWANIE...21 5.1 Generacja sieci ARTMAP...21 5.2 Testy...26 5.2.1 Ogólny opis procesu testowania...26 5.2.2 Testowanie...27 6. Zakończenie...32 DODATEK A OPIS FUNKCJI...34 3
1. WSTĘP 1.1 Opis problemu Samoloty bezzałogowe zdobywają coraz większą popularność, a ich liczba w przestrzeni ciągle rośnie. Są wykorzystywane do coraz to nowych zadań takich jak rozpoznawanie terenu, transport zaopatrzenia czy wykonywania pomiarów w warunkach trudnych dla człowieka. Ich główną zaletą jest minimalizacja wkładu człowieka w sterowanie (pilot znajduje się w bezpiecznym miejscu na ziemi i wydaje tylko polecenia) lub nawet możliwość zaprogramowania pojazdu do samodzielnego działania. Wysyłając jednak tak zaprogramowany pojazd, często nie posiadamy żadnych informacji na temat przeszkód jakie może napotkać. Z tego powodu niezbędne jest opracowanie autonomicznego systemu, który rozpoznawał by zagrożenie w trakcie misji i wybierał taką trasę by uniknąć wszelkich kolizji (zarówno z przeszkodami naturalnymi jak drzewa i góry, jaki i przeszkodami sztucznymi jak np. budynki i mosty). Jest to realizacja zasady Sense and Avoid będąca odpowiednikiem zasady See and Avoid stosowanej w przypadku jednostek latających pilotowanych przez ludzi [1]. Tego typu system opracowywany jest przez Instytut Lotnictwa i Politechnikę Warszawską. Projekt nosi nazwę AURA (autonomiczny układ antykolizyjny przeznaczony dla bezzałogowych środków latających wykorzystujący aktywną metodę teledetekcji obiektów) i składa się z trzech elementów: radiowego detektora przeszkód, radiowysokościomierza oraz modułu odpowiedzialnego za unikanie kolizji [2]. 4
Informacje dostarczane przez dwa pierwsze elementy służą do tworzenia modelu otoczenia i są wykorzystywane przez moduł odpowiedzialny za unikanie kolizji do określania manewrów przez odpowiedni algorytm. 1.2 Cel pracy Celem pracy jest zastosowanie sieci neuronowej typu Fuzyy ARTMAP do wyboru manewru antykolizyjnego. Wybrany algorytm zostanie zaimplementowany w środowisku MATLAB przez specjalnie do tego celu stworzone funkcje. Do generowania map percepcyjnych, które posłużą jako wektory wejściowe dla sieci, wykorzystany zostanie symulator radaru statku powietrznego [3]. Zbiory uczące dla algorytmu będą tworzone przez odpowiednią modyfikację modelu otoczenia uzyskanego z symulatora. 1.3 Podział pracy Praca została podzielona na 6 rozdziałów. Rozdział 2 zawiera podstawowe informacje o urządzeniach pokładowych, dzięki którym tworzony jest model otoczenia oraz podstawowy opis map percepcyjnych. Rozdział 3 opisuje sieci typu fuzzy ARTMAP, wykorzystaną do wyboru manewru antykolizyjnego. W rozdziale 4 przedstawiono środowisko programowe służące do testowania danych i algorytmu. Rozdział 5 zawiera opis procesu uczenia sieci neuronowej i jej testowania. W rozdziale 6 znajduje się podsumowanie testów i dokonanych obserwacji w czasie ich wykonywania. Dodatek A zawiera opis funkcji utworzonych w środowisku MATLAB wykorzystywanych do tworzenia danych testowych i testowania. 5
2. ELEMENTY SYSTEMU ANTYKOLIZYJNEGO W tym rozdziale opisane zostaną elementy systemu antykolizyjnego, które biorą udział w tworzeniu modelu otoczenia. Zawarty jest tu krótki opis radarowego detektora przeszkód (RDP) oraz Attitude and Heading Reference System. Oba te elementy dostarczają danych niezbędnych do tworzenia map percepcyjnych otoczenia. 2.1 Radarowy detektor przeszkód Radar pokładowy (RDP) wykrywający przeszkody jest głównym elementem systemu antykolizyjnego. Dostarcza on informacji o aktualnym otoczeniu pojazdu i przeszkodach: zarówno statycznych (takich jak linie wysokiego napięcia czy drzewa), jak i dynamicznych, znajdujących się w niedużej odległości. Detekcja odbywa się w przedniej półsferze, ograniczonej w poziomie kątem ±78 i w pionie od -12 do +36. Półsfera podzielona jest na odpowiednio 13 stref o szerokości 12 (Rys. 2.1) i 2 strefy o wysokości 24 (Rys. 2.2). Maksymalna odległość, z której możliwe jest wykrycie przeszkody, wynosi 200m, jednak faktyczny dystans, przy którym nastąpi rozpoznanie przeszkoda, zależy od jej kształtu oraz materiału, z którego jest wykonana [4]. Wykryty obiekt opisywany jest przez odległość i jego prędkość względem statku powietrznego, oraz numerem strefy, w której został wykryty. Niewykorzystana przestrzeń pełnej półsfery, odpowiadająca dwóm sektorom, została umiejscowiona na początku i końcu półsfery. Wykorzystywane są one do określania warunków pracy, oraz korekcji błędów, które wynikają z budowy radaru [5]. 6
Rys. 2.1. Wiązki radaru w płaszczyźnie poziomej[5]. Rys. 2.2. Wiązki radaru w płaszczyźnie poziomej[5]. 2.2 Attitude and Heading Reference System Urządzenie Attitude and Heading Reference System (AHRS) [6] dostarcza dane między innymi o położeniu samolotu (dzięki wbudowanemu układowi GPS), oraz skorygowanej wysokości bezwzględnej (dzięki czujnikowi ciśnieniowemu). Położenie jest określone w systemie WGS84, jednak przetwarzane są one do kartezjańskiego układu PUWG 1992 ponieważ w tej postaci można je wykorzystać w systemie antykolizyjnym gdyż łatwo jest określić położenie statku powietrznego na mapach percepcyjnych. Dodatkowo system ten dostarcza wielu informacji o samolocie, wszystkie dostarczane parametry zamieszczone zostały w tabeli poniżej (Tabela 2.1). 7
Tabela 2.1: Parametry dostarczane przez układ AHRS. Zmienna Opis Pozycja GPS Współrzędne geograficzne - dwie liczby, po jednej dla każdej współrzędnej. U,V,W Składowe prędkości liniowej. Ich rozdzielczość wynosi 0,01 [m/s]. ax, ay, az Składowe przyspieszenia liniowego. Ich rozdzielczość wynosi 0,01 [mg]. Φ,Θ,Ψ Kąty przechylenia (Φ), odchylenia (Θ) i kursu (Ψ). Ich rozdzielczość wynosi 0,01 [º]. P,Q, R Składowe prędkości kątowej: przechylenia (P), pochylenia (Q) i odchylenia (R). 0,01 [º/s] 2.3 Mapa percepcyjna Mapa percepcyjna jest to liczbowa reprezentacja otoczenia samolotu z oznaczonymi przeszkodami za pomocą wartości niezerowych. Tworzona jest na podstawie danych pochodzących z radarowego detektora przeszkód w czasie trwania lotu. Mapa percepcyjnej bazuje na idei siatki pewności (certainty grid) [7] i przechowuje informacje o prawdopodobieństwie wystąpienia przeszkody na podstawie informacji dostarczonych przez elementy systemu antykolizyjnego. Podczas lotu z RDP dane otrzymywane są w biegunowym układzie współrzędnych. Pozyskane w ten sposób informacje, po transformacji z układu biegunowego na układ współrzędnych kartezjański, wykorzystywane są do tworzenia dwuwymiarowego histogramu na siatce kartezjańskiej. Przy analizowaniu danych pochodzących z radaru, modyfikowana jest tylko jedna komórka mapy, co w efekcie daje rozkład prawdopodobieństwa. Ponieważ proces ten odbywa się podczas ciągłego ruchu pojazdu i przy dużej częstotliwości próbkowania, zarówno komórka, jak i jej sąsiedztwo doznają przyrostów. Takie wielokrotne skanowanie pozwala na osiągnięcie dużych wartości w histogramie, co umożliwia określenie faktycznego położenia przeszkód. Informacje pochodzące z AHRS pozwalają określić które komórki w mapie percepcyjnej należy modyfikować. W wyniku tego procesu tworzona jest mapa percepcyjna, będącą tablicą. W komórkach zawiera ona liczby odpowiadające gęstość prawdopodobieństwa wystąpienia przeszkody. Plik mapy percepcyjnej poza tablicą wartości posiada nagłówek (Rys. 2.3) zawierający: 8 ncols rozmiar mapy w poziomie (liczba komórek) nrows rozmiar mapy w pionie (liczba komórek) xllcorner współrzędna x dolnego lewego rogu mapy (w układzie PUWG1992 jest to współrzędna y)
yllcorner - współrzędna y dolnego lewego rogu mapy (w układzie PUWG1992 jest to współrzędna x) cellsize rozmiar pojedynczej komórki mapy w metrach Została też przedstawiona graficzna interpretacja mapy percepcyjnej, im ciemniejszy kolor tym większa szansa na wystąpienie przeszkody w danym sektorze (Rys. 2.4). Mapa taka stanowi podstawę dla algorytmu wybierającego manewr antykolizyjny. ncols 485 nrows 762 xllcorner 693632.37616363 yllcorner 193146.72739078 cellsize 20 NODATA_value -9999 0 0 0 0 0 0 0 0 0 0... 0 0 0.34 0.82 0.4 0 0 0 0 0... 0 0.33 1.0 0.7 0.02 0 0 0 0 0... 0 0.98 0.99 0.05 0 0 0 0 0 0... 0 0 0 0 0 0 0 0 0 0... Rys. 2.3. Przykładowy fragment mapy percepcyjnej. Rys. 2.4: Wizualizacja przykładowego fragmentu mapy percepcyjnej z Rys. 2.3. Im ciemniejszy kolor tym większa szansa wystąpienia przeszkody w tym sektorze. 9
3. SIEĆ NEURONOWA Rozdział ten zawiera opis ogólny sieci neuronowej fuzzy ARTMAP - zarówno jej zalety jak i budowę oraz sposób jej działania. Znajduje się tu również ogólny opis sieci ART z której zbudowana jest wykorzystywany algorytm. Sieć typu fuzzy ARTMAP została wykorzystana do wyboru manewru antykolizyjnego bezzałogowego statku kolizyjnego w poniższych rozdziałach. 2.1 Fuzzy ARTMAP 2.1.1 Sieć fuzzy ART Sieć fuzzy ART (Fuzzy Adaptive resonance theory) [8] jest typem sieci neuronowej wykorzystywanej do rozpoznawania wzorców i przewidywania zachowań. Wykorzystywane są najczęściej w budowie systemów eksperckich, elektronicznych systemach sterowania i eksploracji danych. Sieć ta w wektorze wejściowym przyjmuje wartości z zakresu 1 i 0. Rozpoznawanie i identyfikacja obiektówy odbywa się za pomocą działania góradół (top-down) i dół-góra (bottom-up). Przyjmuje się że góra-dół jest rodzajem pamięci, z którą porównywane są wartości wejściowe i w ten sposób określana jest kategoria do której należy przypisać wektor wejściowy. Jeśli wartość współczynnika dopasowania (vigilance parameter) zostanie przekroczona, to badany wektor nie zostaje przypisany danej kategorii. 10
2.1.2 Ogólny opis sieci Fuzzy ARTMAP W odróżnieniu od sieci ARTMAP, która była wykorzystywana do klasyfikacji wektorów wejściowych posiadających wartości binarne, sieć fuzzy ARTMAP [9] pozwala na wprowadzanie wartości z przedziału <0;1>. Efekt ten osiągnięto przez zamianę dwóch modułów ART 1 pierwotnej sieci ARTMAP na moduły logiki rozmytej (fuzzy ART). Tworzy to idealny układ do uczenia nadzorowanego. Do pierwszego modułu wprowadzane są dane wejściowe, do drugiego zaś wektor wyjściowy, jaki chcemy by zwrócił cały model po poprawnej klasyfikacji. Głównym celem uczenia jest maksymalne zwiększenia kompresji kodu przy jednoczesnej minimalizacji błędu predykcji. Cel ten realizowany jest głównie przez wykorzystanie procesu dopasowania, który w minimalny sposób modyfikuje wartość współczynnika dopasowania (vigilance paraneter) tak by poprawić błąd predykcji. Generowanie niepotrzebnych, nadmiarowych kategorii zostało wyeliminowane przez zastosowanie kodowania komplementarnego. Rys. 3.1: Architektura ARTMAP [9]. Sieć ARTMAP w czasie szybkiego uczenia tworzy inne macierze wagowe i kategorie dla tych samych zbiorów uczących, wprowadzanych w innej kolejności, mimo że całkowita dokładność predykcji każdej symulacji jest podobna. W celu eliminacji tego zjawiska wprowadzono strategię głosowania. Sieć uczy się tego samego zbioru danych kilkakrotnie, ładując kolejne wektory uczące w różnej kolejności. Klasyfikacja która została wybrana przez największą ilość symulacji jest wybierana jako końcowa predykcja dla zadanego zbioru danych. Zbiory dające błędną predykcję różnią się między przebiegami symulacji, ale dzięki wykorzystaniu strategii głosowania możliwa jest eliminacja znaczną część błędów. Metoda 11
sprawdza się również w sytuacjach, gdzie zbiory uczące są niewielkie, zakłócone lub niekompletne. Wielokrotne uczenie tych samych wektorów wejściowych, ale w innej kolejności znacznie zwiększa szansę poprawnej predykcji. Dodatkowo fuzzy ARTMAP w trakcie nauki przyjmuje wektory tak, jak by było to uczenie on-line. Więc po zakończeniu uczenia współczynniki sieci mogą być modyfikowane i nie są blokowane jak ma to miejsce w czasie uczenia off-line. Przez zastosowanie dwóch modułów typu ART (ARTa i ARTb) możliwa jest stabilna kategoryzacja wprowadzanych wektorów. Połączone są one przez asocjacyjną sieć uczącą, oraz wewnętrzny kontroler. Rysunek Rys. 3.1 przedstawia architekurę fuzzy ARTMAP z zaznaczonymi elementami składowymi (ARTa, ARTb i polem mapowym). Kontroler zaprojektowany jest tak. by utworzyć minimalną liczbę kategorii modułu ART a która zapewni osiągnięcie żądanej dokładności klasyfikacji, co więcej zapewnia on działanie w czasie rzeczywistym. Po kolejnych próbach w momencie udanej predykcja jest ona automatycznie łączona z odpowiednią kategorią w module ART a. Odbywa się to przez zwiększenie o jak najmniejszą wartości współczynnika dopasowania (ρa), która w module ARTb zapewni eliminację błędnej klasyfikacji. Współczynnik dopasowania określa minimalny stopień pokrycia jaki musi osiągnąć moduł ART dla zadanego wektora wejściowego przy porównywaniu go z aktualną kategorią, by został on do niej zaklasyfikowany. W przypadku niepoprawnej predykcji moduł ART b zwiększa wartość współczynnika dopasowania w module ART a tak, aby uruchomić proces dopasowywania. Efektem tego procesu jest wybranie nowej kategorii i grupy z wektora wejściowego (a) który pozwoli na lepszą predykcję sygnału nadzorującego (b).dzięki temu sieć typu fuzzy ARTMAP umożliwia poprawną klasyfikację zarówno sytuacji typowych, których wiele pojawiło się w trakcie uczenia, jak również sytuacji nietypowych, które znajdowały się w niewielkiej liczbie w zbiorach uczących [9]. Sieć ta została wybrana gdyż jest względnie prosta w użyciu, nie wymaga wstępnego określenia macierzy wagowej dla sieci oraz ilość parametrów, która ją określa jest stosunkowo niewielka. 2.1.3 Działanie Fuzzy ARTMAP Algorytm ten składa się z dwóch modułów typu Fuzzy ART (zwanych dalej ART a i ARTb). Każdy z modułów ART składa się z trzech pól - F0,F1 i F2. Moduły połączone są za pomocą pola mapowego (map field), który jest odpowiedzialny za łączenie kategorii z oczekiwaną wartością. Główne elementy systemu fuzzy ARTMAP został przedstawione na schemacie blokowym (Rys. 3.2). W przypadku gdy uzyskana predykcja nie zgadza się z tą pochodzącą z ARTb) pole mapowe zwiększa współczynnik dopasowania ART a) w celu uruchomienia procedury dopasowania (match tracking). 12
Rys. 3.2: Schemat blokowy fuzzy ARTMAP. W polu F0 odbywa się normalizacja sygnału który został podany na wejście. Polega to na zamianie wektora wejściowego w wektor dwa razy dłuższy, który jest uzupełniony o negację pierwotnego sygnału (3.1) i jest określana jako kodowanie komplementarne. Dzięki temu uzyskiwana jest stała norma wektora(3.2). a c =1 a (3.1) A= a, a c (3.2) Wyjściami dla pól F1 są odpowiednio wektory xa (3.3) i xb (3.4), natomiast dla pól F2 jest to ya (3.5) i yb (3.6). Przy czym M i N to wielkości wektorów wejściowego do każdego z modułów przed normalizacją, wja (3.7) i wib (3.8) natomiast to macierze wagowe ARTa i ARTb, powiązane z polem F2. x a = x1a, x a2... x a2m (3.3) x b= x b1, xb2... x b2n (3.4) a a a a y = y 1, y 2... y 2M (3.5) y b= y b1, y b2... y b2n (3.6) a a a a w j = w j1, w j2... w j2m (3.7) w bi = w bi1, wbi2... wbi2n (3.8) Pole mapowe (zwane również Fab) posiada również swoją macierz wagową wkab (3.9), która łączy pole F2 modułu ARTa. Wyjściowym natomiast, dla tej części sieci jest wektor xab (3.10). Pole mapowe zostaje pobudzone do działania w momencie, gdy jedna z kategorii ARTa lub ARTb staje się aktywna. Jednoczesna aktywacja kategorii w obu modułach powoduje pobudzenie pola Fab tylko i wyłącznie w sytuacji, gdy zarówno ART a jak i ARTb wybrało tę samą kategorię. Procedura dopasowania jest uruchamiana w sytuacji, gdy pole mapowe zwróci wartość 0. Inne wartości zwracana przez to pole są zależne od tego które moduły są aktywne i mogą przyjmować: 13 yb, gdy tylko pole F2 w ARTb jest aktywne. 0, gdy pola F2 w obu modułach są nieaktywne.
wkab, gdy tylko pole F2 w ARTa jest aktywne. yb kab, gdy oba pola F2 obu modułach są aktywne.aa ab ab ab ab w k = w k1, w k2... w k2n ab ab x ab= x ab 1, x 2... x N (3.9) (3.10) Procedura dopasowania wymusza na module ARTa poszukiwania lepszej kategorii niż aktualnie wybrana. Przy każdym nowym zbiorze danych wartość parametru ρa przyjmuje wartość początkową, która w przypadku uruchomienia procedury dopasowania jest modyfikowana tak by nieznacznie przewyższać pewną wartość (3.11). W momencie, gdy wyjście pola F1 w ARTa spełnia nierówność xa = A wja < ρa A (gdzie j to indeks kategorii aktywnej w polu F2 tego modułu) powoduje wybranie innej kategorii zapewniającej lepsze dopasowanie i która da lepsze dopasowanie do aktywnej kategorii w module ARTb(3.12)(3.13). Uczenie pola mapowego odbywa się przez dopasowywanie wag pomiędzy polem F2 modułu ARTa i Fab, tak aby jak najlepiej połączyć aktywne kategorie w obu modułach. Podczas szybkiego uczenia które zostało wykorzystane w tej pracy, w momencie, gdy kategoria aktywna w module ARTa poprawnie przewidują tę aktywną w module ART b utworzone jest stałe połączenie między nimi, a wartość wagowa w polu mapowym dla kategorii z tych modułów zostaje przypisana na stałe(3.14). A w aj A 1 x a = A w aj ρa A x ab = yb w abj ρab y b ab w ji 0 =1 14 (3.11) (3.12) (3.13) (3.14)
4. GENERACJA ZBIORÓW UCZĄCYCH Rozdział ten zawiera opis tworzenia zbiorów uczących dla sieci neuronowej. Przedstawia informacja o przyjętych założeniach, takich jak maksymalne odchylenia i szybkość skrętu. Zawarte są również opisy wykorzystanego środowiska programowego, oraz wykorzystanej implementacji algorytmu fuzzy ARTMAP do testowania manewrów antykolizyjnych. 4.1 Środowisko testowe Uczenie i testowanie zostało przeprowadzone w programie MATLAB R2011a. Środowisko to zostało wybrane, ponieważ w łatwy sposób umożliwia operację na danych macierzowych oraz umożliwia ich wizualizację. dane które stanowią wektory wejściowe dla algorytmu wyboru antykolizyjnego mają postać macierzową, jak również sam algorytm (sieci neuronowe) jest typu macierzowego. Wykorzystana została implementacja sieci neuronowej Fuzzy ARTMAP autorstwa Aarona Garetta [10]. Dostarcza ona funkcje (Tabela 5.1) pozwalające między innymi na tworzenie i uczenie sieci oraz klasyfikację wektorów wejściowych. Pełen opis funkcji można znaleźć w rozdziale 5. Możliwy jest dostęp do parametrów utworzonej sieci, oraz modyfikowanie części z nich w zależności od potrzeb. 15
4.2 Symulator Radaru Statku Powietrznego Do tworzenia map percepcyjnych został wykorzystany symulator radaru statku powietrznego autorstwa Michała Pawłowskiego [3]. Symulator ten służy do symulacji RDP, a dane wejściowe zawarte są w następujących plikach: 1. Plik trajektorii - umożliwia wprowadzanie trajektorii lotu, określając między innymi położenie liniowe (przesunięcie), wysokość, aktualne przechylenie, odchylenie i pochylenia statku powietrznego w każdym momencie symulacji, fragment przykładowego pliku trajektorii przedstawia Rys. 4.1. 2. Plik z opisem przeszkód terenowych - plik zawiera przeszkody określając ich położenie oraz wysokość. Wartości zawarte w pliku określają wysokość przeszkody, wartość 0 oznacz brak przeszkody w danym sektorze. Przykładowy fragment pliku trajektorii wraz z nagłówkiem przedstawiono na Rys. 4.2. Plik ten zawiera w nagłówku następujące informacje: ncols rozmiar mapy w poziomie (liczba komórek) nrows rozmiar mapy w pionie (liczba komórek) xllcorner współrzędna x dolnego lewego rogu mapy (w układzie PUWG1992 jest to współrzędna y) yllcorner - współrzędna y dolnego lewego rogu mapy (w układzie PUWG1992 jest to współrzędna x) cellsize rozmiar pojedynczej komórki mapy w metrach "t","dh","dv","dl","t","u","v","w","p","q","r","fi","tetea","psi","x1","y1","z1" 0,1.84,0,0,793.956,49.9283,0,2.67677,0,0,0,0,0,0,0,0,-200 0.1,1.8399,-0.5193,3.7723,793.954,49.9283,0.02245,2.67668,5.2951,-0.00162,-0.25148,0,0,0,5,-0,-200 0.2,1.8399,-0.534,3.6417,793.966,49.92827,0.09543,2.67564,7.89398,-0.00833,-0.5711,0,0,0,10,-0,-200 0.3,1.8403,-0.5459,3.5167,794.081,49.92809,0.21364,2.67241,9.00621,-0.01689,-0.83051,0,0,0,15,0,-200 0.4,1.8416,-0.5532,3.3978,794.406,49.9276,0.3646,2.66646,9.31431,-0.02212,-0.95267,0,0,-0.5,20,-0.04,-200 0.5,1.844,-0.5547,3.2853,794.995,49.9267,0.53207,2.6581,9.20954,-0.02062,-0.89975,0,0,-1.5,25,-0.17,-200 0.6,1.8472,-0.5498,3.1789,795.801,49.9255,0.69883,2.64815,8.91941,-0.01132,-0.66482,0,0,-2.5,30,-0.39,-200 0.7,1.8507,-0.5387,3.0783,796.677,49.92426,0.84892,2.63762,8.57654,0.00532,-0.265,0,0,-4,34.99,-0.74,-200 0.8,1.8537,-0.522,2.9826,797.418,49.92339,0.9693,2.62748,8.25621,0.02836,0.26497,0,0,-5.5,39.97,-1.22,-199.99 0.9,1.8554,-0.5009,2.8908,797.814,49.92329,1.05092,2.61851,7.9972,0.05707,0.87923,0,0,-7,44.93,-1.83,-199.99 1,1.8551,-0.477,2.8017,797.713,49.92424,1.08929,2.61135,7.81396,0.09112,1.52707,0,0,-8.5,49.88,-2.57,-199.99 1.1,1.8523,-0.4518,2.7144,797.053,49.92631,1.0845,2.60647,7.70442,0.13045,2.15868,0,0,-10,54.8,-3.44,-199.98 1.2,1.8468,-0.4271,2.6277,795.867,49.92941,1.04076,2.60423,7.65553,0.17497,2.73011,0,0,-11.5,59.7,-4.44,-199.97 1.3,1.8386,-0.4042,2.5409,794.262,49.93326,0.9656,2.60484,7.64765,0.22424,3.20701,0,0,-12.5,64.58,-5.52,-199.96 1.4,1.828,-0.3842,2.4534,792.381,49.93755,0.86883,2.60833,7.65813,0.27739,3.56711,0,0,-13.5,69.44,-6.69,-199.95 1.5,1.8154,-0.3679,2.3649,790.358,49.942,0.76139,2.61459,7.66444,0.33313,3.80117,0,0,-14.5,74.28,-7.94,-199.93 1.6,1.8013,-0.3556,2.2754,788.297,49.9464,0.65414,2.62325,7.64656,0.39003,3.9126,0,0,-15.5,79.1,-9.28,-199.92 1.7,1.7862,-0.3472,2.185,786.249,49.95069,0.55687,2.63379,7.58885,0.44668,3.91597,0,0,-16.5,83.89,-10.7,-199.89 1.8,1.7708,-0.3422,2.0943,784.226,49.95488,0.47741,2.64558,7.48117,0.502,3.83442,0,0,-17.5,88.66,-12.2,-199.87 1.9,1.7556,-0.34,2.0038,782.21,49.95907,0.42109,2.65793,7.31941,0.55532,3.69664,0,0,-18.5,93.4,-13.79,-199.84 2,1.7408,-0.3397,1.914,780.17,49.96335,0.39046,2.67019,7.10527,0.60647,3.53353,0,0,-19.5,98.11,-15.46,-199.81 Rys. 4.1: Fragment przykładowej, dwu sekundowej trajektorii. 16
ncols 334 nrows 504 xllcorner 694124 yllcorner 197365 cellsize 20 NODATA_value -9999...0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 250 250 250 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 250 250 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 250 250 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 250 250 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 250 250 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 250 250 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0... Rys. 4.2. Fragment pliku z przeszkodami Symulator tworzy plik z wykrytymi obiektami detection_results.dat, który zawiera informacje o przeszkodach wykrytych w poszczególnych sektorach RDP w formie jak Rys. 4.3, który przedstawia przykładowy plik z wykrytymi obiektami. Wartości zawarte w tym pliku oznaczają jaką część poszczególnych sektorów RDP zajmują przeszkody w danej chwili symulacji. Tworzona jest również mapa percepcyjna perception_map.txt, powstałą przy zadanej trajektorii i przeszkodach. Mapa ta jest podstawą do tworzenia wektorów wejściowych dla algorytmu Fuzzy ARTMAP odpowiedzialnego za wybór manewru antykolizyjnego. 17
0.1,698637,200000,5,0,0,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0, (10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.2,698642,200000,5,0,0,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0, (10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.3,698647,200000,5,0,0,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.50,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.4,698652,200000,5,0,-0.5,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0,(4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 1.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.5,698657,200000,5,0,-1.5,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0,(4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 1.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.6,698662,200000,5,0,-2.5,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0,(4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.50,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.7,698667,199999,5,0,-4,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.50,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.8,698672,199999,5,0,-5.5,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0,(4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.50,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 0.9,698677,199998,5,0,-7,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.0,(5 1) 0.0,(6 0) 0.0,(6 1) 0.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0, (10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 1,698682,199997,5,0,-8.5,0,(0 0) 0.0,(0 1) 0.0,(1 0) 0.0,(1 1) 0.0,(2 0) 0.0,(2 1) 0.0,(3 0) 0.0,(3 1) 0.0,(4 0) 0.0, (4 1) 0.0,(5 0) 0.25,(5 1) 0.50,(6 0) 0.0,(6 1) 0.0,(7 0) 0.0,(7 1) 0.0,(8 0) 0.0,(8 1) 0.0,(9 0) 0.0,(9 1) 0.0,(10 0) 0.0,(10 1) 0.0,(11 0) 0.0,(11 1) 0.0,(12 0) 0.0,(12 1) 0.0 Rys. 4.3: Fragment pliku z wykrytymi obiektami. 4.3 Zbiory uczące Po utworzeniu pliku trajektorii lotu i mapy przeszkód, uruchamiany zostaje symulator. Następnie po zakończeniu symulacji tworzone są wszystkie pliki wyjściowe, między innymi aktualna mapa percepcyjna. Przyjęto, że rozdzielczość siatki (parametr cellsize mapy percepcyjnej wynosi 20) to 20 m, ponieważ większa gęstość spowodowała by niepotrzebny wzrost zajętości pamięci i obciążenie procesora systemu antykolizyjnego, natomiast rzadsza - utratę informacji [4]. Rys. 4.4 przedstawia ogólny schemat blokowy systemu antykolizyjnego. Po określeniu położenia samolotu na podstawie współrzędnych x i y, można dokonać wyboru interesującego nas fragmentu mapy percepcyjnej. Fragment ten jest prostokątem o wymiarach 20x30 komórek (czyli 400x600 m) o środku w sektorze w którym znajduje się samolot. 18
Rys. 4.4: Ogólny schemat systemu antykolizyjnego AURA [4]. Następnie uzyskane fragment mapy percepcyjnej w postaci macierzowej, zamieniany jest na 600 elementowy wektor. Dodając do niego informację o aktualnym kierunku samolotu (stopniu skrętu w stopniach) otrzymujemy wektor, który będzie stanowił wejście dla sieci neuronowej. Sygnał nadzorujący dla zadanej mapy jest obliczany na podstawie pliku trajektorii - jest to różnica między aktualnym kursem, a kursem którym podążał samolot krok wcześniej. Sposób zamiany mapy percepcyjnej na wektor przedstawiono na rysunku Rys. 4.5. Natomiast na Rys. 4.6 przedstawiono schemat blokowy całego procesu tworzenia zbioru uczącego, łącznie z krokiem kodowania komplementarnego. W bloku Położenie i kierunek z pliku trajektorii wydobywana jest informacja o aktualnym położeniu i kursie oraz o ile wynosi wartość zmiany kursu. Sygnał nadzorujący jest obliczany na podstawie aktualnie analizowanego wpisu w trajektorii z jego poprzednikiem. Blok Wybór fragmentu na podstawie położenia statku powietrznego wybiera fragment mapy percepcyjnej do dalszego przetwarzania. Fragment ten zamieniany jest na wektor i rozszerzany o aktualny kurs, odbywa się to w bloku Wektor kolumnowy + kurs. Po kodowaniu komplementarnym wektor może być podany jako wejście sieci fuzzy ARTMAP. 19
Rys. 4.5: Zamiana fragmentu mapy percepcyjnej na wektor kolumnowy. Rys. 4.6: Schemat blokowy tworzenia zbioru uczącego. Sygnałem nadzorującym, wykorzystywanym do uczenia sieci jest pojedyncza liczba określająca o ile stopni należy zmienić kurs statku powietrznego. Ponieważ istnieje obecnie wiele różnych typów założono, że istnieje 7 możliwych rodzajów zmiany kursu (7 klas dla sieci ARTMAP), które zamieszczono w tabeli poniżej (Tabela 4.1). 20
Tabela 4.1: Przyjęte możliwości zmiany kursu oraz wartości ich promienia skrętu. Opis Przyjęta wartość Promień skrętu Szybki skręt w lewo -1.5 /0.1s -190.99m Normalny skręt w lewo -1.0 /0.1s -286.48m Wolny skręt w lewo -0.5 /0.1s -572.96m Brak konieczności skrętu 0.0 /0.1s 0m Wolny skręt w prawo 0.5 /0.1s 572.96m Normalny skręt w prawo 1.0 /0.1s 286.48m Szybki skręt w prawo 1.5 /0.1s 190.99m Możliwość uniknięcia przeszkody za pomocą zwiększenia wysokości nie została wzięta pod uwagę. Czas 4 sekund jakie mamy do dyspozycji przy przyjętej prędkości 50m/s i obecnym zasięgu radaru (200m), od momentu wykrycia przeszkody do momentu zderzenia, jest zbyt krótki by możliwe było uzyskanie wystarczającej siły nośnej potrzebnej do wyminąć przeszkody górą. 21
5. UCZENIE I TESTOWANIE Rozdział ten zawiera informację o procesie uczenia sieci neuronowej, funkcjach do tego wykorzystywanych, typie i liczbie wektorów wejściowych, jak również o sposobie przeprowadzania testów, na nauczonej już sieci ARTMAP przez przygotowane do tego celu zbiory uczące. 5.1 Generacja sieci ARTMAP Sieć fuzzy ARTMAP została utworzona za pomocą funkcji ARTMAP_Create_Network i nauczona za pomocą funkcji ARTMAP_Learn które udostępnia pakiet implementujący sieć typu fuzzy ARTMAP w środowisku MATLAB. Autorem tego pakietu jest Aaron Garett [10], a pełen opis funkcji wchodzących w skład tego pakietu wykorzystywanych do obsługi sieci ARTMAP znajduje się w tabeli. Tabela 5.1.Pełen zestaw dostępnych funkcji umożliwiających obsługę sieci fuzzy ARTMAP z pakietu implementującego sieć Fuzzy ARTMAP w środowisku MATLAB [10]. Nazwa funkcji Parametry Opis ARTMAP_Add_New_Category macierz wag sieci; mapa kategorii Dodaje nową kategorię do sieci ARTMAP 22
ARTMAP_Classify sieć ARTMAP; wektor wejściowy ARTMAP_Create_Network liczba zmiennych w wektorze Tworzy sieć ARTMAP wejściowym; liczba klas ARTMAP_Learn sieć ARTMAP; wektor wejściowy; wektor nadzorujący Uczy sieć ARTMAP wskazanymi danymi. ART_Activate_Categories wektor wejściowy; macierz wag; współczynnik funkcji aktywacji Wykorzystywana przez wektor wejściowy; wektor wag danej kategorii Wykorzystywana przez ART_Calculate_Match Używane do klasyfikacji danych wejściowych przez nauczoną sieć ARTMAP ARTMAP_Classify i ARTMAP_Learn. Aktywuje kategorie sieci dla zadanego wektora wejściowego. ARTMAP_Classify i ARTMAP_Learn.Określ a dopasowanie zadanego wektora wejściowego i kategorii. ART_Complement_Code wektor wejściowy Uzupełnienie zadanego wejścia, gdzie uzupełnienem x jest 1-x. ART_Update_Weights wektor wejściowy; macierz wag; numer kategorii; prędkość uczenia Wykorzystywane przez ARTMAP_Learn. Aktualizuje macierz wagową sieci. Zbiory testowe tworzone były średnio kilka razy w ciągu sekundy trwania symulacji. Każda utworzona mapa percepcyjna zawiera w swojej nazwie indeks czasowy, w którym została utworzona, tak aby dało się powiązać położenie samolotu (z pliku trajektorii) z daną mapą percepcyjną. Format nazewnictwa tworzonych map percepcyjnych przedstawiono Rys. 5.1. Rys. 5.1: Format nazewnictwa map percepcyjnych (np. dla mapy wygenerowanej po 1.2s symulacji będzie to 1.2_perception_map.txt). Posiadając katalog z utworzonymi mapami jaki i plikiem trajektorii (trajectory.dat), możliwe jest rozpoczęcie tworzenia danych testowych. Do tego celu została przygotowana funkcja load_maps_from_dir.m, która pobiera wszystkie mapy percepcyjne wskazanego katalogu, tworzy z nich wektory uczące i sygnały nadzorujące, oraz dodaje je do podanych jako 23
parametry zmiennych. W opisany powyżej sposób zostało wygenerowanych ponad 500 zbiorów uczących pochodzących z trzech symulowanych przelotów w których narzucono z góry sposób wymijania przeszkody. Pierwsza symulacja którą widzimy na Rys. 5.3, przedstawia sytuację gdzie przeszkody nie powodują konieczności zmiany trajektorii lotu. Konieczność skrętu w lewo, po wykryciu przeszkody przed samolotem w czasie lotu prosto, przedstawia Rys. 5.4. Rys. 5.6 przedstawia sytuacje, gdy podczas lotu prosto wykryta przeszkoda zmusza pojazd do skrętu w prawo w celu jej wyminięcia. Algorytm uczenia został przedstawiony w formie pseudokodu i znajduje się w listingu poniżej (Listing 5.1). Pierwsza linia odpowiada za utworzenie sieci fuzzy ARTMAP A, następnie ustalane są parametry tej sieci. Linia czwarta przypisuje do zmiennej I tablice danych wejściowych, natomiast w kolejnej linii następuje kodowanie komplementarne zmiennej I. W linii szóstej następuje przypisanie wektora uczącego do zmiennej s. W linii ósmej rozpoczyna się pętla która w kolejnych przebiegach uczy sieć A kolejnymi danymi ze zmiennej S i cci dopóki nie zostaną nauczone wszystkie dostępne dane znajdujące się w zmiennej cci. Listing 5.1: Sposób uczenia sieci neuronowej wskazanymi danymi. 1 2 3 4 5 6 7 8 9 10 11 12 create ARTMAP A; A.vigilance = 0.8; A.maxNumCategories = 1000; I = input data matrix; cci = complemented code I; S = supervisor vector; j=0; while j< size(cci) { learn A with cci(j) supervised by S(j); j=j+1; } Zaznaczyć należy, że w poniższych wykresach, opisy na osiach są to numery komórek we fragmencie mapy percepcyjnej (numer wyciętego sektoru mapy percepcyjnej od początku danej symulacji, na Rys. 5.5 możemy zobaczyć przykład mapy percepcyjną z zaznaczonym fragmentem w którego sąsiedztwie znajdował się samolot w trakcie symulacji), której rozdzielczość jest równa wartości parametru cellsize umieszczonemu w nagłówku mapy percepcyjnej i w tym przypadku wynosi 20m. Położenie samolotu zostało oznaczone różowymi punktami, w miejscach, w których z aktualnej mapy percepcyjnej utworzono zbiór uczący. Prawdopodobieństwo wystąpienia przeszkody w poniższych mapach percepcyjnych zostało określone za pomocą odpowiedniej skali kolorów (Rys. 5.2), kolory cieplejsze oznaczają większe prawdopodobieństwo obecności przeszkody w danym sektorze, zimne natomiast oznaczają niewielką szansę wystąpienia przeszkody. Rys. 5.2: Skala odpowiadająca prawdopodobieństwu wystąpienia przeszkody. Wszystkie wykresy w tym i następnych rozdziałach zostały sporządzone w tej skali. 24
Rys. 5.3: Fragment przelotu samolotu z przeszkodami, w którym nie jest wymagane unikanie przeszkody. Fragment ten w rzeczywistości posiada wymiary 400 na 1400 metrów. Rys. 5.4: Fragment przelotu samolotu wymagający skrętu w lewo celem uniknięcia przeszkody. Fragment ten w rzeczywistości posiada wymiary 600 na 400 metrów. 25
Rys. 5.5: Przykład mapy percepcyjnej z zaznaczonym fragmentem, na podstawie której utworzono wykresy z zaznaczonym kolorami prawdopodobieństwem i położeniem samolotu. (Z tego fragmentu utworzono wykres przedstawiony na Rys. 5.4) Rys. 5.6: Fragment przelotu samolotu wymagający skrętu w prawo celem uniknięcia przeszkody. Fragment ten w rzeczywistości posiada wymiary 840 na 660 metrów. 26
Kolejnym krokiem było utworzenie sieci ARTMAP, która przyjmuje wektory wejściowe posiadające 1202 wartości po normalizacji wektora uzyskanego z mapy percepcyjnej i pozwala na utworzenie 7 klas. Przeprowadzono uczenie sieci utworzonymi danymi testowymi. Użyto 100 przebiegów (100 epoch) i doprowadziło to do utworzenia 134 kategorii, pełen zestaw parametrów utworzonej sieci przed i po uczeniu znaleźć można w tabeli poniżej (Tabela 5.3). (Powyższe operacje zostały wykonane przy pomocy funkcji z Tabela 5.1). Natomiast opis danych które zostały wykorzystane do uczenia znajduje się w Tabela 5.2. Tabela 5.2: Nazwy katalogów wraz z opisem w których znajdują się mapy percepcyjne wykorzystane do uczenia sieci fuzzy ARTMAP. Katalog z mapami Opis u1_mapy_percepcyjne Katalog zawiera mapy percepcyjne utworzone w czasie symulacji nie wymagającej wykonywania manewrów antykolizyjnych. u2_mapy_percepcyjne Katalog zawiera mapy percepcyjne utworzone w czasie symulacji unikania przeszkody przez skręt w lewo. u3_mapy_percepcyjne Katalog zawiera mapy percepcyjne utworzone w czasie symulacji unikania przeszkody przez skręt w prawo. Tabela 5.3: Wartości parametrów sieci fuzzy ARTMAP utworzonej w MATLAB'ie przed i po uczeniu. 27 Parametr Wartość przed uczeniem Wartość po uczeniu numfeatures 1202 1202 numcategories 0 134 maxnumcategories 1000 1000 numclasses 7 7 weight [] macierz 1202x134, z wartościami od -39 do 1. mapfield [] macierz 1x134, z wartościami od -1.5 do 1.5. vigilance 0.8 0.8 bias 1.000e-06 1.000e-06 numepochs 100 100 learningrate 1 1
5.2 Testy 5.2.1 Ogólny opis procesu testowania a. b. c. d. e. f. g. Algorytm testowania składa się z następujących kroków: Pobranie mapy percepcyjnej. Utworzenie wektora wejściowego dla nauczonej sieci ARTMAP. Podanie wektora na wejście sieci neuronowej. Określenie zmiany kursu przez algorytm, którym powinien się poruszać samolot (czyli o ile trzeba zmienić aktualny kurs jakim się porusza). Na podstawie nowego kursu obliczane jest położenia w którym powinien znajdować się statek powietrzny. Wprowadzenie nowego położenia i kursu do pliku trajektorii. W momencie osiągnięcia określonego w podpunkcie f) położenie ponowne rozpoczęcie testowania od podpunktu a dla aktualnej mapy percepcyjnej). 5.2.2 Testowanie Do testowania utworzono kilka funkcji: classify_pm - jest wykorzystywana do klasyfikacji zadanej mapy percepcyjnej przez wskazaną sieć ARTMAP. Zwracana wartość określa o ile stopni należy zmienić aktualny kurs samolotu. trajectory_init - tworzy plik trajektorii (jeśli nie istnieje), lub usuwa zawartość już istniejącego, następnie wstawia linię z opisami kolumn które zawiera plik trajektorii i wprowadza pierwszą linię trajektorii o zadanych parametrach z indeksem czasowym 0.0. Simple_add_to_trajectory wykorzystywana jest do tworzenia wpisów w pliku trajektorii z możliwością określenia prędkości statku powietrznego, oraz jaki czas powinien upłynąć od poprzedniego położenia samolotu do położenia w aktualnie tworzonym wpisie w trajektorii. Pełen opis dostępnych funkcji znajduje się w załączniku A (DODATEK A OPIS FUNKCJI). Przy próbie wyminięcia przeszkody po nauczeniu fuzzy ARTMAP niecałymi 200 zbiorami uczącymi dochodziło do kolizji z przeszkodą w trakcie symulacji, jednak po nauczeniu sieci zbiorami zawierającymi ponad 500 przypadków opisanymi w 5.1 Generacja sieci ARTMAP, osiągnięty został zadowalający wynik działania algorytmu. Odpytywanie algorytmu (pobieranie kolejnych map percepcyjnych i tworzenie z nich wektorów wejściowych) odbywało się co 0.2s. Określanie położenia i kierunku samolotu odbywało się co 0.1s, czyli wprowadzano dwie linie do pliku trajektorii z nowymi parametrami między przekazaniami kolejnych map percepcyjnych do klasyfikacji. Dane nowych wpisów były zgodne z ostatnią zwróconą wartością z sieci ARTMAP. 28
Na Rys. 5.8 została wykryta możliwa przeszkoda, ale wartość prawdopodobieństwa odpowiadająca jej wystąpieniu jest na tyle mała, że dopiero po przelocie 20m zostaje podjęta decyzja o rozpoczęciu wolnego skrętu w lewo. W momencie gdy samolot przemieszcza się do przodu wiadomo już, w którym sektorze znajduje się przeszkoda i zostaje podjęta decyzja o zwiększeniu prędkości skręcania do normalnej (prędkości skręcania zostały przedstawione w Tabela 4.1) co widać na Rys. 5.9. W ciągu następnej sekundy symulacji kontynuowany jest skręt z normalną prędkością pozwalający na bezpieczne uniknięcie kolizji, sytuacje tą przedstawia Rys. 5.10. Na Rys. 5.11, widać że samolot znajduje się na kursie który zapewnia bezpieczne wyminięcie przeszkody, więc nie zostaje podjęta decyzja o dalszej zmianie kursu. Po 4.6 sekundach symulacji widać, że nie doszło do sytuacji w której statek znalazł by się niebezpiecznie blisko przeszkody, co przedstawia Rys. 5.12. Dalsza zmiana kursu nie jest zalecana przez sieć fuzzy ARTMAP, ponieważ pojazd nie znajduje się w dalszym ciągu na kursie kolizyjnym. Pełna lista decyzji jakie podjęła sieć neuronowa podczas każdego zapytania znajduje się w tabeli poniżej (Tabela 5.4). Tabela 5.4: Przedstawiono tu wszystkie decyzje, o ile stopni nalezy zmienić aktualny kurs, jakie podjęła sieć Fuzzy ARTMAP w trakcie trwania symulacji - dla map percepcyjnych utworzonych w momencie 't' trwania symulacji. 't' [s] Decyzja sieci Fuzzy ARTMAP 29 0.2 0º 0.4-1.0º 0.6-1.0º 0.8-1.0º 1.0-1.0º 1.2-1.0º 1.4-1.0º 1.6-1.0º 1.8-0.5º 2.0-0.5º 2.2-1.0º 2.4-1.0º 2.6-0.5º 2.8-0.5º 3.0 0º 3.2 0º 3.4 0º 3.6 0º
3.8 0º 4.0 0º 4.2 0º 4.4 0º 4.6 0º Po wykonaniu map percepcyjnych podczas testowania została przeprowadzona ich walidacja. Do tego celu została wykorzystana funkcja validate_trajectory. Sprawdza ona, czy w pobliżu (określonym przez parametr) samolotu znajduje się jakaś przeszkoda. Sprawdzenie odbywa się dla każdej dostępnej mapy percepcyjnej, czyli w tym przypadku co 0.2s trwania symulacji. Jeśli w którymkolwiek momencie utworzenia mapy percepcyjnej w sąsiedztwie samolotu znajduje się przeszkoda funkcja zwróci wartość 0, lub 1 w momencie brak wykrycia przeszkody. W przedstawionym teście przyjęty parametr jaki ma być sprawdzony to 1 (Rys. 5.7). W wymienionym przypadku wynik walidacji wynosił 1, czyli dla wszystkich wygenerowanych w teście map percepcyjnych nie zdarzyła się sytuacja, by w pobliżu samolotu pojawiła się przeszkoda. Można wiec z całą pewnością powiedzieć że algorytm spełnia swoje zadanie i system jest zdolny do unikania kolizji z wykorzystaniem sieci ARTMAP. Rys. 5.7: Obszary brane podczas walidacji. Kropka oznacza sektor w którym znajduje się samolot, krzyżykiem oznaczono sektory które są sprawdzane pod kątem obecności przeszkód. Tutaj argumentem funkcji walidującej było 1, sprawdzone więc zostały sektory sąsiadujące z samolotem, bo ich odległość od niego wynosi 1. 30
Rys. 5.8: Sytuacja po 1.0s trwania symulacji testowej. 31 Rys. 5.9: Sytuacja po 2.0s trwania symulacji testowej.
Rys. 5.10: Sytuacja po 3.0s trwania symulacji Rys. 5.11: Sytuacja po 4.0s trwania symulacji testowej. testowej. 32
Rys. 5.12: Sytuacja po 4.6s trwania symulacji testowej. 33
6. Zakończenie Celem pracy było wykorzystanie sieci neuronowej typu fuzzy ARTMAP do wyboru manewru antykolizyjnego i cel ten został osiągnięty. Algorytm po nauczeniu 556 przypadków jest w stanie w sposób zadowalający działanie, jakie należy wykonać w celu uniknięcia przeszkody. W żadnym momencie działania algorytmu antykolizyjnego symulowany pojazd nie znalazł się w sąsiedztwie przeszkody. Parametry przyjęte do działania algorytmu (jak maksymalna szybkość z jaką może skręcać) mogą się różnić od faktycznych możliwości konkretnego bezzałogowego statku powietrznego. W zależności od specyfikacji pojazdu, w którym będzie się znajdował, należy dostosować odpowiednie parametry w zbiorach uczących (tak, by wartości zwracane były odpowiednie dla danego pojazdu), lub w odpowiedni sposób przeskalować wartości zaproponowane powyżej jakie zwraca sieć fuzzy ARTMAP. Po wyminięciu przeszkód (gdy ostatnia wykryta przeszkoda znajduje się kilka sektorów za samolotem) kontrolę nad pojazdem powinien przejąć autopilot. Najlepszym rozwiązaniem jest użycie opisanego algorytmu wraz z innym modułem, odpowiedzialnym za planowanie trasy misji. Algorytm powinien przejąć kontrolę, lub wpływać na moduł sterowania w momencie wykrycia zagrożenia (czyli np. gdy w części mapy percepcyjnej w otoczeniu samolotem wartości nie są równe zeru), a nie powinien ingerować, czy też być branym pod uwagę, w momencie braku zagrożenia. 34
Bibliografia [1] J. D. Grithy, M. J. Kochenderferz, J. K. Kuchar, "Electro-Optical System Analysis for Sense and Avoid", AIAA Guidance - Navigation and Control Conference and Exhibit, Honolulu, Hawaii, 1-11 (2008) [2] Instytut Lotnictwa, "Autonomiczny układ antykolizyjny przeznaczony dla bezzałogowych środków latających wykorzystujący aktywną metodę teledetekcji obiektów - Koncepcja systemu antykolizyjnego", 2011 [3] M.Pawłowski, "Symulator radaru statku powietrznego", Praca Inżynierska, Politechnika Warszawska, 2012 [4] S.Jankowski, Z.Szymański, J.Szczyrek, J.Graffstein, "Metoda tworzenia modelu otoczenia z pomiarów Radarowego Detektora Przeszkód wsystemie unikania kolizji", Prace Instytutu Lotnictwa 224, 2012 [5] Z.Szymańsk, S.Jankowski, J.Szczyrek, "Reconstruction of environment model by using radar vector fieldhistograms", Photonics Applications in Astronomy, Communications, Industry, and High-Energy Physics Experiments, Vol. 8454, 20 (2012) [6] [IG-500N GPS aided AHRS User Manual], SBG Systems (2009) [7] J. Borenstein, Y. Koren, The Vector Field Histogram -Fast Obstacle Avoidance ForMobile Robots, IEEE Journal of Robotics and Automation Vol 7, No 3, June 1991, pp.278-288. [8] G.A. Carpenter, S. Grossbergf, D.B. Rosen, "A neural netrowk realization of fuzzy ART." Tech. Rep. CAS/CNS-TR-91-021. Boston, MA: Boston University, 1991 [9] G.A. Carpenter, S. Grossberg, N. Markuzon, J.H. Reynolds, D.B. Rosen, "Fuzzy ARTMAP: A Neural Network Architecture for Incremental Supervised Learning of Analog Multidimensional Maps", IEEE TRANSACTIONS ON NEURAL NETWORKS, VOL. 3, NO. 5, 698 (1992) [10] Aaron Garett, "Fuzzy ARTMAP Neural Network Implementation", Jacksonville State University, 22-Dec-2003 [11] M.Pawłowski, Z.Szymański, "Environment model for unmanned flying vehicles based on simulatedradar data.", Photonics Applications in Astronomy, Communications, Industry, and High-Energy Physics Experiments, Vol. 8454, 22 (2012) [11][1][4][4][3][11][3][9][5][11][1] [9][5][5][2] 35
DODATEK A OPIS FUNKCJI Funkcja Argumenty Wartości zwracane Opis funkcji [new_data_set, simulator_ new_supervisor] = location - ścieżka do add_pm_to_learnin katalogu symulatora; g_set( simulator_ data_set - zmienna location, zawierająca wektory danych data_set, wejściowych (musi być to supervisor, co najmniej jedna kolumna direction_change_ posiadająca 601 linij); value ) supervisor - wektor zawierający sygnały nadzorujące dla kolumn zawartych w data_set; direction_change_v alue - wartość o jaką należy zmienić kurs samolotu w wypadku tej mapy (jest to zarówno wartość sygnału nadzorującego) new_data_set - jest Funkcja pobiera mapę percepcyjną z zadanej to wprowadzona macierz lokacji, wycina z niej data_set rozszerzona interesujący ją fragment o wektor utworzony z (20x30) określając jego zadanej mapy środek dzięki percepcyjnej; odpowiedniemu wpisowi new_supervisor w pliku trajektorii i pliku jest to wprowadzony detection_results.dat. wektor supervisor Następnie przekształca ją rozszerzony o sygnał do wektora kolumnowego nadzorujący dla nowo i dodaje do data_set. dodanej kolumny w Również wektor new_data_set. supervisor jest rozszerzany o wartość direction_change_v alue i zwracany. [new_data_set, simulator_ new_supervisor] = location - ścieżka do add_cc_pm_to_lear katalogu symulatora; ning_set( simulat data_set - zmienna or_location, zawierająca wektory danych data_set, wejściowych (musi być to supervisor, co najmniej jedna kolumna direction_change_ posiadająca 1202 linij); value ) supervisor - wektor zawierający sygnały nadzorujące dla kolumn zawartych w data_set; direction_change_v alue - wartość o jaką należy zmienić kurs samolotu w wypadku tej mapy (jest to zarówno wartość sygnału nadzorującego). new_data_set - jest Działa jak funkcja to wprowadzona macierz add_pm_to_learning data_set rozszerzona _set, tylko zwracany wektor kolumnowy o wektor utworzony z dodawany do data_set zadanej mapy posiada uzupełniający percepcyjnej; new_supervisor wartości (complement jest to wprowadzony code). wektor supervisor rozszerzony o sygnał nadzorujący dla nowo dodanej kolumny w new_data_set. f = simulator_location f - jest to wartość klasy Funkcja ta klasyfikuje classify_pm( simu - katalog symulatora, lub mapę percepcyjną z do której sieć lator_location, miejsca w którym znajduje przyporządkowała zadany zadanej lokacji, ARTMAP) wykorzystuje do tego poza się mapa percepcyjna do wektor. samym plikiem mapy plik klasyfikacji; trajektorii, oraz plik ARTMAP - sieć detection_results. Po czym neuronowa która ma 36