wizualizacja aktualnego położenia międzynarodowej stacji...

17
Wizualizacja aktualnego polożenia międzynarodowej stacji kosmicznej ISS. Piotr Michoński 218512 Wroclaw 9 czerwca 2017

Upload: ngodung

Post on 01-Mar-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

Wizualizacja aktualnego położeniamiędzynarodowej stacji kosmicznej

ISS.

Piotr Michoński 218512

Wrocław9 czerwca 2017

Page 2: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

SPIS TREŚCI SPIS TREŚCI

Spis treści

1 Opis projektu 21.1 Główne założenia . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Uszczegółowienie . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1 Mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2 Podgląd . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.3 Prędkościomierz . . . . . . . . . . . . . . . . . . . . . . 31.2.4 Wysokościomierz . . . . . . . . . . . . . . . . . . . . . 31.2.5 Sekcja informacyjna . . . . . . . . . . . . . . . . . . . 3

1.3 Szkic interfejsu . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Najważniejsze funkcjonalności . . . . . . . . . . . . . . . . . . 3

1.4.1 Wyświetlanie mapy i wyrysowywanie trajektorii . . . . 41.4.2 Podgląd – pauzowanie i przesuwanie . . . . . . . . . . 41.4.3 Wyświetlanie prędkości . . . . . . . . . . . . . . . . . . 51.4.4 Wykres wysokości . . . . . . . . . . . . . . . . . . . . . 51.4.5 Możliwość sprawdzenia najbliższych przelotów . . . . . 51.4.6 Wyświetlanie informacji o stacji oraz obecnej załogi . . 5

1.5 Diagramy przepływowe . . . . . . . . . . . . . . . . . . . . . . 51.6 Diagram klas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Harmonogram pracy 112.1 Dekompozycja zadań . . . . . . . . . . . . . . . . . . . . . . . 112.2 Kamienie milowe . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Diagram Gantta . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Przykład uzywkiwanych efektów 13

4 Podsumowanie 13

5 Zarządzanie projektem 15

Literatura 15

1

Page 3: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1 OPIS PROJEKTU

1 Opis projektu

1.1 Główne założenia

Celem projektu było stworznie aplikacji napisanej w języku C++ z wyko-rzystaniem zestawu bibliotek Qt. Aplikacja wizualizuje położenie stacji ko-smicznej ISS. Dane o położeniu stacji są pobierane ze źródeł internetowych.Położenie zobrazowane jest jako punkt na mapie świata, bezpośrednio nadktórym znajduje się stacja kosmiczna. Ponadto są pobierane i wyświetlanedodatkowe informacje takie jak aktualna prędkość czy wysokość stacji. Jed-nym z głównych założeń było przedstawienie każdego parametru w inny cie-kawy sposób z wykorzystaniem animacji 2D. Cały program został napisanyz zachowaniem zasad obiektowości w języku C++.

1.2 Uszczegółowienie

Program zrealizwany jest w jednym oknie głównym. Na kanwie zajmującejwiększość okna umieszone są wszystkie widgety. Można wyróżnić 5 głównychsekcji:

• mapa,

• podgląd,

• prędkościomierz,

• wysokościomierz,

• sekcja informacyjna.

1.2.1 Mapa

Na mapie wyświetlany jest mały obiekt graficzny nad aktualnym położ-niem stacji. Dane o szerokości i wysokości nad którą znajduje się ISS, sąpobierane z internetu za pomocą klasy QNetworkAccessManager. Ponadtona mapie wyrysowywana jest trajektoria lotu.

1.2.2 Podgląd

Podgląd jest oknem z fragmentem mapy świata, który astronauci mogąobserwować ze stacji. Przy użyciu zdarzeń od myszki, możliwe jest przesu-wanie podglądu w żądanym kierunku po ówczesnym zapauzowaniu aktuali-zowanie widgetu poprzez wciśnięcie przycisku „Pauza”.

2

Page 4: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.3 Szkic interfejsu 1 OPIS PROJEKTU

