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

Podobne dokumenty
2 Skªadnia polece«w pliku

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

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

Zad. 6: Sterowanie robotem mobilnym

Elementy animacji sterowanie manipulatorem

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++

Lekcja 3 Banki i nowe przedmioty

Zad. 1: Sterowanie mimika

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

Podstawy modelowania w j zyku UML

Zad. 5: Sterowanie robotem mobilnym

InsERT GT Własne COM 1.0

Lekcja 5 Programowanie - Nowicjusz

Wzorce projektowe strukturalne cz. 1

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

PERSON Kraków

Subversion - jak dziaªa

Lekcja 6 Programowanie - Zaawansowane

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

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Podstawy modelowania w j zyku UML

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

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Konfiguracja historii plików

Programowanie wspóªbie»ne

Edyta Juszczyk. Akademia im. Jana Dªugosza w Cz stochowie. Lekcja 1Wst p

Lab. 02: Algorytm Schrage

Lekcja 12 - POMOCNICY

Wzorce projektowe kreacyjne

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

Metodydowodzenia twierdzeń

Ekstremalnie fajne równania

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Wykªad 4. Funkcje wielu zmiennych.

V. Wymagania dla wsparcia projektu oraz nadzoru eksploatacyjnego... 6

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

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

Lekcja 9 Liczby losowe, zmienne, staªe

Programowanie wspóªbie»ne

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

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

2 Liczby rzeczywiste - cz. 2

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

Aproksymacja funkcji metod najmniejszych kwadratów

Tworzenie aplikacji internetowych E14

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

1 Stos: Stack i Stack<T>

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

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

Programowanie i struktury danych 1 / 44

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Archiwum Prac Dyplomowych

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

Wojewódzki Konkurs Matematyczny

Programowanie i struktury danych

r = x x2 2 + x2 3.

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)

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

Użytkowanie elektronicznego dziennika UONET PLUS.

Instrukcja programu PControl Powiadowmienia.

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

Automatyzacja procesu publikowania w bibliotece cyfrowej

VinCent Office. Moduł Drukarki Fiskalnej

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Edycja geometrii w Solid Edge ST

Logowanie do systemu Faktura elektroniczna

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

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

Informacje o omawianym programie. Założenia programu omawianego w przykładzie

Programowanie wspóªbie»ne

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Zad.1 Pokazać pierwszeństwo trybu odmów przed zezwalaj.

Microsoft Management Console

Urządzenia do bezprzerwowego zasilania UPS CES GX RACK. 10 kva. Wersja U/CES_GXR_10.0/J/v01. Praca równoległa

Zad. 7: Sterowanie manipulatorem przypadek 3D

Instrukcja wprowadzania ocen do systemu USOSweb

Rozbudowa domu przedpogrzebowego na cmentarzu komunalnym w Bierutowie. Specyfikacja techniczna wykonania i odbioru robót budowlanych - Okna i drzwi

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

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

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

POLITECHNIKA WROCŠAWSKA WYDZIAŠ ELEKTRONIKI PRACA DYPLOMOWA MAGISTERSKA

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

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

elektroniczna Platforma Usług Administracji Publicznej

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

Kompozycja i dziedziczenie klas

Przykªady problemów optymalizacji kombinatorycznej

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

2.1 INFORMACJE OGÓLNE O SERII NX

Warstwy. 1. MenedŜer warstw ROZDZIAŁ 7.

Zad. 5: Sterowanie dronem

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Bazy danych. Andrzej Łachwa, UJ, /15

Model obiektu w JavaScript

UWAGA! PRZECZYTAJ NAJPIERW:

Transkrypt:

