- W empik go
Książka-gra: sterowanie grupą robotów-łazików. Numer specjalny s0/2024 Czasopisma MATINF. - ebook
Książka-gra: sterowanie grupą robotów-łazików. Numer specjalny s0/2024 Czasopisma MATINF. - ebook
W numerze specjalnym s0/2024 Czasopisma MATINF Redakcja Czasopisma MATINF prezentuje przemyślenia z procesu przygotowywania prostego studenckiego projektu zaliczeniowego - współbieżnej gry turowej w sterowanie grupą robotów-łazików mających do wykonania przydzielone wspólne zadanie zebrania próbek skał i powrotu na Ziemię.
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
Rozmiar pliku: | 14 MB |
FRAGMENT KSIĄŻKI
Czasopismo MATINF
Stron:
39
Numer:
MATINF s 0/2024
Data wydania:
27 maja 2024
Druk:
bez drukowanych egzemplarzy
Adresy Redakcji :
[email protected]
Witryny informacyjne, regulaminy:
https://github.com/ c zasopismo- MATINF / C zasopismo-MATINF
Przypisane repozytorium:
https://github.com/czasopismo-MATINF/Book-game-control-of-robot-rovers
Czytelnik:
osoba samodzielnie programująca, ucząca się, student
Książka ta jest opisem tworzenia gry programistycznej, w której zadaniem Gracz a jest napisani e uniwersalnego algorytmu sterowania grupą robotów- łazików , by wykon yw ały przydzielone zadanie: zebrania próbek skał, odnalezienia statku-matki i powr o t u na Ziemię.
Repozytorium tej k siążk i zawiera możliwy do wykorzystania podczas korepetycji projekt o prostym interfejsie teksto wo - graficznym z wykorzystaniem IDE Eclipse i Processinga.
Książka ta jest przyjrzeniem się procesom: opracowywania pomysłu, programowania, kodowania.
Książka ta jest przykładem dokumentowania tych procesów .
W trakcie czytania tej książki-sprawozdania Czytelnik-Programista powinien przeglądać przypisane repozytorium na Githubie:
https://github.com/czasopismo-MATINF/Book-game-control-of-robot-rovers
checkoutować poporzednie wersje
narzekać na umieszczony tam kod, który nie jest czysty (clean code)
programować własny projekt być może również gry tekstowej - n.p. zlecony na studiach
stwierdzić, że na pewno umie t aką grę napisać lepiej i ta książka jest właściwie niepotrzebna z wyjątkiem bycia proponowanym przykładem tworzenia opisowej dokumentacji tworzenia projektu a i tu jej właściwie brakuje
obserwować i notować spostrzeżenia o swoim trybie pracy, długości sesji, ilości i tego, co robi w przerwach, oceniać kiedy idzie mu najlepiej, dochodzić do spostrzeżeń i wniosków
dowiadywać się nowych rzeczy z każdym kolejnym etapem własnego projektu
Książka ta nie jest:
podręcznikiem ani analizy, ani projektowania, ani programowania, ani testowania
systematycznym wyjaśnianiem kodu przypisanego repozytorium
pełnym przykładem dokumentacji projektowej
opowieścią z tworzenia gry komputerowej
----------------------------------------------------------------------------------------------------
POMYSŁ - KONCEPCJA
Zatem Czytelniku-Programisto:
Twój statek kosmiczny dotarł do niewielkiej planety, wleciał na orbitę, jednak lądowanie nie poszło jak należy. Roboty-łaziki, które były ładunkiem, rozproszyły się po powierzchni w losowe miejsca, a w statku-matce, gdzieś na planecie, uległ awarii podsystem anten oraz zostało mu energii jedynie na powrót na orbitę oraz przyspieszenie w kierunku Ziemi, więc nie może latać po planecie ani komunikować się z łazikami. Nie wiadomo nawet gdzie się znajduje. Po orbicie krążą sprawnie działające satelity komunikacyjne i GPS, ale nie są wyposażone w chmurę obliczeniową, która mogłaby uruchomić AI, by sterować łazikami na powierzchni. Na planecie panują trudne warunki atmosferyczne, podróżują niszczące i oślepiające zamiecie, a przez to również zwiększony koszt energetyczny korzystania z anten łazików, a szkoda, bo każdy może wysyłać i odbierać wiadomości z orbity oraz sąsiednich pól. Odbiór wiadomości nie zużywa energii, ale podobnie do nadania jest bardzo szybki - można wysyłać i odbierać dowolną ilość wiadomości na turę, chociaż komunikacja jest jednokierunkowa: nadanie wiadomości do sieci satelit nie gwarantuje nawet dotarcia do samej sieci, wiadomość może ulec zmianie, ale z orbity mamy pewność, że wiadomość zostanie nadana do adresata na planetę, ponieważ na orbicie nie brakuje energii słonecznej. Nie wiadomo jednak, czy również dotrze. Wiadomości można nadawać pod adresy (i,j) siatki geograficznej nie obejmującej biegunów, na których i tak panują zbyt trudne warunki dla łazików, mierzonej przez system GPS satelit lub na sąsiadujące pola przy pomocy anten pomocniczych z pominięciem sieci satelit. Na planecie wylądowały również stacje gwiazdowo-energetyczne, w których energia jest niewyczerpana, a które mają możliwość ładowania baterii łazików do pełna, ale same łaziki, starszego typu, nie mają baterii słonecznych lub te pozwalają tylko na słabe podładowanie baterii. Zadaniem Gracza jest odnalezienie mineralnych-skał, których jak największą ilość próbek należy pobrać, dotarcie do statku-matki i powrót na Ziemię jak największą ilością łazików z nagranymi filmami. Nie wszystkie pola na planecie są przejezdne: znajdują się na niej przepaście bez wyjścia.
Na taką właśnie sytuację łaziki zostały wyposażone w procedurę awaryjną, która już została napisana i załadowana, a którą właściwie Ty Czytelniku-Programisto, siedząc w laboratorium jeszcze przed startem misji przy zestawie komputerów przed szybą, za którą zbudowano model planety i testowe łaziki, masz zadanie napisać. Procedura ma mieć postać implementacji Callable interfejsu Javy, która zwraca pojedynczy, złożony rozkaz dla łazika na najbliższą turę.
Po tym długo przemyślanym pomyśle, który powstał w trakcie pisania artykułów Rocznika Czasopisma MATINF 2023/2024, Redakcja równie ż długo doprecyzowywała, dokonując ciągłych korekt, interfejs łazika dla Czytelnika-Programisty. Takie poprawianie, zdaniem Redakcji, nazywa się analizą i projektowaniem obiektowym i wykonuje się je najlepiej na dużej, białej, suchościeralnej tablicy na alkoholowe flamastry, której nie musimy ścierać - trzeba mieć własną. Tablicę można zastąpić tańszą szybą, nawet okienną ... a niech się przechodnie gapią ... Rozrysowywanie programu, jego wyglądu, relacji pomiędzy występującymi elementami z użyciem uproszczonych wersji języków podobnych do UML pozwala dostrzegać niewidoczne z początku zależności, utrudnienia oraz uproszczenia, a dla Redakcji, przy każdym projekcie, jest sposobem dopracowywania pomysłu w szczegółach do tego, pożądanego przez Redakcję stopnia, by cała specyfikacja programu była dana przed jego implementacją, czyli by nie dodawać, ani nie zmieniać nic w programie po rozpoczęciu jego kodowania w wybranym przez Redakcję języku - Java. Udaje się to rzadko, ale lata spostrzeżeń Redakcji sugerują, że im więcej poświęcić pracy na etap OOAD (object-oriented analysis and design), tym mniej frustrujących problemów w trakcie implementacji.
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
ANALIZA PROBLEMU Z ZAMAWIAJĄCYM - SAMYM SOBĄ
PRZYPADKI UŻYCIA ROZGRYWKI - USE CASES (?)
ŁAZIK i STATEK-MATKA:
+--------------------------------------------------------------------------+
| proponowane cechy łazika: |
| |
| |
| |
| ciężar łazika = łazik + ciężar baterii + ciężar ładunku w ładowni |
| |
| łazik = 10kg |
| |
| bateria = 1kg (10 gniazd), każda o pojemności 1000Wh |
| |
| ładowność ładowni łazika: 10kg |
| |
| |
+--------------------------------------------------------------------------+
| proponowane cechy statku - matki : |
| |
| |
| |
| miejsca na łaziki : wszystkie , bez zbędnych baterii (1 bateria na łazik |
| ) |
| |
| ładowność : ilość łazików * 2 * 10kg ( pełne łaziki , pełna ładownia ) |
| |
| ładownia : ilość łazików * 10kg |
| |
| |
+--------------------------------------------------------------------------+
INTERFEJS ŁAZIKA:
AKCJE O TYLKO KOSZCIE ENERGETYCZNYM:
+--------------------------------------------------------------------------+
| wyślij wiadomość pod współrzędne GPS(i,j), treść – String |
| |
| |
| |
| koszt : koszt zależny od długości wiadomości , format: "GPS i j '…'" |
| |
| odpowiedź : brak potwierdzenia dotarcia do sieci satelit lub takie |
| potwierdzenie , w przypadku braku potwierdzenia wiadomość może dotrzeć |
| zmieniona lub błędna , z sieci satelit wiadomość jest automatycznie |
| wysyłana jednokierunkowo pod docelowy adres , ale nie wiadomo czy tam |
| dotrze poprawnie , łaziki docelowe muszą same odpowiedzieć |
| |
| brak energii : ucięcie komunikatu , błędy komunikatu , brak |
| potwierdzenia , zużycie całej energii |
| |
| opcje : SATELITE CORRECT UP, SATELITE CORRECT DOWN, SATELITE CORRECT |
| BOTH ( zawsze poprawny transfer, udaje się lub nie ), SATELITE |
| CONNECTION UP, SATELITE CONNECTION DOWN, SATELITE CONNECTION BOTH ( |
| wiadomości zawsze dochodzą , zmienione lub nie ) |
| |
| |
+--------------------------------------------------------------------------+
| wyślij wiadomość w kierunku CNESW, treść - String (C - Centrum, NESW – |
| północ, wschód, południe, zachód) |
| |
| |
| |
| koszt: koszt zależny od długości wiadomości, koszt C nieco mniejszy niż |
| NESW |
| |
| odpowiedź: brak potwierdzenia dotarcia, mają szansę odebrać wszyscy na |
| docelowym polu, muszą sami odpowiedzieć |
| |
| brak energii: ucięcie komunikatu, błędy komunikatu, zużycie całej |
| energii |
| |
| opcje: CNESW CORRECT (zawsze poprawny transfer, udaje się lub nie), |
| CNSEW CONNECTION (wiadomości zawsze dochodzą, zmienione lub nie) |
| |
| |
+--------------------------------------------------------------------------+
| spójrz na otoczenie : ( Centrum + NESW) |
| |
| |
| |
| koszt : zero |
| |
| odpowiedź : co leży na polach CNESW : lista baterii z ich stanem |
| naładowania i numerami identyfikacyjnymi , lista znaczników pobytu |
| wypalonych na gruncie , lista łazików z numerami identyfikacyjnymi , |
| ilość skał , stacje ładowania , statek - matka z informacjami o |
| zapełnieniu jego ładowni , przepaście , jeśli jest zamieć , to nic nie |
| widać na danym polu , jeśli jest zamieć na polu z patrzącym łazikiem , |
| nigdzie nic nie widać |
| |
| |
+--------------------------------------------------------------------------+
| spojrz na siebie : |
| |
| |
| |
| koszt : zero |
| |
| odpowiedź : ciężar w ładowni , stan baterii w gniazdach |
| |
| |
+--------------------------------------------------------------------------+
| sprawdź GPS: |
| |
| |
| |
| koszt : zero |
| |
| odpowiedź : współrzędne pola , rozmiar mapy , ale może nie działać |
| zwracając n.p. (-1,-1), lub być błędny |
| |
| opcje : GPS ON, GPS OFF, GPS CORRECT ( zawsze poprawny ) |
| |
| |
+--------------------------------------------------------------------------+
| |
| |
| odlot statku - matki |
| |
| |
| |
| koszt : minimalny |
| |
| brak energii : nic się nie dzieje (system odmawia wykonania operacji ) |
+--------------------------------------------------------------------------+
--
--
-- --
-- --
--
--
--
--
-- --
-- --