INTELIGENTNY ŻOŁNIERZ
Transkrypt
INTELIGENTNY ŻOŁNIERZ
WYŻSZA SZKOŁA INFORMATYKI I ZARZĄDZANIA z siedzibą w Rzeszowie WYDZIAŁ INFORMATYKI STOSOWANEJ Projekt Zespołowy INTELIGENTNY ŻOŁNIERZ Skład grupy: Łukasz Jabłoński Łukasz Prus Marcin Czebanyk Bartłomiej Drozd 46687 25383 36327 36333 Prowadzący: prof. nadzw. dr hab. Janusz Starzyk Asystent: mgr Daniel Jachyra Rzeszów, 2012 1 KONCEPT OGÓLNY ................................................................................ 3 2 MOTYWACJA BOTÓW DO DZIAŁANIA........................................... 4 3 BUDOWA I LOGIKA BOTA ................................................................... 4 4 OPIS ODDZIAŁYWAŃ POMIĘDZY BOTAMI .................................. 6 5 SOFTWARE ................................................................................................. 6 6 ZESPÓŁ ........................................................................................................ 7 7 KOMUNIKACJA W ZESPOLE ............................................................... 7 8 WYMAGANIA KLIENTA ........................................................................ 8 9 HARMONOGRAM PRAC ....................................................................... 8 10 ŚWIAT BOTA.............................................................................................. 9 11 TRUDNOŚCI WYSTĘPUJĄCE W TRAKCIE REALIZACJI ........... 11 12 PODSUMOWANIE I ZALECENIA NA PRZYSZŁOŚĆ ................. 11 2 1 KONCEPT OGÓLNY Celem niniejszego projektu było przede wszystkim poznanie praktycznych zasad projektowania oraz tworzenia inteligentnych systemów komputerowych, opartych o mechanizmy sztucznej inteligencji. Jak sama nazwa wskazuje, za cel projektu należało również uważać wyrobienie nawyków i przyzwyczajeń wśród członków zespołu, mających przyczynić się do efektywnej współpracy przy realizowanym projekcie, jak również przy jemu podobnych w przyszłości. W ramach realizacji projektu, stworzone zostało środowisko, po których porusza się agent, który ma za zadanie nauczyć się rozpoznawać, które z napotkanych postaci są do niego wrogo nastawione, a które nie. Agent podejmuje walkę jedynie z postaciami agresywnymi nie reagując na postacie neutralne. Dodatkowo agent uczy się do czego służy punkt apteczny. Przy pierwotnych założeniach projektowych, zakładaliśmy stworzenie środowiska, w których będzie się poruszał agent. Świat agenta według planów miał zawierać jednostki, z którymi bot będzie toczył walkę, jak również jednostki nastawione do niego neutralnie. Założenia te udało się zrealizować. Problem pojawił się przy tworzeniu elementów, które miały wpływ bezpośrednio na agenta, np. punkt apteczny. Chcieliśmy również wzbogacić możliwości walki w naszym projekcie, poprzez zdefiniowanie dodatkowych broni, które bot mógłby zdobywać. Założenie to przerosło nasze możliwości, z tego powodu pomysł został porzucony i w projekcie występuje jeden rodzaj broni, którą posługują się boty. Fabuła projektu Przy pracach archeologicznych zostaje odnaleziony bot-żołnierz, zamrożony przed laty. Po odmrożeniu, ożywa i w akcie desperacji, nie jest w stanie rozpoznać, która postać jest do niego wrogo nastawiona, a która nie, dlatego też zaczyna walczyć, każdą napotkaną postacią. Po upływie czasu, uczy się, że tylko wojsko jest do niego wrogo nastawione i przestaje zabijać laborantów. 3 2 MOTYWACJA BOTÓW DO DZIAŁANIA Początkowo bot unicestwia wszystkie pojawiające się postacie, jednak stopniowo zaczyna rozróżniać, która z postaci jest to niego wrogo nastawiona, a która nie. Za unicestwienie dobrej postaci bot zostaje ukarany poprzez obniżenie potrzeby moralności. Po pewnym czasie bot zaczyna rozpoznawać postacie – zabija tylko postać złą, dzięki czemu jego poziom moralności rośnie do maksymalnej wartości. Podczas wędrówki po środowisku, bot może również zostać ranny, co nakłania go do poszukiwania apteczki. 3 BUDOWA I LOGIKA BOTA Rysunek 1 4 Bottom – korpus bota; obiekt typu Dynamic. Poprzez aktuator Motion/ServoControl nadaną ma prędkość liniową wzdłuż lokalnej osi X. Dwa sensory Message odbierają informacje z radarów i odpowiednio nadają prędkość obrotową. Rradar/Lradar – obiekty podlegające pod obiekt Bottom. Sensory typu Radar ustalone są dla wyszukiwania obiektów z parametrem Env w obszarze zasięgu radaru. Radary w przypadku zadziałania wysyłają informacje do obiektu Bottom stosując aktuator Message. Top – wieża bota; Sensor typu Radar ustalony został do wyszukiwania obiektów z parametrem Enemy, Enemy1 i Lekarz, dodatkowo zasięg radaru reprezentuje zasięg światła latarki. Radary wysyła informację o koniecznym wystrzale jeśli w zasięgu pojawi się robot wrogi do obiektu Cannon stosując aktuator Message. Cannon – obiekty typu Empty podlegający pod obiekt Top. W przypadku otrzymania od niego informacji o wystrzale, uruchamia aktuator EditObject/AddObject. Wygenerowany zostaje wtedy obiekt Bullet z zadaną prędkością początkową. Boty poruszające się po terenie nie maja zaprogramowanych sztywnych tras po których się poruszają, posiadają minimalna inteligencje pozwalającą im na odbieranie bodźców poprzez sensory. Sensory pozwalają botom na autonomiczne poruszanie się po terenie omijając przeszkody ustawione na scenie oraz wykrywanie wrogich jednostek będących w zasięgu broni. Boty dzięki swojej inteligencji zaprogramowanej przy pomocy kostek logiki potrafią odróżniać wrogie jednostki od pozostałych oraz poruszać się po terenie bez udziału człowieka. 5 4 OPIS ODDZIAŁYWAŃ POMIĘDZY BOTAMI Złe postacie na mapie są agresywne i zmniejszają poziom zdrowia żołnierza, który musi uzupełnić poprzez znalezienie apteczki. Postacie dobre są pokojowo nastawione do bohatera i nie robią mu krzywdy, ale bot może je unicestwiać. Boty poruszają się na mapie w sposób losowy, doprowadzając w ten sposób do różnych sytuacji: może dojść do spotkania bohatera głównego z wrogiem, z czego wyniknie walka pomiędzy nimi, może również dojść do spotkania bohatera z kilkoma wrogo nastawionymi jednostkami, co w konsekwencji również prowadzi do walki. Drugim możliwym wariantem jest spotkanie Inteligentnego żołnierza z jednostką nastawioną neutralnie, co po procesie uczenia powinno doprowadzić do tego, że bot rozpozna, że napotkana jednostka nie jest do niego wrogo nastawiona i nie będzie otwierał ognia w celu jej unicestwienia. Kolejnym możliwym wariantem jest spotkanie pomiędzy jednostką neutralną a jednostką wrogo nastawioną do głównego bohatera, co zaowocuje brakiem jakiejkolwiek reakcji. 5 SOFTWARE Do realizacji projektu wykorzystaliśmy język programowania Python oraz program Blender 3D. Język Python jest efektywnym i przyjaznym narzędziem do programowania sztucznej inteligencji oraz szeregu innych systemów Wraz z edytorem grafiki Blender 3D oraz silnikiem Blender Game Engine pozwala szybko i sprawnie tworzyć gry trójwymiarowe zawierające elementy sztucznej inteligencji. Z kolei Blender 3D jest uniwersalnym narzędziem, pozwalającym na modelowanie, animację, rendering, oraz dodawanie efektów specjalnych do tworzenia scen graficznych. Oprócz standardowych funkcjonalności, Blender dysponuje bardzo przydatnym w naszym projekcie, narzędziem – Blender Game Engine, pozwalającym na symulowanie fizyki w ramach sceny, generowanie dynamicznego 6 oświetlenia, animowanie obiektów, współdziałających w scenie oraz pełna obsługa Pythona. 6 ZESPÓŁ Nasz zespół składa się z czterech osób: 1. JABŁOŃSKI ŁUKASZ – osoba odpowiedzialna za programowanie oraz testy 2. PRUS ŁUKASZ – osoba odpowiedzialna za programowanie 3. CZEBANYK MARCIN – osoba odpowiedzialna za sporządzenie grafiki oraz stworzenie animacji 4. DROZD BARTŁOMIEJ – osoba odpowiedzialna za całość dokumentacji, stworzenie prezentacji PDR oraz raportu końcowego 7 KOMUNIKACJA W ZESPOLE Komunikacja w zespole odbywała się przede wszystkim za pośrednictwem Internetu, z wykorzystaniem komunikatora Gadu-Gadu, jak również Skype. Z użytkowaniem tych narzędzi wiązała się główna komunikacja pomiędzy członkami zespołu – ustalanie najważniejszych punktów projektu, wyznaczanie najbliższych celów do realizacji Członkowie zespołu prowadzili również rozmowy z wykorzystaniem poczty elektronicznej jak również poprzez rozmowy telefoniczne a także smsy. Służyły one jednak wyłącznie do szybkich ustaleń konkretnych punktów projektu. 7 8 WYMAGANIA KLIENTA A. Autonomiczne poruszanie się żołnierza po środowisku. B. Nauka wykorzystywania różnych rzeczy w środowisku do zaspokajania i redukcji bólu, np. uczenie się do czego służy apteczka. C. Generowanie statystyk z zachowania bota. D. Wprowadzić kolejny element, który jest zaspokajany po uzyskaniu max. moralności. 9 HARMONOGRAM PRAC Zaprezentowany powyżej harmonogram prac został przez nas starannie zaplanowany i dobrze przemyślany. Wzięliśmy w nim pod uwagę niekorzystne warunku za jakie trzeba uznać naszą pracę zawodową, bowiem każdy z nas na co dzień pracuje i dysponuje ograniczoną ilością wolnego czasu. Uważamy, że dobrze się z niego wywiązaliśmy, bowiem w naszych pracach raczej nie zdarzały się opóźnienia dzięki temu również i dokumentacja oraz prezentacje składane były w wyznaczonych terminach do wglądu i oceny. Z pewnością za spore utrudnienie przy jego realizacji należy uznać, że nie mogliśmy pracować wszyscy razem w jednym czasie, bowiem bez dostarczonych materiałów graficznych, nie dało się ruszyć z programowaniem i w dalszej konsekwencji z dokumentacją. Ale tak jak już wcześniej pisaliśmy, raczej się wywiązywaliśmy z wyznaczonych terminów i uważamy, że dobrze zrealizowaliśmy harmonogram naszych prac. 8 10 ŚWIAT BOTA Rysunek 2 Rysunek 3 9 Rysunek 4 Powyższe ilustracje przedstawiają szatę graficzną projektu. Widzimy na nich obszar po którym poruszają się boty oraz same boty. Niebieskie jednostki są traktowane jako jednostki wrogo nastawione, szare jako neutralne, natomiast jednostka czerwona to omawiany „inteligentny żołnierz”. Na planszy znajdują się trzy wrogie jednostki, dwie neutralne i jeden bohater projektu. Boty poruszają się po laboratorium. Jeżeli w polu widzenia bota, oznaczonego wiązką światła pojawi się wroga jednostka, zaczyna do niej strzelać. 10 11 TRUDNOŚCI WYSTĘPUJĄCE W TRAKCIE REALIZACJI Dla naszego zespołu realizacja omawianego projektu była prawdziwym wyzwaniem, ponieważ nigdy wcześniej nie mieliśmy styczności z technologią wykorzystaną przy realizacji projektu. Stanęło przed nami wyzwanie nauczenia się całkiem nowego języka programowania, którym wcześniej się nie posługiwaliśmy – i to stanowiło główną trudność. Brakowało na doświadczenie, przez co spędzaliśmy nadmierną ilość czasu nad rozwiązywaniem problemów, które jak się później okazywało wcale nie były aż tak skomplikowane. Oprócz trudności technicznych, wymienić należy przede wszystkim czasochłonność zadania, bowiem jako studenci studiów zaocznych, rzeczą naturalną jest, że stanęło przed nami trudne zadanie połączenia pracy zawodowej z kształceniem się na uczelni wyższej. Stąd też wynikały opóźnienia w postaci niedotrzymywania wyznaczonych terminów, odstępstw od harmonogramu prac jak również trudności w zebraniu wszystkich członków zespołu na wspólnej dyskusji. 12 PODSUMOWANIE I ZALECENIA NA PRZYSZŁOŚĆ Niestety nie udało nam się zrealizować wszystkich zamierzonych założeń. Dużo do życzenia pozostawia inteligencja naszego agenta, który nie zachowuje się do końca tak jak byśmy tego chcieli i jak wymaga tego projekt. Spowodowane jest to przede wszystkim brakiem umiejętności, na co przyczynia się również brak wystarczającej ilości czasu, żeby je nabyć. Zrealizowany przez nas projekt posiada potencjał, może być dalej rozwijany i wzbogacany o dalsze funkcjonalności. Uważamy, że z pewnością można jeszcze poprawić szatę graficzną, wzbogacając ją o dodatkowe elementy. Jak wcześniej pisaliśmy z założenia mieliśmy wprowadzić dodatkowe bronie, które boty mogą zdobywać, jak również udoskonalić inteligencję agent oraz wprowadzić dodatkowe elementy wpływające na jego zachowanie. 11