Interpreter opisu dziaªa«quadrokoptera wtyczki 1 Ogólny opis zadania Bazuj c na wcze±niej napisanym programie nale»y go przerobi w ten sposób, aby ka»dy rodzaj z wczytywanych polece«byª obsªugiwany przez odpowiedni moduª w postaci osobnej wspóªdzielonej biblioteki (ang. shared library). Program powinien dopuszcza mo»liwo± rozszerzenia skªadni opisu ruchu zrobotyzowanego quadrokoptera poprzez dopuszczenie istnienia nowych polece«, które b d mogªy by dodawane w trakcie dziaªania programu. Mechanizm ma bazowa na wtyczkach, które b d dynamicznie konsolidowanymi bibliotekami. Wª czenie jednej wtyczki ma umo»liwia interpretacj pojedynczego nowego polecenia. Nale»y przyj,»e dotychczasowe polecenia b d tak»e dodawane do programu na starcie zgodnie z opisanym mechanizmem. Utworzone wtyczki maj dostarcza mechanizmów sterowania robotem. W oparciu o stworzony j zyk polece«nale»y napisa skrypt, który pozwoli przemie±ci si robotowi wzdªu» ±cie»ki opisanej w podrozdziale 4 i dokona prostej manipulacji obiektami na scenie roboczej. Stan sceny ma by opisany w zewn trznym pliku bazuj cym na skªadni XML. Gramatyka pliku jest przedstawiona na przykªadzie opisu zawartego w rodziale 4. W obecnym zadaniu zakªadamy,»e quadrokopter ma chwytak podwieszony po spodem. Pozwala on chwyci dany przedmiot i przenie± w inne miejsce. W podstawowej wersji zadania traktujemy, b dziemy traktowa przenoszone obiekty jako niewa»kie. Oprócz wymienionych cech program ma udost pnia u»ytkownikowi histori polece«na tej samej zasadziej, jak to jest zrobione np. w powªoce bash (naci±ni cie strzaªki w gór poprzednie polecenie). Do implementacji historii polece«i odpowiedniego zaproszenia nale»y wykorzysta bibliotek funkcje z pakietu readline. 2 Skªadnia nowych polece«nale»y oprogramowa jedno nowe polecenia w postaci wcze±niej wspomnianej wtyczki. S nimi: Grasper chwycenie przedmiotu (zamkni cie chwytaka) lub jego zwolnienie (otwarcie chwytaka). Zakªadamy,»e robot mo»e chwyci obiekt, gdy ustawiony bezpo- ±rednio nad nim. W wersji podstawowej mo»na traktowa,»e quadrokopter jest obiektem punktowym (podobnie jak sam przedmiot). W dalszej cz ±ci przedstawiona jest skªadnia polecenia oraz przykªad jego u»ycia. Przykªad konstrukcji quadrokoptera wyposa»onego w chwytak jest przedstawiony na rys. 1. 2.1 Polecenie Grasper Powoduje zaci±niecie chwytaka lub jego zwolnienie. Skªadnia polecenia: Grasper stan_chwytaka; Parametr stan_chwytaka mo»e przyjmowa dwie warto±ci 0 lub 1. Odzwierciedlaj one fakt,»e chwytak zostaª opuszczony i zwolniony lub zaci±ni ty i podniesiony. Chwytak mo»e uchwyci obiekt punktowy, o ile wspomniany obiekt znajduje si wzgl dem efektora w odlegªo±ci nie wi kszej ni» 0, 1mm. Zakªadamy,»e chwytak umieszczony pod spodem quadrokoptera w jego centralnej cz ±ci. Zakªada si ponadto,»e operacja chwycenia lub te» zwolnienia obiektu trwa 1s. 1

