Zad. 5: Sterowanie dronem

Podobne dokumenty
Zad. 5: Sterowanie robotem mobilnym

Zad. 6: Sterowanie robotem mobilnym

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Zad. 7: Fabryka obiektów i singleton

Zad. 7: Fabryka obiektów i singleton

Zad. 6: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 5: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 7: Sterowanie manipulatorem przypadek 3D

Zad. 6: Sterowanie dronami w obecności przeszkód

Zad. 3: Układ równań liniowych

Zad. 5: Układ równań liniowych liczb zespolonych

Zad. 4: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Laboratorium nr 4: Arytmetyka liczb zespolonych

Zad. 4: Szablonu dla układu równań liniowych

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zad. 1: Sterowanie mimika

Laboratorium nr 5: Mnożenie wektorów i macierzy

Zadanie nr 2: Arytmetyka liczb zespolonych

Zadanie 2: Arytmetyka symboli

Układ równań liniowych

TEMAT : KLASY DZIEDZICZENIE

Programowanie obiektowe

Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Język Java część 2 (przykładowa aplikacja)

Technologie i usługi internetowe cz. 2

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

5.4. Efekty specjalne

Instrukcja obsługi systemu zarządzania treścią dwajeden.pl

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Aplikacje w środowisku Java

Instrukcja z przedmiotu: Zarządzanie dokumentacją techniczną

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

REFERAT O PRACY DYPLOMOWEJ

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Szablony funkcji i szablony klas

1 Powtórzenie wiadomości

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Programowanie obiektowe

SPORZĄDZENIE WARIANTÓW ROZMIESZCZENIA ELEMENTÓW W ZAMKNIĘTEJ PRZESTRZENI DLA ZADANYCH KRYTERIÓW ICH LOKALIZACJI

Analiza mechanizmu korbowo-suwakowego

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

1 Moduł Inteligentnego Głośnika

Ćwiczenie 25 Działania matematyczne we Flashu

na podstawie modelu 3D

1 Moduł Inteligentnego Głośnika 3

Manipulator OOO z systemem wizyjnym

Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wyposażenie Samolotu

Podstawy i języki programowania

Temat lekcji Zakres treści Osiągnięcia uczeń: I. FUNKCJE 14

System KADRY. Konsolidacja danych kadrowych BKIP. Wystawianie pism do pracowników. Autor : Piotr Zielonka tel

5. Praca z klasą. Dodawanie materiałów i plików. Etykieta tematu. Rozdział 5 Praca z klasą

I. Potęgi. Logarytmy. Funkcja wykładnicza.

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Aplikacja do podpisu cyfrowego npodpis

Poszukiwanie formy. 1) Dopuszczalne przemieszczenie pionowe dla kombinacji SGU Ciężar własny + L1 wynosi 40mm (1/500 rozpiętości)

czyli Arkuszy / Układów na podstawie modelu

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

Projektowanie systemów zrobotyzowanych

Programowanie obiektowe

Kurs walut. Specyfikacja projektu. Marek Zając

Menu Narzędzia w Edytorze symboli i Edytorze Widoku aparatów

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS)

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

3.4. Opis konfiguracji layoutów.

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Podstawy Programowania Obiektowego

Wizualizacja aktualnego położenia międzynarodowej stacji kosmicznej ISS.

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

1. Potęgi. Logarytmy. Funkcja wykładnicza

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Programowanie urządzeń mobilnych. projekt 6 ( )

Konsolidacja FP- Depozyty

XII. GEOMETRIA PRZESTRZENNA GRANIASTOSŁUPY

Wśród prostokątów o jednakowym obwodzie największe pole. ma kwadrat. Scenariusz zajęć z pytaniem problemowym dla. gimnazjalistów.

ZESPÓŁ SZKÓŁ W OBRZYCKU

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

dr inż. Cezary Żrodowski Wizualizacja Informacji WETI PG, sem. V, 2015/16 b) Operacja wyciągnięcia obrotowego z dodaniem materiału - uchwyt (1pkt)

Katalog wymagań na poszczególne stopnie szkolne klasa 3

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

Agnieszka Kamińska, Dorota Ponczek. Matematyka na czasie Gimnazjum, klasa 3 Rozkład materiału i plan wynikowy

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Ćwiczenie nr 10 - Analiza wytrzymałościowa modeli bryłowych

Rejestr Personelu Medycznego

Rys. 1. Brama przesuwna do wykonania na zajęciach

Transkrypt:

