Zad. 6: Sterowanie robotem mobilnym

Podobne dokumenty
Zad. 5: Sterowanie robotem mobilnym

Zad. 5: Sterowanie dronem

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

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

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 dronami w obecności przeszkód

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

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

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

Zad. 7: Sterowanie manipulatorem przypadek 3D

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

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

Zadanie nr 2: Arytmetyka liczb zespolonych

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Zad. 1: Sterowanie mimika

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Układ równań liniowych

Zadanie 2: Arytmetyka symboli

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

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

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

Projektowanie systemów zrobotyzowanych

Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki

Tworzenie i modyfikacja modelu geologicznego

Manipulatory i roboty mobilne AR S1 semestr 5

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

1 Moduł Inteligentnego Głośnika

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

Symulacja samochodu z kamerą stereowizyjną. Krzysztof Sykuła 15 czerwca 2007

5.4. Efekty specjalne

1 Moduł Inteligentnego Głośnika 3

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

Symulacja działania sterownika dla robota dwuosiowego typu SCARA w środowisku Matlab/Simulink.

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

Ćwiczenie 25 Działania matematyczne we Flashu

Ćwiczenie 14 Dmuchawce

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Opis preprocesora graficznego dla programu KINWIR -I

na podstawie modelu 3D

Instrukcja użytkownika

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

KATEGORIA OBSZAR WIEDZY

Aplikacja npodpis do obsługi certyfikatu

Manipulator OOO z systemem wizyjnym

czyli Arkuszy / Układów na podstawie modelu

Modelowanie części w kontekście złożenia

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

UpSoft RCP wersja

Przewodnik dla klienta

VinCent Administrator

Aplikacja npodpis do obsługi certyfikatu

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Programowanie urządzeń mobilnych. projekt 6 ( )

Backup Premium Podręcznik Szybkiego Startu

Wstęp do poradnika metodycznego Przykładowy rozkład materiału 13 I rok nauczania...13 II rok nauczania...13 Rozkład materiału:...

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Instrukcja z przedmiotu: Zarządzanie dokumentacją techniczną

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Ćwiczenie 23 Praca z plikiem.psd

Aplikacja do podpisu cyfrowego npodpis

Tematy lekcji informatyki klasa 4a wrzesień 2012

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla nauczyciela

Układy współrzędnych GUW, LUW Polecenie LUW

WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI

Kultywator rolniczy - dobór parametrów sprężyny do zadanych warunków pracy

Aplikacja npodpis do obsługi certyfikatu

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Ćwiczenie 6 Animacja trójwymiarowa

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

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

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

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

System Zarządzania Obiegiem Informacji (SZOI)

R 1. Robot o równoległej strukturze kinematycznej i czterech stopniach swobody. Pracownia Nauki Programowania i Aplikacji Robotów Przemysłowych

Backend Administratora

Wprowadzenie do biblioteki klas C++

Projektowanie baz danych za pomocą narzędzi CASE

Konsolidacja FP- Depozyty

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Programowanie obiektowe

Aplikacja npodpis do obsługi certyfikatu (instrukcja użytkownika)

Języki i metody programowania Java Lab2 podejście obiektowe

Transkrypt:

Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie 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 dokumentacja wygenerowana za pomocą programu doxygen. Ocena przygotowania do zajęć ocenie podlega diagram klas. 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 zdefiniować klasy modelujące podstawowe pojęcia i doprowadzić od poprawnej kompilacji i konsolidacji programu. Uwaga: Menu programu tworzymy na samym końcu! Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Należy napisać program, który zwizualizuje położenie robota mobilnego na scenie roboczej (w tym celu należy wykorzystać moduł lacze_do_gnuplota). Program powinien umożliwiać zadawanie przez użytkownika obrotu robota i jego wizualizację, jak też ruchu na wprost na zadaną odległość. 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 robota, zadanie ruch na wprost na zadaną odległość (wykonanie tej operacji powinno być wizualizowane rysunkiem ścieżki pokonanej przez robota) zmiana szybkości poruszania się robota (długości elementarnego kroku w trakcie ruchu), przesunięcie rysunku całej sceny, przywrócenie pierwotnego położenia rysunku sceny (tej, która była na początku działania programu), wyświetlenie menu, 1

zakończenie działania programu. Dodatkowo program powinien wyświetlać wraz z menu informację o liczbie aktualnie istniejących obiektów klasy Wektor2D oraz łączną liczbę wszystkich obiektów klasy Wektor2D utworzonej do tej pory. 4 Przygotowanie do zajęć Należy przygotować diagram klas proponowanych struktur danych. 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 obiekty w programie, które mają mieć swoją reprezentację graficzną, muszą podlegać tej samej transformacji. Realizuje ona oraz translację. Dotyczy to więc rysunku robota oraz jego ścieżki. Tym samym transformacja ta ma charakter globalny. Dotyczy jednak tylko tych obiektów. Korzystając z dziedziczenia oraz pól i metod statycznych należy stworzyć odpowiedni model hierarchii pojęć odzwierciedlony w definicji klas, która będzie uwzględniała opisane uwarunkowania. Należy zwrócić uwagę na to, że w opisie programu występuje pojęcie sceny. Powinno ono mieć swoje odzwierciedlenie w strukturze danych programu. 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ł). Należy również zwrócić uwagę, że aby nie dopuścić do akumulacji błędów obliczeń związanych z obrotami, należy przechowywać współrzędne obiektu wzorcowego sprzed transformacji. 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ą, np. definicja klasy Sciezka powinna znaleźć się w pliku nagłówkowym Sciezka.hh, zaś metody w pliku Sciezka.cpp. Proste metody można definiować bezpośrednio w ciele klasy. 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 Wektor2D. 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. 2

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ć zgodnie 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>./robot_na_scenie Laczna ilosc stworzonych obiektow klasy Wektor2D: 184 Ilosc istniejacych obiektow klasy Wektor2D: 26 z - zmiana szybkosci ruchu robota o - obrot robota j - jazda na wprost t - zadaj translacje rysunku p - powrot do pierwotnego ustawienia rysunku w - wyswietl ponownie menu k - zakoncz dzialanie programu Twoj wybor (w - wyswietl menu)> o Podaj wartosc kata obrotu robota w stopniach. Kat obrotu: 50 Twoj wybor (w - wyswietl menu)>j Podaj dlugosc drogi ruchu robota na wprost. Dlugosc drogi: 80 Twoj wybor (w - wyswietl menu)> o 3