Rysunek 1: Szkic interfejsu aplikacji

1.2.3 Prędkościomierz

Wskaźnik prędkości ze wskazówką, taką jak w starszych samochodach,dodatkowo wyświetlający prędkość na ekranie LCD.

1.2.4 Wysokościomierz

Jest to wykres zmian wysokości stacji w pewnym przedziale czasu. Prze-dział, jak i geometria wykresu są wartościami przystosowanymi do łatwejedycji w kodzie.

1.2.5 Sekcja informacyjna

Sekcja ta zawiera krótki opis stacji ISS, listę osób przebywających obecniena stacji oraz dostarcza możliwość sprawdzenia przelotów ISS nad obszaremzadanym współrzędnymi wpisywanymi do spinboxów.

1.3 Szkic interfejsu

Na rysunku 1 przedstawiono szkic interfejsu przedstawiający rozłożeniewidgetów na oknie głównym.

1.4 Najważniejsze funkcjonalności

Aplikacja realizuje poniższe najważniejsze funkcjonalności:

3

Page 5: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.4 Najważniejsze funkcjonalności 1 OPIS PROJEKTU

• wyświetlanie mapy i wyrysowywanie trajektorii,

• podgląd – pauzowanie i przesuwanie,

• wyświetlanie prędkości,

• wykres wysokości,

• możliwość sprawdzenia najbliższych przelotów,

• wyświetlanie informacji o stacji oraz obecnej załogi.

Wszystkie zostały poniżej szczegółowo opisane.

1.4.1 Wyświetlanie mapy i wyrysowywanie trajektorii

Mapa jest prostokątnym widgetem, który w tle zawiera mapę całego świa-ta załadowywaną do pamięci programu z pliku. Istnieje możliwość wyrysowa-nia na mapie grafiki, w miejscu wyznaczonym poprzez podane współrzędnegeograficzne. W klasie jest zaimplementowana funkcja, która potrafi zamienićwspółrzędne geograficzne na rzut Merkartora, czyli rzut w jakim zrealizowanajest mapa. Pozwala to na określenie fizycznego położenia (w liczbie pikseli odnarożnika widgetu), w jakim znajduje się punkt o zadanych współrzędnych.W tym programie klasa ta wyrysowuje grafikę przedstawiającą stację ko-smiczną nad współrzędnymi otrzymanymi w sygnale wysłanym przez obiektSatelita. Wyrysowywanie odbywa się w momencie otrzymania sygnału. Po-nadto w klasie mapa jest pole zawierające listę obiektów typu QPointF, wktórej można przechowywać współrzędne punktów. Współrzędne te są rów-nież wyrysowywane na mapie, obrazując jej trajektorię.

1.4.2 Podgląd – pauzowanie i przesuwanie

W oknie podglądu wyświetla się zdjęcie mapy satelitarnej Ziemii, pobra-nej w momencie nadejścia sygnału zaktualizowania współrzędnych. Zdjęciejest pobierane z internetu przy użyciu klasy QNetworkAccessManager. Ist-nieje możliwość ignorowania przychodzących sygnałów i wstrzymanie aktu-alizacji podglądu poprzez wciśnięcie przycisku Pauza. Jednocześnie dostajesię możliwość przesuwania mapy – klikając na Podglądzie lewym przyciskiemmyszy, przesuwając kursor i puszczając przycisk. Gdy wznowimy aktualiza-cje podglądu (tym samym przyciskiem – na którym powinno się wyświetlaćsłowo „Start”) przesuwanie jest znów zablokowane.

4

Page 6: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.5 Diagramy przepływowe 1 OPIS PROJEKTU

1.4.3 Wyświetlanie prędkości

Z aplikacją dostarczona jest klasa Prędkościomierz, w której podczastworzenia obiektu można podać zakres prędkości wyświetlanych na wskaź-niku oraz rozmiar widgetu. Prędkość jest wyświetlana na wyświetlaczu LCD(obiekcie klasy QLCD) a także za pomocą wskazówki, jak w anologowymprędkościomierzu w samochodach. Wyrysowywanie odbywa się poprzez kla-sę QPainter.

