2 Skªadnia polece«w pliku

Podobne dokumenty
Interpreter opisu dziaªa«quadrokoptera wtyczki. 1 Ogólny opis zadania. 2 Skªadnia nowych polece« 2.1 Polecenie Grasper

Zad. 1: Sterowanie mimika

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

Lekcja 5 Programowanie - Nowicjusz

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Ukªady równa«liniowych

Wzorce projektowe strukturalne cz. 1

Przykªadowe tematy z JiMP

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1. Wprowadzenie do C/C++

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

1. Wprowadzenie do C/C++

Wska¹niki, tablice dynamiczne wielowymiarowe

Programowanie robota mobilnego Khepera

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Lekcja 12 - POMOCNICY

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Programowanie i struktury danych

Elementy geometrii w przestrzeni R 3

Wojewódzki Konkurs Matematyczny

Lekcja 6 Programowanie - Zaawansowane

Programowanie obiektowe w C++ Wykªad 4

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

1 Metody iteracyjne rozwi zywania równania f(x)=0

VI OIG, Etap II konkurs dru»ynowy. 10 III 2012 Dost pna pami : 32 MB.

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Programowanie wspóªbie»ne

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Wojewódzki Konkurs Matematyczny

Programowanie wspóªbie»ne

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Programowanie i struktury danych 1 / 44

Lab. 02: Algorytm Schrage

Metody numeryczne i statystyka dla in»ynierów

Wykªad 4. Funkcje wielu zmiennych.

Zastosowania matematyki

Podstawy modelowania w j zyku UML

2 Liczby rzeczywiste - cz. 2

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Wektory w przestrzeni

Kompilowanie programów

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

1 Trochoidalny selektor elektronów

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Indeksowane rodziny zbiorów

Ekstremalnie fajne równania

ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) 7.1 Tablice jednowymiarowe statyczne

Materiaªy do Repetytorium z matematyki

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Podstawy modelowania w j zyku UML

Bazy danych, 4. wiczenia

Symulator robota mobilnego RobSym

1 Ró»niczka drugiego rz du i ekstrema

Algorytmy zwiazane z gramatykami bezkontekstowymi

PERSON Kraków

7.3 Tablice jednowymiarowe dynamiczne

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Elementy animacji sterowanie manipulatorem

Zad. 5: Sterowanie robotem mobilnym

Elementy geometrii analitycznej w przestrzeni

Typy danych i formatowanie

Proste metody segmentacji

Liczby zmiennoprzecinkowe

Programowanie wspóªbie»ne

1 Bª dy i arytmetyka zmiennopozycyjna

Lekcja 9 Liczby losowe, zmienne, staªe

Metodydowodzenia twierdzeń

Informacje pomocnicze

Spis tre±ci. 1 Podstawy termodynamiki - wiczenia 2. 2 Termodynamika - wiczenia 4. 3 Teoria maszyn cieplnych - wiczenia 6

O pewnym zadaniu olimpijskim

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

Krzywe i powierzchnie stopnia drugiego

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

x y x y x y x + y x y

Rozwi zania klasycznych problemów w Rendezvous

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Podstawy matematyki dla informatyków

Zad. 6: Sterowanie robotem mobilnym

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Sposoby przekazywania parametrów w metodach.

Zarządzanie Zasobami by CTI. Instrukcja

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów

Przetwarzanie sygnaªów

Przeksztaªcenia liniowe

Instrukcja programu PControl Powiadowmienia.

Wyznaczanie krzywej rotacji Galaktyki na podstawie danych z teleskopu RT3

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Transkrypt:

Interpreter opisu dziaªa«platformy mobilnej wtyczki 1 Ogólny opis zadania Nale»y napisa program, który b dzie w stanie przeczyta z pliku tekstowego sekwencj polece«ruchu, a nast pnie zasymulowa dziaªanie robota i zapisa w pliku tekstowym wspóªrz dne kolejnych jego poªo»e«. Analiza skªadni polece«ma by realizowana w oparciu o wtyczki, które b d bibliotekami dzielonymi ªadowanymi dynamicznie w trakcie dziaªania programu. Zakªada si,»e z ka»dym rodzajem polecenia skojarzona jest odpowiednia wtyczka, które obsªuguje dane polecenie. Program powinien dopuszcza mo»liwo± rozszerzenia skªadni opisu ruchu robota poprzez dopuszczenie istnienia nowych polece«. Wª czenie jednej wtyczki ma umo»liwia interpretacj pojedynczego nowego rodzaju polecenia. 2 Skªadnia polece«w pliku Przyjmuje si,»e ka»de z polece«zapisywane jest w jednej linii. Na pocz tku wyst puje nazwa plecenia. Mo»e by ona poprzedzona dowoln ilo±ci znaków biaªych. Po niej nast puje lista parametrów oddzielonych tak»e dowoln ilo±ci znaków biaªych. Zakªada si,»e program bez dodatkowych wtyczek powinien obsªugiwa trzy polecenia: ruch do przodu, Turn skr t po ªuku, Rotate obrót wokóª wªasnej osi. W dalszej cz ±ci przedstawiona jest skªadnia poszczególnych polece«oraz przykªady ich u»ycia. 2.1 Polecenie Polecenie to powoduje ruch robota do przodu z zadan pr dko±ci na odcinku drogi o zadanej dªugo±ci. Skªadnia polecenia: pr dko± _robota dªugo± _drogi Zakªada si,»e jednostkami parametrów s odpowiednio: [ mm ], [mm]. s Pr dko± robota mo»e by dodatnia (jazda do przodu) lub ujemna (jazda do tyªu) lub te» zero (zatrzymanie robota). W tym ostatnim przypadku dªugo± drogi musi mie równie» warto± 0. Dªugo± drogi musi by liczb nieujemn. 2.2 Polecenie Turn Robot ma mie mo»liwo± skr tu po zadanym ªuku. Operacj t umo»liwia polecenie Turn. Jego parametrami s : pr dko± robota, dªugo± drogi i promie«krzywizny ªuku. Skªadnia polecenia: Turn pr dko± _robota dªugo± _drogi promie«_krzywizny Zakªada si,»e jednostkami parametrów s odpowiednio: [ mm ], [mm], [mm]. s Zakres i interpretacja dopuszczalnych warto±ci pr dko±ci i dªugo±ci drogi s analogiczne jak we wcze±niejszym przypadku. W przypadku promienia krzywizny toru ruchu przyjmuje si,»e jego warto± musi by ró»na od zera. Dla warto±ci dodatnich skr t jest realizowany w lewo, za± dla warto±ci ujemnych w kierunku przeciwnym. 1

2.3 Polecenie Rotate Zmiana orientacji robota mo»na dokona nie tylko poprzez skr t po ªuku, ale równie» poprzez obrót wokóª wªasnej osi. Temu sªu»y niniejsze polecenie. Parametrami jego s pr dko± k towa i dªugo± ªuku. Skªadnia polecenia: Rotate pr dko± _k towa k t_obrotu Zakªada si,»e jednostkami parametrów s odpowiednio: [ s ] (stopnie na sekund ), [ ] (stopnie). K t obrotu (podobnie jak we wcze±niejszych przypadkach droga) mo»e by warto±ci nieujemn. Pr dko± k towa mo»e by warto±ci ujemn (obrót w prawo) lub warto±ci dodatni (obrót w lewo) lub te» warto±ci 0 (zatrzymanie robota). 2.4 Przykªad u»ycia polece«poni»ej przedstawiona jest przykªadowa sekwencja wcze±niej opisywanych polece«. Sekwencja ta mo»e znale¹ si w pliku tekstowym, który b dzie musiaª zosta wczytany przez program. W pliku tym mog wyst pi polecenia dla preprocesora j zyka C, które musz by poprawnie zinterpretowane. #define TURN_SPEED 30 /* * Przykªadowy zestaw polece«*/ 10 10 // Start niezbyt szybki 40 100 // A teraz przy±pieszamy Turn TURN_SPEED 40 25 0 0 Rotate 30 60 40 50 0 0 3 Wymagania co do programu Program realizuj cy sformuªowane wcze±niej zadanie ma by napisany w j zyku ANSI C++11. Ma on dostarcza proste tekstowe menu. Ksztaªt ±cie»ki wzdªu» której przejedzie robot powinien zosta zapisany w pliku tekstowym, jako zbiór wspóªrz dnych punktów. Wspóªrz dne pojedynczego punktu powinny by zapisane w jednej linii, mi dzy liniami nie powinno by»adnych odst pów, np. 0 0 1.5 1.0 1.45 1.5 Menu programu powinno pozwala na wykonanie nast puj cych operacji: wczytanie nazwy pliku sekwencji instrukcji dla robota mobilnego (w pliku mog by instrukcje dla preprocesora j zyka C), w przypadku napotkania niedozwolonej warto±ci parametru polecenia lub te» bª dnej nazwy polecenia, program powinien przerwa wczytywanie pliku i zgªosi bª d, 2