Podaj wartosc kata obrotu robota w stopniach. Kat obrotu: 120 Twoj wybor (w - wyswietl menu)> j Podaj dlugosc drogi ruchu robota na wprost. Dlugosc drogi: 100 Twoj wybor (w - wyswietl menu)> t Aktualny całkowity wektor translacji wzgledem poczatkowego polozenia sceny: 0 0 Wpisz wspolrzedne wektora lokalnej translacji rysunku sceny. Podaj wartosci: x y > 100-40 Twoj wybor (w - wyswietl menu)> t Aktualny całkowity wektor translacji wzgledem poczatkowego polozenia sceny: 100-40 Wpisz wspolrzedne wektora lokalnej translacji rysunku sceny. Podaj wartosci: x y > 40 80 Twoj wybor (w - wyswietl menu)> p Przywrocone zostalo poczatkowe ustawienie sceny. Twoj wybor (w - wyswietl menu)> k Koniec dzialania programu. jkowalsk@panamint> _ 4

7 Materiały pomocnicze Do tego zadania nie jest dostarczany żaden zalążek. Pracę należy rozpocząć wykorzystując moduły programu z zadania nr 4 lub 5 (dla wersji rozszerzonej). W na panamincie w podkartotece bk/edu/kpo/zad/z6 można znaleźć skrypt, który uruchamia program demonstrujący przykładową realizację zadania. Skrypt ten można uruchomić poleceniem: ~bk/edu/kpo/zad/z6/przyklad_rozwiazania.sh Ze względu na to, że program tworzy okienko graficzne, w przypadku połączenia z panamintem za pomocą programu ssh należy pamiętać, aby użyć opcji -X. 8 Rozszerzenia Możliwych jest kilka wariantów rozszerzenia tego zadania. 8.1 Mniej ambitne rozszerzenia 8.1.1 Skalowanie obrysu robota Kształt robota powinno być można skalować. Tak więc jego obrys użytkownik powinien mieć możliwość powiększania lub pomniejszania. 8.1.2 Zmiana pozycji robota Użytkownik powinien móc zadać pozycję robota. Należy zwrócić uwagę, że po przesunięciu sceny zadając współrzędne położenia robota, należy uwzględnić wektor translacji całej sceny. 8.2 Bardziej ambitne rozszerzenie 8.2.1 Rozszerzenie grafiki Zamiast rysowania 2D należy rysować robota oraz jego ścieżkę ruchu wykorzystując grafikę 3D. 9 Uproszenia Można zrezygnować z animacji ruch i obrotu robota. Wykorzystanie tego uproszczenia powoduje obniżenie oceny o 0,5. Można zrezygnować z translacji całej sceny. Wykorzystanie tego uproszczenia powoduje obniżenie o jedną ocenę. 5

10 Wymagania i zarys programu zajęć w okresie realizacji zadania Przystępując do pracy nad programem należy pamiętać, że menu programu dodajemy na samym końcu, gdy stworzymy już i przetestujemy wszystkie niezbędne funkcjonalności. Zaczynanie pracy od menu nie jest dobrym rozwiązaniem. 10.1 Tydzień 0 Należy przygotować diagram klas modelujący pojęcia sceny, robota oraz ścieżki ruchu robota. Należy zwrócić uwagę na konieczność transformacji współrzędnych. W tym celu konieczne jest wykorzystanie pojęć wektora i macierzy. 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 (oprócz menu programu). W tej wersji programu nie jest pożądane, aby występowało menu. Wyjątkiem jest sytuacja, gdy program zostanie wcześniej skończony. Zdefiniowane powinny być Scena, Robot oraz Sciezka. Należy zwrócić uwagę, że pojęcia Robot i Sciezka w tym zadaniu wiążą się z odpowiednią reprezentacją graficzną. To jest element wspólny tych pojęć. Tak więc należy wydzielić bardziej ogólne pojęcie, które zostanie zamodelowane jako klasa bazowa w stosunku do klas modelujących pojęcia takie jak: Robot oraz Sciezka. Wszystkie klasy muszą mieć zdefiniowane podstawowe metody. Warunkiem koniecznym pozytywnej oceny jest poprawna kompilacja. W trakcie kompilacji nie powinny być generowane żadne ostrzeżenia. W funkcji main powinien być kod, który demonstruje rysowanie robota. Wspomniany kod powinien demonstrować również ruch robota na wprost. Ścieżka ruchu robota nie musi być rysowana. Uwaga: W tej wersji programu nie powinno być jeszcze menu. Wszystkie klasy i metody muszą być opisane oraz powinna być generowana dokumentacja za pomocą programu doxygen. 10.3 Tydzień 2 Rozliczenie się z gotowego programu i rozpoczęcie następnego zadania. 6