1 Cel ćwiczenia Zad. 5: Sterowanie dronem Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia do modelowanie kilku różnych pojęć będących uszczegółowieniem bardziej ogólnego pojęcia. Wykorzystanie pól i metod statycznych. 2 Program zajęć Ocena realizacji zadania z poprzedniego laboratorium ocenie podlega poprawność realizacji zadania, styl pisania programu oraz opisy. Modyfikacja programu wg wskazań osoby prowadzacej ocenie będzie podlegała poprawność realizacji modyfikacji. Pracę nad modyfikacją programu (wszystkie operacje należy wykonywać na kopii) należy rozpocząć już w trakcie pierwszej fazy laboratorium, gdyż prowadzący nie będzie w stanie ocenić wcześniejszego programu wszystkim jednocześnie. Realizacja wstępnej fazy prac nad nowym zadaniem w ramach wstępnej realizacji zadania należy zapoznać się z przykładem, który wizualizuje ruch dronu (dostępny jest w katalogu bk/edu/kpo/zad/z5/przyklad-animacji-drona). W tym przypadku chodzi tylko o efekt. Kod przykładu nie jest pisany obiektowo. Dlatego też nie należy się na nim wzorować. Oprócz zapoznania się przykładem należy przerobić program z poprzedniego zadania w taki sposób, aby nowe obliczone współrzędne były zapisywane do osobnej tablicy wierzchołków. Dopiero dane z tej tablicy były zapisywane do pliku. Tak więc w oryginalnej tablicy będą wciąż pierwotne współrzędne wierzchołków. Natomiast sumaryczny kąt obrotu będzie musiał być pamiętany w osobnym polu klasy Prostopadloscian. To sprawi, że błędy obliczeń nie będą się akumulowały. Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Należy napisać program, który zwizualizuje położenie drona w przestrzeni (w tym celu należy wykorzystać moduł lacze_do_gnuplota). Zakładamy, że dron wyposażony jest w cztery wirniki. Program powinien umożliwiać zadawanie przez użytkownika obrotu drona i jego wizualizację, jak też ruchu na wprost na zadaną odległość z zadanym kątem wznoszenia (wartość dodatnia kąta) lub opadania (wartość ujemna). W celu interakcji z użytkownikiem program powinien udostępniać proste menu, za pomocą którego użytkownik powinien móc wykonywać następujące czynności: zmianę orientacji drona, zadanie ruch na wprost na zadaną odległość z zadanym kątem wznoszenia się lub opadania, 1

wyświetlenie menu, zakończenie działania programu. Dodatkowo program powinien wyświetlać wraz z menu informację o liczbie aktualnie istniejących obiektów klasy Wektor3D oraz łączną liczbę wszystkich obiektów klasy Wektor3D utworzonej do tej pory. 4 Przygotowanie do zajęć Należy zastanowić się i wypisać listę podstawowych pojęć, które trzeba będzie zamodelować w postaci klas. Należy pamiętać, że nie chodzi o to, aby lista ta była długa. Ważne jest, aby dała właściwą podstawę do dalszego etapu definiowania niezbędnych struktur danych. Tak więc pojęć tych nie będzie dużo. 5 Wymagania co do konstrukcji programu Oprócz wymagań sformułowanych w opisie zadania należy uwzględnić uwarunkowania przedstawione poniżej. Należy zauważyć, że wszystkie elementy drona mają swoją reprezentację graficzną (w późniejszym zadaniu również przeszkody). W zaproponowanym wariancie kadłub drona jest reprezentowany przez prostopadłościan, zaś wirniki przez graniastosłupy foremne sześciokątne. Do wspomnianych brył (prostopadłościany i graniastosłupy foremne sześciokątne) odnosi się bardziej ogólne pojęcie, a mianowicie graniastosłup prosty. Jeszcze bardziej ogólnym pojęciem jest obiekt geometryczny. Należy zaprojektować odpowiednią hierarchię dziedziczenia, która pozwoli wydzielić model bardziej ogólnego pojęcia. Klasa, która będzie modelowała to pojęcie, będzie wspólną częścią klas modelujących pojęcie poszczególnych elementów drona. Będą one tym samym specjalizacją tego bardziej ogólnego pojęcia. Wykorzystanie w tym zadaniu mechanizmów dziedziczenia jest obligatoryjne. Zbiór wierzchołków brył może mieć różną wielkość dla różnych wariantów brył (np. prostopadłościan lub graniastosłup sześciokątny foremny). Dlatego też, aby móc to uwzględnić, należy wykorzystać szablon vector<>. Należy również zwrócić uwagę, że w przypadku rysunku poszczególnych elementów drona, aby nie dopuścić do akumulacji błędów obliczeń związanych z obrotami, należy przechowywać współrzędne obiektów wzorcowych sprzed transformacji. Przelot drona z punktu do punktu powinien być animowany wraz z animacją obrotów wirników. Dotyczy to również obrotu. Program musi zachować strukturę modułową i odpowiednią strukturę kartotek. O ile będzie to konieczne, należy zmodyfikować plik Makefile (np. gdy dodany zostanie nowy moduł). Każda z klas powinna zostać zdefiniowana w oddzielnym pliku nagłówkowym. Metody tej klasy powinny być natomiast definiowane w osobnym module związanym z daną klasą. Proste metody można definiować bezpośrednio w ciele klasy. 2