Rysunek 1: Przykªad realizacji quadrokoptera z chwytakiem oraz implementacji chwytu charakterystycznego dla ptaków drapie»nych (¹ródªo: http://www.youtube.com/watch?v=ol8c9bdp7yi) 2

3 Interfejs polece«i wtyczek W tym przypadku przez interfejs rozumiana jest specykacja funkcji, które musz by dostarczone przez bibliotek wspóªdzielon. Tak wi c ka»da wtyczka musi zawiera implementacje wspomnianych funkcji. Funkcje te to: void PrintSyntax() wy±wietla nazw i skªadni danego polecenia, np.: Rotate angle_speed[deg/s], angle_change[deg]; Command* CreateCmd() tworzy obiekt klasy dziedzicz cej klas Command. Funkcja zwraca wska¹nik na podobiekt klasy Command zawarty w obiekcie klasy pochodnej. const char* GetCmdName() zwraca wska¹nik do napisu b d cego nazw danego polecenia. W przypadku polecenia Rotate b dzie to wska¹nik na napis Rotate. 4 Organizacja sceny Zakªadamy,»e w chwili pocz tkowej poza robota to (0mm, 0mm, 0mm, 0 ). Na scenie znajduj si trzy obiekty punktowe A, B i C. Ich poªo»enie to A = (5, 5, 0), B = (10, 5, 0) i C = (15, 5, 0). Opis sceny zakªadamy,»e jest zwarty w zewn trznym pliku scena.xml Plik powinien mie posta <Scene xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation='grammar/scene.xsd' > <Object Name="A"> <Parameter Name="Coordinate_x" Value="5"/> <Parameter Name="Coordinate_y" Value="5"/> <Parameter Name="Coordinate_z" Value="0"/> </Object> <Object Name="B"> <Parameter Name="Coordinate_x" Value="10"/> <Parameter Name="Coordinate_y" Value="5"/> <Parameter Name="Coordinate_z" Value="0"/> </Object> <Object Name="A"> <Parameter Name="Coordinate_x" Value="15"/> <Parameter Name="Coordinate_y" Value="5"/> <Parameter Name="Coordinate_z" Value="0"/> </Object> </Scene> Zadanie: Dla opisanej sceny nale»y napisa skrypt steruj cy prac robota, tak aby dokonaª on odpowiedniego przemieszczenia obiektów (i mo»e kªa± jeden obiekt na drugim). Po zako«czeniu swoich dziaªa«robot powinien mie poz (0, 0, 0, 0 ) za± poªo»enia obiektów, to A = (15, 5, 0), B = (5, 5, 0) i C = (10, 5, 0). Uwaga: Test poprawno±ci dziaªania b dzie objemowaª zmian pozycji obiektów. Je±li obiekt b dzie w innej pozycji, to robot nie powinien go chwyci. Jednak nadal powinien porusza si wzdªu» zadanej ±cie»ki i wykona reszt polece«. 3

5 Wymagania co do programu Podobnie jak w przypadku poprzedniego zadania program ma dostarcza proste menu tekstowe. Menu programu powinno zawiera wszystkie elementy, który byªy dost pne we wcze±niejszym zadaniu. Oprócz tego nale»y rozszerzy pozycj menu pokazuj c stan robota o wy±wietlanie stanu sceny, tzn. poªo»enia obiektów A, B i C. W menu musi si równie» znale¹ opcja umo»liwiaj ca zaªadowanie nowej wtyczki. Jak te» zwolnienie jednej z ju» zaªadowanych wtyczek. W momencie startu program powinien ªadowa wtyczki odpowiadaj ce za interpretacj i wykonanie polece«fly i Rotate. Wtyczki odpowiedzialne za polecenie Grasper powinna by ªadowana na» danie poprzez wykorzystanie nowej opcji z menu. Ksztaªt ±cie»ki wzdªu» której przemie±ci si robot powinien zosta zapisany w pliku tekstowym, jako zbiór wspóªrz dnych kolejnych punktów. Wspóªrz dne pojedynczego punktu powinny by zapisane w jednej linii. Orientacja quadrokoptera powinna by zapisana po znaku '#'. Mi dzy liniami nie powinno by»adnych odst pów, np. 1.0 0.0 1.0 # 0 2.3 0.0 2.5 # 0 2.3 0.0 2.5 # 90 2.3 4.8 2.0 # 90 Plik z zapisan ±cie»k ruchu powinien mie nazw sciezka.dat. Moment chwycenia i trzymania obiektu powinien by równie» zapisany po znaku '#', np. 2.3 0.0 2.5 # 0 2.3 0.0 0.0 # 0 2.3 0.0 0.0 # 0 Chwycil obiekt A 2.3 0.0 2.5 # 0 Trzyma obiekt A 2.3 0.0 2.5 # 90 Trzyma obiekt A 2.3 2.0 2.5 # 90 Trzyma obiekt A 2.3 2.8 0.0 # 90 Trzyma obiekt A 2.3 2.8 0.0 # 90 Puscil obiekt A 2.3 2.8 2.0 # 90 6 Przykªad uruchomienia i interakcji z programem Niniejszy przykªad demonstruje posta menu i przykªadowe komunikaty w trakcie dziaªania programu. Dotyczy on wersji podstawowej, w której zakªada si,»e robot jest punktem materialnym. SunOS 21>./interp4qk w - wczytanie z pliku sekwencji instrukcji dla robota p - pokaz wczytana sekwencje instrukcji i - pokaz dostepne instrukcje s - start wykonywania sekwencji instrukcji q - stan robota i sceny d - dodanie nowej wtyczki (instrukcji) u - usuni cie wtyczki (instrukcji)? - wyswietl ponownie menu 4

k - koniec dzialania programu Twoj wybor (? - menu): i Fly Rotate speed_hor[m/s], speed_ver[m/s], dist[m]; ang_speed[deg/s], ang[deg]; Twoj wybor (? - menu): d Podaj nazwe polecenia, dla ktorego ma zostac dodana wtyczka. Nazwa polecenia: Grasper :) Polecenie zostalo poprawnie dodane. Twoj wybor (? - menu): i Grasper state; Fly speed_hor[m/s], speed_ver[m/s], dist[m]; Rotate ang_speed[deg/s] ang[deg]; Twoj wybor (? - menu): w Podaj nazwe pliku: przelot_robota.cmd Plik 'przelot_robota.cmd' zostal wczytany poprawnie. Twoj wybor (? - menu): p Grasper 0; Fly 0, 0.5, 1; Fly 2, 0, 5; Rotate 60, 90; Fly 2, 0, 5; Fly 0, -0.25, 1; Grasper 1; Fly 0, 0.4, 1; Twoj wybor (? - menu): q Robot: ( 5.0, 5.0, 1.0, 90 ); A: ( 5.0, 5.0, 1.0 ) B: ( 10.0, 5.0, 0.0 ) C: ( 15.0, 5.0, 0.0 ) Twoj wybor (? - menu): s 5