1.4.4 Wykres wysokości

Na widget’cie wyświetlany jest wykres punktowy, w którym punkty po-łączone są liniami. Wykres obejmuje ustalony w kodzie zakres poziomy, na-tomiast zakres pionowy jest automatyczie kalibrowany. Stworzona klasa jestuniwersalna i pozwala na zmiany wymiarów wigetu i elementów w nim. Wy-rysowywanie odbywa się poprzez klasę QPainter.

1.4.5 Możliwość sprawdzenia najbliższych przelotów

Wraz z klasą SekcjaInformacyjna dostarczona jest możliwość sprawdzeniaprzelotów międzynarodowej stacji kosmicznej nad zadanymi współrzędnymi.W tym celu należy wprowadzić w SpinBox’y wartości długości i szerokościgeograficznej żądanego punktu, a następnie wcisnąć przycisk sprawdź. Wy-świetli się okno z wiadomością zawierającą czasy przelotów.

1.4.6 Wyświetlanie informacji o stacji oraz obecnej załogi

Dodatkowo widget sekcji informacyjnej wyświetla listę osób aktualnieprzebywających na ISS pobraną z sieci podczas tworzenia obiektu. Nad listąznajduje się też krótki opis stacji wpisany bezpośrednio w kodzie programu.

1.5 Diagramy przepływowe

Diagramy przepływowe działania aplikacji zaprezentowano w wersji ogól-nej (rysunek 2) oraz uszczegółowieniu w wybranych funkcjonalnościach (patrzrysunki 3, 4, 5, 6).

1.6 Diagram klas

Rysunek 7 przedstawia diagram klas aplikacji. Na biało zaznaczono wszyt-kie klasy stworzone przez autora. Główną klasą, w której tworzone są obiek-ty innych klas, jest Kanwa – przedstawiona na środku rysunku. Kolorem

5

Page 7: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.6 Diagram klas 1 OPIS PROJEKTU

Rysunek 2: Ogólny diagram działania aplikacji

6

Page 8: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.6 Diagram klas 1 OPIS PROJEKTU

Rysunek 3: Diagram wyrysowywania mapy

7

Page 9: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.6 Diagram klas 1 OPIS PROJEKTU

Rysunek 4: Diagram wyrysowywania aktualnej prędkości

8

Page 10: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.6 Diagram klas 1 OPIS PROJEKTU

Rysunek 5: Diagram aktualizacji obiektu Satelita

9

Page 11: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

1.6 Diagram klas 1 OPIS PROJEKTU

Rysunek 6: Diagram działania obiektu SekcjaInformacyjna

10

Page 12: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

2 HARMONOGRAM PRACY

Rysunek 7: Diagram klas

niebieskim oznaczono najważniejsze klasy z biblioteki Qt, których użyto wprogramie.

2 Harmonogram pracy

2.1 Dekompozycja zadań

Pracę nad aplikacją zdekomponowano na poniższe zadania, które zostałyrozplanowane w czasie. Podczas tworzenia projektu trzymano się powstałegow ten sposób harmonogramu.

• Zapozanie ze środowiskiem

Stworzenie rdzenia aplikacji

Nauka obsługi systemu slotów i sygnałów

• Widget z mapą świata

Zapoznanie z klasą QNetworkAccessManager

11

Page 13: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

2.2 Kamienie milowe 2 HARMONOGRAM PRACY

Pobranie przykładowej informacji z sieci

Pobranie i zapisanie położenia ISS

Wyrysowanie położenia ISS na mapie

Dodanie wyrysowywanie trajektorii

• Podgląd obszaru pod ISS

Stworzenie widgetu z podglądem

Nauka obsługi zdarzeń

Wprowadzenie możliwości przesuwania podglądu obszaru

• Stworzenie animacji 2D

Zapoznianie z klasą QPrinter