Dla poszczególnych klas należy przeciążyć niezbędne operatory działające na strumieniach. Nie wszystkie przeciążenia są w tym zadaniu potrzebne. Na pewno będą potrzebne przeciążenia operatorów wczytywania i zapisu dla klasy Wektor3D. Wszystkie metody, które nie zmieniają stanu obiektu, na którym działają, powinny być metodami typu const. Program powinien umożliwiać graficzną wizualizację wyników działania. Pozwala na to moduł łącza do programu gnuplot. Zarówno obrót jak też ruch robota powinien być animowany, tzn. obrót jak też ruch powinien być rozbity na sekwencję mniejszych obrotów lub ruchów w przód. Wszystkie klasy i metody oraz funkcje powinny zostać opisane. Opis ten powinien być zgodny z wymogami systemu doxygen. Ponadto należy wygenerować dokumentację w formacie HTML za pomocą programu doxygen. Oprócz tego pozostają w mocy wszystkie wcześniejsze wymagania dotyczące struktury katalogów, pliku Makefile, modułowej struktury programu, jak też opisów. 6 Przykład działania programu jkowalsk@panamint>./sterowanie-dronem Laczna ilosc stworzonych obiektow klasy Wektor3D: 184 Ilosc istniejacych obiektow klasy Wektor3D: 26 o - obrot drona j - lot na wprost w - wyswietl ponownie menu k - zakoncz dzialanie programu Twoj wybor (w - wyswietl menu)> j Podaj dlugosc drogi przelotu i kat wznoszenia (+)/ opadania (-). Dlugosc drogi: 85 Kat wznoszenia [stopnie]: 45 3

Laczna ilosc stworzonych obiektow klasy Wektor3D: 372 Ilosc istniejacych obiektow klasy Wektor3D: 26 Twoj wybor (w - wyswietl menu)> k Koniec dzialania programu. jkowalsk@panamint> _ 7 Materiały pomocnicze W ramach materiałów pomocniczych został dostarczany program, który wizualizuje lot drona. Nie należy jednak wzorować się na jego kodzie, gdyż nie jest on pisany obiektowo, aby nie sugerować żadnych struktur danych. Źródła programu znajdują się w kartotece. ~bk/edu/kpo/zad/z5/przyklad-animacji-drona 8 Rozszerzenia Możliwych jest kilka wariantów rozszerzenia tego zadania. 8.1 Zmiana szybkości lotu drona oraz rotacji wirników Użytkownik powinien mieć możliwość zmiany szybkości lotu (długości elementarnego kroku w trakcie ruchu) oraz szybkości obrotu wirników. 8.2 Obrót drona z uwzględnieniem zmiany prędkości obrotu rotorów Należy zwrócić uwagę, że wirniki po przekątnej mają ten sam kierunek obrotu, zaś sąsiednie przeciwny. Moment obrotowy drona, a więc jego obrót, realizowany jest poprzez zmniejszenie prędkości obrotów wirników po przekątnej, zaś obroty drugiej pary zostają w tej samej proporcji zwiększone. Jest to niezbędne, aby zachować ten sam ciąg. Rozszerzenie polega więc na zaimplementowaniu tego mechanizmu. 8.3 Skalowanie drona Kształt drona powinno być można skalować. Tak więc jego obrys użytkownik powinien mieć możliwość powiększania lub pomniejszania. 9 Uproszenia Można zrezygnować z animacji ruch i obrotu robota. Wykorzystanie tego uproszczenia powoduje obniżenie oceny o 1,0. Dobra struktura kodu oraz poprawnie stworzone opisy, jak też wygenerowana dokumentacja za pomocą doxygen, mogą podnieść ocenę. Jednak nie więcej niż o 0,5. 4

Można zrezygnować z wizualizacji wirników. To powoduje znaczne obniżenie oceny. Jednak jeżeli struktura programu jest poprawna, jak też dokumentacja oraz zastosowany jest mechanizm dziedziczenia, to możliwa jest ocena na poziomie 3,5. 10 Wymagania i zarys programu zajęć w okresie realizacji zadania 10.1 Tydzień 0 Wymagania dotyczące tygodnia 0 zostały opisane w rozdziale 4. 10.2 Tydzień 1 Przed zajęciami muszą zostać przygotowane następujące elementy zadania. Wszystko co będzie ponad to będzie oceniane in plus. Pełny diagram klas w wersji elektronicznej. Można do tego wykorzystać program dia. Przykład jego użycia znajduje się w materiałach pomocniczych do zadania dostępnych na stronie. Przerobiona wcześniejsza wersja programu, która pozwoli zadawać przemieszczenie prostopadłościanu (ruch na wprost z zadanym kątem wznoszenia lub opadania) oraz jego obrót wokół własnej osi. Przemieszczenie i obrót nie muszą być animowane. Warunkiem koniecznym pozytywnej oceny jest poprawna kompilacja. W trakcie kompilacji nie powinny być generowane żadne ostrzeżenia. Dodatkowy kod powinien być opisany oraz powinna być wygenerowana dokumentacja za pomocą programu doxygen. 10.3 Tydzień 2 Rozliczenie się z gotowego programu i rozpoczęcie następnego zadania. 5