„Tytuł projektu”

Transkrypt

„Tytuł projektu”
WYŻSZA SZKOŁA
INFORMATYKI I ZARZĄDZANIA
z siedzibą w Rzeszowie
WYDZIAŁ INFORMATYKI STOSOWANEJ
„Tytuł projektu”
Wykonawca/y:
Dmytro Matseyko (nr alb. 37967)
Vitalii Kurylo (nr alb. 37965)
Oleh Hulyk (nr alb. 37962)
Yuriy Senych (nr alb. 37971)
Igor Senych (nr alb. 35260
Prowadzący: dr hab. Janusz Starzyk
Asystent: mgr Daniel Jachyra
1
Rzeszów 2010
Spis treści
1 Zawartość raportu
3 1.1 Koncept Ogólny
1.2 Zadania do Wykonania
1.2.1 Projektowanie oraz implementacja logiki działania systemu
1.2.2 Projektowanie oraz realizacja graficznych elementów systemu
1.2.3 Projektowanie GUI
1.2.4 Testowanie systemu
1.3 Rozwoju Projektu i jego znaczenie
1.4 Wymagania Softwareowe i Hardwarowe
1.5 Software
1.6 Trudności występujące w trakcie realizacji projektu
1.7 Trudności materiałowe i techniczne
1.8 Posumowanie i zalecenia na przyszłość
3 4 4 5 6 7 8 9 10 11 11 12 2
1 Zawartość raportu
1.1 Koncept Ogólny
Dany projekt ma na celu realizacje środowiska do wizualizacji działania algorytmu uczenia ze
wzmocnieniem. Bot, działający w środowisku ma na celu realizacje swoich potrzeb w postaci
uzyskania określonych nagród w określonej kolejności.
Fabula: w starej kopalni jeszcze zostało dość wiele złota, ale panuje tam teraz całkowita ciemność.
Nasz bohater dostaję się tam w celu trochę zbogacić się.
Środowisko jest rozbite na komórki, każda z nich ma swój numer (stan) i w każdej chwili bot
znajduje się w określonym stanie. Do niektórych stanów są przypisane nagrody i bot postrzega czy jest
nagroda w tym samym stanie, w którym jest, czy nie.
Celem bota jest nauczenie się nachodzenia drogi do pewnej nagrody z każdego stanu środowiska,
celem programu graficznego – wizualizować jego zachowanie po „nauczeniu się.”
3
1.2 Zadania do Wykonania
1.2.1
Projektowanie oraz implementacja logiki działania systemu
Architektura systemu:
1. Środowisko
2. Interfejs pomiędzy środowiskiem a alorytmem AI
3. Obiekty wewnątrz środowiska
Sterowanie zachowaniem agenta zostało realizowane dwuwarstwowo:
1. Warstwa zewnętrzna – algorytm uczenia
2. Warstwa wewnętrzna – system Radar - Receiver
Rysunek 1 Opis systemu zachowania agenta (warstwa wewnętrzna)
Bazuje na Blender Logic Bricks. Składa się z trzech grup elementów: Sensors, Controllers,
Actuators.
Tabela 1 Elementy funkcjonalne systemu
Nazwa elementu
Radar
Uwagi
Wszystkie obiekty, które radar ma zdetektować muszą
mieć ustawioną opcje Actor
Odbiorca (Górnik)
Przy odnajdowaniu celu Radar wysyła do Odbiorcy
wiadomość, a odbiorca, w zależności od treści wiadomości
(lewo czy prawo) poprzez Actuators zmienia wektor
przemieszczenia Odbiorcy.
Odbiorca może być w dwóch stanach: sterowany przez
użytkownika (pierwszy rysunek) lub przez AI (drugi)
Przy wyłączonym systemie
4
Przy włączonym
1.2.2
Projektowanie oraz realizacja graficznych elementów systemu
Projektowanie graficznej oraz fizycznej reprezentacji agenta i środowiska
Zaprojektowany agent z elementami symulacji fizycznej:
1. Bounding box – detekcja kolizji
2. Armature – animacja głównej siatki
Rysunek 2 Zaprojektowany agent z elementami symulacji fizycznej
5
Rysunek 3 Środowisko
1.2.3
Projektowanie GUI
Elementy interfejsu użytkownika:
1. Menu – zaprojektowane jako tradycyjne menu dla gier. Została zrealizowana animacja
jego elementów oraz obsługa zdarzeń myszki do sterowania grą
Rysunek 4 Menu
6
2. Interfejs główny – wydzielono trzy części:
a. widok główny środowiska oraz agenta
b. licznik czasu (dla celów wyznaczania czasu pracy algorytmu)
c. licznik zdobytych nagród
d. minimapa (dla celów wyznaczania położenia agenta w środowisku)
Przy czym dane elementy są odświeżane poprzez Python Scripts, czyli czas, ilość monet oraz
położenie agenta są zliczane (zgromadzane) ze środowiska i po przekształceniu wyświetlanie
użytkownikowi.
Rysunek 5 Działający program
Takie podejście do projektowania danego systemu pozwoliło podzielić prace graficzne na trzy
elementy:
1. Scena Menu – wszystkie obiekty, dotyczące menu
2. Scena główna – wszystkie obiekty, dotyczące środowiska
3. Overlay scene (HUD) – scena ze wszystkimi elementami GUI, widocznymi podczas działania
systemu
1.2.4
Testowanie systemu
Testowanie systemu miało na celu:
1. Zredukować możliwe błędy przy opracowaniu logiki – poprawność działania agenta w
środowisku
2. Zredukować możliwe błędy przy opracowaniu interfejsu użytkownika oraz graficznej
reprezentacji – poprawność reakcji systemu na odpowiednie zdarzenia systemowe oraz poprawność
interakcji graficznych elementów (kolizja, animacja i in.)
3. Zweryfikować poprawność symulacji fizycznej środowiska oraz odtwarzania dźwięku.
7
1.3 Rozwoju Projektu i jego znaczenie
Pod czas realizacji podstawowych wymagań do projektu było wygenerowano wiele pomysłów co
do jego rozwoju - jest sporo możliwości polepszenia prezentacji programu opierając na już
zrealizowanej części graficznej.
Z najbardziej ciekawych aspektów możliwości jego rozwoju warto wymienić:
• Utworzenie interfejsu do szybkiego podłączenia/przełączania klas, realizujących różne
algorytmu sztucznej inteligencji.
• Zwiększenie liczby możliwych do uzyskania w środowisku nagród.
• Nadanie użytkownikowi możliwości edytować środowisko.
• Dodanie możliwości prowadzenia logów symulacji, ich zapisywania oraz generowania
statystyki do porównywania algorytmów na ich podstawie.
To tylko niektóre z funkcjonalności, którymi można rozszerzyć powstały w wyniku realizacji
projektu program.
Po wprowadzaniu odpowiednich polepszeń program ma sporą szansę stać dobrym narzędziem do
wizualizacji oraz analizy różnych algorytmów uczenia maszynowego w bardzo atrakcyjny i
przejrzysty sposób. Może być użyty na uczelniach na zajęciach poświeconych sztucznej inteligencji.
8
1.4 Wymagania Softwareowe i Hardwarowe
Projekt został napisany w języku programowania Pyton z użyciem programu Blender 3D, który
jest oprogramowaniem niezależnym od platformy oraz systemu operacyjnego. Dla tego wymagania
sprzętowe dotyczą tylko ilości pamięci operacyjnej oraz karty graficznej.
Od początku, jednym z założeń było to, że wynik projektu ma chodzić bez większych problemów
na standardowych komputerach personalnych oraz laptopach, w tym celu część graficzna projektu
została zoptymalizowana (lowpoly modelling). Ale z powodu wykorzystania przez nas OpenGL
Shading Language dla polepszenia wizualizacji projektu, wymaganiem koniecznym dla uruchomienia
jest karta graficzna, wspierająca tą technologię (Nvidia GeForce seria 8 lub nowsza; GeForce GTX
260, 280; Quadro FX 370, 570, 1700, 3700, 4600, 4700x2, 5600).
Także zalecane jest posiadanie 2 Gb pamięci operacyjnej, chociaż nie jest to warunkiem
koniecznym.
9
1.5 Software
Do tworzenia aplikacja wykorzystaliśmy język programowania Python 2.6 oraz program Blender
3D wersji 2.49 beta. Blender 3D okazał się praktycznie idealnym programem do osiągnięcia celów
stawionych przed nami w ramach danego projektu. Jest to narzędzie uniwersalne, pozwalające na
modelowanie, animację, rendering oraz dodawanie efektów specjalnych do tworzonych scen
graficznych. Także posiada swój własny silnik grafiki oraz fizyki wyspecjalizowany do tworzenia gier
Blender Game Engine. To wszystko pozwoliło nie przełączać się między kilkoma różnymi
narzędziami, a skupić się na opanowaniu jednego, chociaż nie było sprawą łatwą ze względu na jego
ogromną funkcjonalność.
Oprócz standardowych funkcjonalności Blender 3D dysponuje takim, bardzo przydatnym w
naszym projekcie, narzędziem jak Blender Game Engine. Pozwala ono na symulowanie fizyki w
ramach sceny, generowanie dynamicznego oświetlenia (GLSL), animowanie obiektów,
współdziałających w scenie oraz pełna obsługa Pythona (API dla skryptów Pythona pozwalające na
pełną kontrolę nad tworzoną sceną). W każdej chwili nadaje możliwość uruchomienia programu bez
konieczności wcześniejszej jej kompilacji. Dla kontroli nad akcjami oraz ich wyświetlaniem w BGE
wydzielane trzy podstawowe elementy logiki:
 Sensory (sensor) – odczytuje stan obiektu;
 Aktuatory (actuator) – zmienia stan obiektu;
 Kontrolery (controller) – steruje przepływem danych od sensora do aktuatora.
Do tworzenia tekstur wykorzystaliśmy programy Adobe Photoshop CS3 oraz GIMP 2 dla tego że
mieliśmy doświadczenia pracy w nich, chociaż Blender też ma w sobie wbudowany redaktor
graficzny, ale praca w nim wymagała dodatkowego czasu na przyzwyczajenie się.
Do rozmieszczenia wyników pracy na każdym z etapów realizacji projektu wykorzystywaliśmy
repozytorium Tortoise SVN.
10
1.6 Trudności występujące w trakcie realizacji projektu
Dla naszego zespołu realizacja tego projektu była prawdziwym wyzwaniem, ponieważ i samo
zadanie utworzenia trójwymiarowego środowiska graficznego było dla nas nowe oraz musieliśmy
uczyć się języka Python wraz z narzędziami od początku. Na tej podstawie napotkaliśmy dość dużo
trudności – brak doświadczenia powodował spędzanie nadmiarowego czasu na rozwiązanie pewnych
zadań, jako zapewnienie dostępu w skrypcie do obiektu znajdującego się w importowanej zewnątrz
scenie używając klasy GameLogic, lub identyfikacja potrzeby ręcznego sprawdzania w kodzie stanu
klawisza wywołującego zdarzenie, żeby uniknąć podwójnych akcji.
Oprócz trudności czysto technicznych wystąpili też trudności komunikowania się z klientem i
wypracowania wspólnej wizji codo tego, jak ma wyglądać logika środowiska oraz interfejs
komunikowania z nim bota. Spowodowało to kilka zmian początkowego konceptu oraz
przeprojektowanie oraz zmianę już istniejących części kodu.
1.7 Trudności materiałowe i techniczne
Przy realizacji danego projektu wystąpiła głównie zależność sprzętowa. Praca przy edytorze
grafiki komputerowej wymaga dość dużych zasobów technicznych. Dla tego początkowe założenia
odnośnie sprzętu zostały troche zmienione:
1. pamięć operacyjana uległa zwiększeniu;
2. na wykorzystywane karty graficzne zostało narzucone ograniczenie (do wyświetlenia grafiki
wymagana jest karta graficzna z implementowanym sprzętowo Open GL GLSL Shader);
11
1.8 Posumowanie i zalecenia na przyszłość
Język Python jest bardzo prostym, efektywnym i przyjaznym narzędziem do programowania
sztucznej inteligencji oraz szeregu innych systemów. Wraz z edytorem grafiki 3D Bender3D oraz
silnikiem Blender Game Engine pozwala dość szybko i sprawnie tworzyć gry trójwymiarowe
zawierające poważne elementy sztucznej inteligencji.
Nasz program jest temu dobrym potwierdzeniem i uważamy że każda osoba interesująca się
tematami 3D gier oraz AI powinna zapoznać się z tymi narzędziami.
Uważamy że udało nam zrealizować większość postawionych przed sobą celów i jesteśmy
naprawdę zadowoleni z przeprowadzonej pracy.
12