Wizualizacja wysokości satelity

Wyrysowanie prędkościomierza

• Uogólnienie programu

Wprowadzenie wyświetlania obecnej załogi

Dodanie opisu satelity

Informowanie kiedy satelita znajdzie się nad zadanym obszarem

• Testy aplikacji

Obsługa błędów

Poprawki w kodzie programu

2.2 Kamienie milowe

Zdefiniowano dwa kamienie milowe:

• Po wykonaniu widgetów z mapą i podglądem – 08.05.2017

• Po stworzeniu animacji 2D – 29.05.2017

12

Page 14: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

2.3 Diagram Gantta 4 PODSUMOWANIE

2.3 Diagram Gantta

Licząc od dnia 27.03.2017 do końca semestru było 15 tygodni, dlategoponiższy diagram jest podzielony na 15 tygodniowych okresów:

Zadania 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 Zapoznanie ześrodowiskiem

2 Widget z mapąświata

3Podgląd obszarupod ISS

4Stworzenie ani-macji 2D

5Uogólnienie pro-gramu

6 Testy aplikacji

3 Przykład uzywkiwanych efektów

Na rysunku 3 przedstawiono przykładowy efekt działania aplikacji. Wi-dzimy na nim aplikacją działającą przez kilka minut. Na mapie czerwonymipunktami zaznaczona jest trajektoria ISS, zapisywana od momentu włączeniaaplikacji. Prędkościomierz wskazuje aktualną prędkość, a na wykresie wyso-kości możemy zaobserwować, że przez ostatnie pół minuty stacja zmniejszałaswoją prędkość. W prawym dolnym rogu widnieje opis stacji i lista osób prze-bywających na niej. Ponadto widzimy spinbox’y, w których można wpisaćwspółrzędne geograficzne i sprawdzić przyszłe przeloty nad tak zdefiniowa-nym punktem. Efekt wciśnięcia przycisku Wizualizuje rysunek 3.

4 Podsumowanie

Zgodnie z przyjętymi założeniami, efektem końcowym jest w pełni dzia-łająca aplikacja. Podczas jej powstawania ściśle stosowano się do założo-nego harmonogramu, projekt ukończono przed wyznaczonym terminem. Doprojektu została dostarczona pełna dokumentacja kodu w formacie HTML

13

Page 15: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

4 PODSUMOWANIE

Rysunek 8: Efekt działania aplikacji

Rysunek 9: Efekt sprawdzenia przyszłych przelotów nad zadaną lokalizacją

14

Page 16: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

5 ZARZĄDZANIE PROJEKTEM

wygenerowana przez program doxygen. Ponadto w raporcie zamieszczonoopis funkcjonalności aplikacji i wytłumaczono zasadę działania. Podczas pra-cy nad projektem potwierdzono, że wykorzystanie bibliotek Qt pomaga włatwy sposób wykonać atrakcyjną graficznie aplikację, która doskonale nada-waje się do wizualizacji danych. Wszystko dzięki mnogości klas, doskonałejdokumentacji oraz mechanizmowi slotów i sygnałów, który dostarcza łatwysposób na komunikację między obiektami/widgetami.

5 Zarządzanie projektem

Kod programu był tworzony w edytorze emacs oraz testowany na róż-nych platformach. Kolejne wersje były zapisywane w systemie kontroli wersjigit. Do tworzenia dokumentacji używano LATEX. Diagramy tworzone były zapomocą dia.

15

Page 17: Wizualizacja aktualnego położenia międzynarodowej stacji ...rab.ict.pwr.wroc.pl/~kreczmer/wds/projekty/spr/2017/pmichons/... · z zachowaniem zasad obiektowości w języku C++

LITERATURA LITERATURA

Literatura

[1] Karol Kuczyński: Wstęp do programowania w Qt, Lublin 2012

[2] Daniel Solin: Programowanie przy użyciu biblioteki Qt, Warszawa 2001

[3] Jerzy Grębosz Symfonia C++ standard, Kraków 2008

16