Wykonaje polecenie: Grasper 0 t= 1.00; Chwytak otwarty. Brak obiektu. Wykonuje polecenie: Fly 0, 0.5, 1; t= 2.00; Robot = ( 0, 0, 1, 0 ); Wykonuje polecenie: t = 2.00; Robot = ( 0, 0, 1, 0 ); Wykonuje polecenie: Fly 2, 0, 5; t = 4.50; Robot = ( 5, 0, 1, 0 ); Wykonuje polecenie: Rotate 60, 90; t = 6.00; Robot = ( 5, 0, 1, 90 ); Wykonuje polecenie: Fly 2, 0, 5; t = 8.50; Robot = ( 5, 5, 1, 90 ); Wykonuje polecenie: t = 8.50; Robot = ( 5, 5, 1, 90 ); Wykonuje polecenie: Fly 0, -0.25, 1; t = 12.50; Robot = ( 5, 5, 0, 90 ); Wykonuje polecenie: Grasper 1; t = 12.50; Robot = ( 5, 5, 0, 90 ); Chwycony obiekt A Wykonuje polecenie: Fly 0, 0.4, 1; t = 15.00; Robot = ( 5, 5, 0, 90 ); Trzyma obiekt A 6

Wykonuje polecenie: t = 15.00; Robot = ( 5, 5, 0, 90 ); Trzyma obiekt A Koniec ciagu polecen Twoj wybor (? - menu): q Robot: ( 5.0, 5.0, 1.0, 90.0); A: ( 5.0, 0.0, 1.0) -> Obiekt jest w chwytaku robota B: ( 10.0, 5.0, 0.0) C: ( 15.0, 5.0, 0.0) Twoj wybor (? - menu): k Koniec dzialania programu. SunOS 22> _ 7 Rozszerzenia 7.1 Wersja 2D najprostsza Zakªadaj c,»e robot ma rozmiary punktowe proponuje wykorzysta si moduª lacze_do_gnuplota dla wizualizacji ±cie»ki robota 2D i animacji jego ruchu. Zaznaczenie poªo»enia punktów trzeba zrealizowa wykorzystuj c tryb rysowania punktowy A, B i C. Sposób ten pokazany jest z zaª czonym przykªadzie. 7.2 Wersja 2D ciekawsza Nale»y przyj,»e robot ma pewne rozmiary. Proponuje si wizualizowa go jako prostok t z zaznaczeniem frontu robota. Do wizualizacji proponuje si wykorzysta moduª lacze_do_gnuplota zarówno do animacji samego robota jak te» wizualizacji ±cie»ki jego ruchu i poªo»enia punktów A, B i C. Zaznaczenie poªo»enia punktów trzeba zrealizowa wykorzystuj c tryb rysowania punktowy. Sposób ten pokazany jest z zaª czonym przykªadzie. 7.3 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. Zaznaczenie poªo»enia punktów trzeba zrealizowa wykorzystuj c tryb rysowania punktowy. Sposób ten pokazany jest w zaª czonym przykªadzie. 7