wy±wietlenie sekwencji instrukcji z danego pliku (bez instrukcji dla preprocesora), w trakcie wy±wietlenia nale»y sprawdzi równie» poprawno± skªadni polecenia, je-»eli wyst pi bª d, to przerywamy realizacj tej operacji i wy±wietlamy odpowiedni komunikat. wykonanie sekwencji ruchu zapisanych w pliku, wy±wietlenie listy dopuszczalnych polece«i ich skªadni, dodanie nowej wtyczki, usuni cie wtyczki, zako«czenie dziaªania programu. Dla uproszczenia zakªada si,»e przed ka»dorazowym wykonaniem sekwencji wczytanych instrukcji wspóªrz dne robota to (x, y, α) = (0, 0, 0 ). W ramach realizacji zadania nale»y równie» stworzy trzy wtyczko (odpowiadaj ce opisanym wcze±niej poleceniom), które specykacja opisana jest w rozdziale??. Mo»na tego typu wtyczek wykona wi cej tworz c w ten sposób wªasny zestaw instrukcji. 4 Przykªad uruchomienia i interakcji z programem Niniejszy przykªad demonstruje posta menu i przykªadowe komunikaty w trakcie dziaªania programu. SunOS 21>./interp4rob w - wczytanie nazwy pliku sekwencji instrukcji dla robota p - pokaz sekwencje instrukcji i - pokaz dostepne instrukcje/wtyczki s - start wykonywania sekwencji instrukcji a - dodaj nowa wtyczke d - usun wtyczke? - wyswietl ponownie menu k - koniec dzialania programu Twoj wybor (? - menu): w Podaj nazwe pliku: ruch_robota.cmd Twoj wybor (? - menu): p 10 30 Turn 30 40 30 25 100 Twoj wybor (? - menu): i Turn speed[mm/s] dist[mm/s] speed[mm/s] dist[mm/s] radius[mm] 3

Rotate ang_speed[deg/s] ang[deg] Twoj wybor (? - menu): k Koniec dzialania programu. SunOS 21> _ 5 Interfejs klas Poni»ej podana jest specykacja metod klasy bazowej Command, z której wyprowadzone zostanie ka»de z polece«: virtual void PrintCmd() wy±wietla nazw polecenia i warto±ci jego parametrów, np. dla polecenia wy±wietlony tekst mo»e mie posta : 20.0 30.4 40 virtual void PrintSyntax() wy±wietla nazw i skªadni danego polecenia, np.: speed[mm/s] dist[mm/s] virtual const char* GetCmdName() zwraca wska¹nik do napisu b d cego nazw danego polecenia. W przypadku polecenia b dzie to wska¹nik na napis. virtual bool ExecCmd(RobotPose *probpose) wykonuje dane polecenie. Parametry metody maj nast puj ce znaczenie: probpose wska¹nik na obiekt, w którym zapisane jest poªo»enie i orientacja robota. W momencie wywoªania struktura ta zawiera pocz tkow poz robota. Po zako«czeniu dziaªania metody, zapisane zostaj tu wspóªrz dne i orientacja ko«cowa robota. Struktura RobotPose zdeniowana jest nast puj co: class RobotPose public: bool Set( double x_mm, double y_mm, double alpha_deg ) RobotPose::x_mm = x_mm; RobotPose::y_mm = y_mm; RobotPose::alpha_deg = alpha_deg; return AfterUpdate(); bool Set( double x_mm, double y_mm ) RobotPose::x_mm = x_mm; RobotPose::y_mm = y_mm; return AfterUpdate(); void Get( double &x_mm, double &y_mm, double &alpha_deg ) x_mm = RobotPose::x_mm; y_mm = RobotPose::y_mm; alpha_deg = RobotPose::alpha_deg; 4

protected: /*! * Metoda wywoªywana jest po aktualizacji poªo»enia i orientacji * lub samego poªo»enia. * \retval true - gdy operacja powiodªa si, * \retval false - w przypadku przeciwnym. */ virtual bool AfterUpdate() = 0; private: double ; x_mm, y_mm, alpha_deg; Zakªada si,»e k t wyra»ony jest w stopniach, za± wspóªrz dne poªo»enia w milimetrach. Metoda ExecCmd mo»e zwraca jedn z dwu warto±ci: true je»eli operacja zako«czyªa si powodzeniem, false w przypadku przeciwnym. virtual bool ReadParams(istream& Strm_CmdsList) wczytuje z ci gu tekstowego list parametrów wªa±ciwych dla danego polecenia. Opis parametrów: Strm_CmdsList strumie«wej±ciowy zawieraj cy list polece«robota z ich parametrami. Po poprawnym zako«czeniu operacji wczytywania polecenia, metoda ReadParams zwraca warto± true. Je±li operacja czytania nie powiodªa si, to zwracana jest warto± false. W takim przypadku metoda mo»e wy±wietla równie» na wyj±ciu standard error dodatkowe komunikaty, które mog wskazywa ¹ródªo problemu. 6 Wersja rozszerzona 2D Proponuje wykorzysta si moduª lacze_do_gnuplota dla wizualizacji ±cie»ki robota 2D i animacji jego ruchu. 7 Wersja bardziej rozszerzona 3D Analogicznie jak w przypadku powy»ej proponuje wykorzysta si moduª lacze_do_gnuplota dla wizualizacji ±cie»ki robota 3D i animacji jego ruchu. 8 Materiaªy pomocnicze W podkatalogu bk/edu/zamp/zad1 zostaªy umieszczone podstawowy zal»ek programu. Znajduje si w nim denicja klasy bazowej Command oraz wst pna konguracja dla systemu generacji dokumentacji doxygen. Oprócz tego znajduj wst pne zal»ki dla rozszerze«2d i 3D. 5