Zad. 1: Sterowanie mimika

Podobne dokumenty
Zad. 5: Sterowanie robotem mobilnym

Zad. 7: Sterowanie manipulatorem przypadek 3D

Zad. 5: Sterowanie dronem

Zad. 6: Sterowanie robotem mobilnym

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

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

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

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

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

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

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

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

Laboratorium nr 4: Arytmetyka liczb zespolonych

Polcode Code Contest PHP-10.09

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

Zad. 7: Fabryka obiektów i singleton

Zadanie 2: Arytmetyka symboli

Układ równań liniowych

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Utworzenie pliku. Dowiesz się:

I. Interfejs użytkownika.

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Kilka prostych programów

Zad. 7: Fabryka obiektów i singleton

Pomorski Czarodziej 2016 Zadania. Kategoria C

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Tematy lekcji informatyki klasa 4a luty/marzec 2013

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Dokumentacja Systemu INSEMIK II Podręcznik użytkownika część V Badania buhaja INSEMIK II. Podręcznik użytkownika Moduł: Badania buhaja

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Ćwiczenie: JavaScript Cookies (3x45 minut)

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Baltie. Programujemy historyjki

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

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego

Wykład PASCAL - Pliki tekstowe

lekcja 8a Gry komputerowe MasterMind

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

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

Szczegółowe wymagania dotyczące funkcjonalności systemu informacji pasażerskiej.

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Struktura pliku wejściowego ippk Plik Rejestracyjny

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Zakład Systemów Rozproszonych

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

ERGODESIGN - Podręcznik użytkownika. Wersja 1.0 Warszawa 2010

1 Moduł Neuronu Cyfrowego SM

1 Moduł Modbus ASCII/RTU 3

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Zadanie nr 2: Arytmetyka liczb zespolonych

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

1 Powtórzenie wiadomości

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Programowanie obiektowe

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

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.

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Aktywacja. Wstęp. Zakładanie nowej firmy. Rejestracja programu. Aktywacja danych firmy. Zmiana danych firmy

Wykład 4. Środowisko programistyczne

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Napisy w PHP. Drukowanie napisów instrukcją echo

Makropolecenia w PowerPoint Spis treści

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Warunek wielokrotnego wyboru switch... case

1 Moduł Inteligentnego Głośnika

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Integracja KS-ASW i KS-Medis z system CATO

1 Moduł Inteligentnego Głośnika 3

1. Skopiować naswój komputer: (tymczasowy adres)

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

INSTRUKCJA obsługi certyfikatów

Pokaz slajdów na stronie internetowej

Współpraca FDS z arkuszem kalkulacyjnym

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Przyspieszenie na nachylonym torze

I. EDUKACJA WCZESNOSZKOLNA

Struktura pliku wejściowego ipko biznes przelewy zagraniczne (MT103 / CSV)

Wymagania Uczeń zna zasady bezpiecznej pracy z komputerem. Uczeń stosuje się do regulaminu szkolnej pracowni komputerowej.

Łączenie liczb i tekstu.

IX. Wskaźniki.(3 godz.)

Podstawy JavaScript ćwiczenia

5.2. Pierwsze kroki z bazami danych

Kurs walut. Specyfikacja projektu. Marek Zając

1 Przygotował: mgr inż. Maciej Lasota

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Programowanie w językach wysokiego poziomu

Computer Setup Instrukcja obsługi

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Dokumentacja Końcowa

1 Moduł Konwertera. 1.1 Konfigurowanie Modułu Konwertera

Transkrypt:

1 Cel ćwiczenia Zad. 1: Sterowanie mimika twarzy Wykształcenie umiejętności posługiwania się złożonymi makrami preprocesora języka C. Stworzenie podstawowej struktury wizualizacji twarzy robota, która będzie wykorzystywana w następnych zadaniach. 2 Ogólny opis zadania Należy napisać program, który będzie w stanie przeczytać z pliku tekstowego sekwencję poleceń sterujących mimiką twarzy robota. Program będzie musiał zasymulować działanie głowy robot. Powinien on również udostępniać proste tekstowe menu, które ma umożliwiać: wczytanie z pliku tekstowego sekwencji instrukcji i jednoczesne ich wykonanie, wyświetlenie dostępnych instrukcji, zakończenie działania programu. Ponadto zakładamy, że w pliku z sekwencją poleceń możemy zastosować wszystkie udogodnienia, które dostarcza preprocesor języka C. W trakcie wczytywania i wykonywania sekwencji poleceń tuż przed jego realizacją powinna wyświetlić się pełna postać polecenia wraz z wartościami jego parametrów (patrz podrozdział 5). Jako test działania programu należy opracować sekwencję poleceń, które umożliwią ekspresję radości oraz smutku. 3 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 przecinkami. Znakiem kończącym listę jest znak średnika. Zakłada się, że program powinien obsługiwać dwa polecenia: Pauza wstrzymanie działania programu na określoną ilość czasu, Oko określa stopień otwarcia oka i szybkość przejścia do nowej konfiguracji. Usta określa wzajemne położenie dolnej i górnej wargi ust oraz oddalenie kącików ust, określa również prędkość przejścia do nowego ułożenia ust, W dalszej części jest przedstawiona składnia poszczególnych poleceń oraz przykłady ich użycia. 3.1 Polecenie Pauza Polecenie to wstrzymuje działanie programu na zadany czas. Jest on wyrażony w mikrosekundach. Pauza ilość_mikrosekund; Podana ilość mikrosekund może być wyłącznie liczbą nieujemną (a więc może być zerem). Górnym ograniczniem jest zakres wartości typu int dla kompilatora języków C/C++. Przykład użycia polecenia: 1

Pauza 100000; Powoduje ono wstrzymanie działania programu na okres 0,1 sekundy. 3.2 Polecenie Oko Określenia stan oka, tzn. zarys jego dolnej i górnej powieki. Definiuje również szybkość przejścia ze stanu poprzedniego do aktualnego. Oko id_oka, położenie_dolnej_powieki, położenie_górnej_powieki, szybkość_zmiany; Pierwsza wartość, tzn. id_oka, jest identyfikatorem oka określającym, czy polecenie odnosi się do prawego lub lewego oka. Jednak nie ogranicza ona ilość oczu. Położenie zarysu powiek jest wyrażone w jednostkach niemianowanych. Przyjmuje się, że mieści się ono w przedziale [ 100, 100]. Interpretacja tych wartości zależy od przyjętej koncepcji reprezentacji graficznej oka. Jednym z możliwych podejść jest założenie, że wartość ta odpowiada za stopień i rodzaj wypukłości kształtu powieki. Tak więc wartości ujemne mogą odpowiadać, za stopień wypukłości w dół, zaś wartości ujemne za stopień wypukłości w górę. Szybkość zmiany położenia powiek zakładamy, że wyraża procentową szybkość zmiany położenia powieki między jej dotychczasowym położeniem, a docelowym, w ciągu jednej sekundy. Zakładamy ponadto, że wartość ta jest zawsze liczbą dodatnią. Tak więc, jeśli chcemy, aby powieki osiągnęły swoje położenie docelowe w ciągu 1s, to należy zadać szybkość 100. Jeśli natomiast chcemy, aby położenie docelowe zostało osiągnięte w ciągu 0, 5s, to powinniśmy zadać wartość 200. Przykład użycia polecenia: 3.3 Polecenie Usta Oko 1, -20, 60, 150; Determinuje stan kształtu ust, tzn. zarys ich dolnej i górnej wargi. Definiuje również szybkość przejścia ze stanu poprzedniego do aktualnego. Usta położenie_dolnej_wargi, położenie_górnej_wargi, oddalenie_kacików_ust, szybkość_zmiany; Położenie zarysu ust jest wyrażone w jednostkach niemianowanych. Przyjmuje się, że mieści się ono w przedziale [ 100, 100]. Interpretacja tych wartości, podobnie jak w przypadku oka, zależy od przyjętej koncepcji reprezentacji graficznej. Analogicznie jak w przypadku oka można założyć, że wartość ta odpowiada za stopień i rodzaj wypukłości kształtu wargi. Tak więc wartości ujemne mogą odpowiadać, za stopień wypukłości w dół, zaś wartości ujemne za stopień wypukłości w górę. Oddalenie kącików usta wyrażone jest w jednostkach niemianowanych zawierających się w przedziale [ 100, 100]. Zakładamy, że wartość 0 odpowiada pozycji neutralnej. Natomiast wartości dodatnie odpowiadają za zwiększenie odległości między kącikami ust. Pozwala to stworzyć szeroki uśmiech. Wartości ujemne mają umożliwiać zmniejszenie tej odległości, co daje możliwość stworzenia wrażenia np. zdziwienia. Szybkość zmiany położenia wargi zakładamy, że wyraża procentową szybkość zmiany położenia między jej dotychczasowym położeniem, a docelowym, w ciągu jednej sekundy. Zakładamy również, że wartość ta jest zawsze liczbą dodatnią. Interpretacja prędkości zmian jest taka sama jak w przypadku oka. Przykład użycia polecenia: 2

Usta -60, -10, 20, 180; Intencją tego polecenia jest ukształtowanie ust w formie uśmiechu. Spowodowane to jest tym, że dolna warga będzie bardziej wypukła w dół niż górna. Następuje też zwiększenie odległości między kącikami usta. 3.4 Przykład użycia poleceń Poniżej przedstawiona jest przykładowa zawartość pliku z sekwencją wcześniej opisywanych poleceń. Zawiera ona również polecenia dla preprocesora, które powinny być wcześniej przetworzone przed przystąpnieniem do wczytywania właściwych poleceń. * Zakładamy, że startujemy od neutralnego wyglądu twarzy. #define SZYB_ZMIAN_DLA_USMIECHU 300 #define TRANZYCJA_OKA_USMIECH 20, 80, SZYB_ZMIAN_DLA_USMIECHU * Przejscie do fazy usmiechu Oko 0, TRANZYCJA_OKA_USMIECH; Oko 1, TRANZYCJA_OKA_USMIECH; Usta -60, -40, 30, SZYB_ZMIAN_DLA_USMIECHU; * Przez 1s utrzymujemy ekspresję twarzy niezmienioną. * Puszczenie "oczka" Oko 1, 30, 30, 300; // Zmrużenie oka Pauza 100000; // Krótka przerwa Oko 1, TRANZYCJA_OKA_USMIECH; // Powrót do stanu poprzedniego 4 Wymagania co do konstrukcji programu Program powinien być napisany w języku ISO C++11. W programie należy w odpowiedni sposób wywołać preprocesor, aby przetworzyć wczytywany plik poleceń. Ponadto w kodzie programu należy stworzyć makra, które wykorzystają konstrukcję tworzenia napisu (konstrukcje typu #x) oraz łączenia napisów (konstrukcje typu napis##x). W wersji podstawowej zadania w trakcie wczytywania pliku z instrukcjami jeżeli zostanie napotkania instrukcja, której parametry są spoza dopuszczalnego przedziału lub zostanie napotkany błąd składni, to powinna zostać wyświetlona informacja o błędzie. W tym pierwszym przypadku należy wyświetlić nazwę polecenia, którego dotyczy błąd oraz nazwę parametru i jego wczytaną wartość. Natomiast operacja egzekucji poleceń powinna zostać przerwana i program powinien wrócić na poziom obsługi swojego menu. 3

Kod programu powinien być zdokumentowany oraz zawierać diagram czynności w języku UML dla operacji czytania pliku i jego interpretacji. 5 Przykład uruchomienia i interakcji z programem Niniejszy przykład demonstruje postać menu i przykładowe komunikaty w trakcie działania programu. Zakłada się, że występujący w tym przykładzie plik ekspresja_twarzy.cmd ma identyczną zawartość z tą, która została przedstawiona w podrozdziale 3.4. SunOS 21>./interp4robface w - wczytanie z pliku sekwencji instrukcji i ich wykonanie i - pokaz dostepne instrukcje? - wyswietl ponownie menu k - koniec dzialania programu Twoj wybor (? - menu): i Pauza Oko Usta czas_us; id_oka, polozenie_dolnej_powieki, polozenie_gornej_powieki, szybkosc_zmian; pol_dolnej_wargi, pol_gornej_wargi, oddalenie_kacikow_ust, szybkosc_zmian; Twoj wybor (? - menu): w Podaj nazwe pliku: ekspresja_twarzy.cmd Wczytywanie i poczatek wykonywania pliku: Oko 0, 20, 80, 300; Oko 1, 20, 80, 300; Usta -60, -40, 30, 300; Oko 1, 30, 30, 300; Pauza 100000; Oko 1, 20, 80, 300; Koniec wykonywania pliku. Twoj wybor (? - menu): k Koniec dzialania programu. SunOS 21> _ 6 Materiały pomocnicze W podkatalogu bk/edu/zamp/zad1 jest umieszczony podstawowy zalążek programu. Zawiera on przykład użycia programu gnuplot do wygenerowania wizualizacji twarzy w wersji cyklopa. Jest tam również wstępna konfiguracja dla systemu generacji dokumentacji doxygen. 4

7 Rozszerzenia Realizacja dodatkowych poleceń odpowiadających za wizualizację brwi i ich odpowiednie sterowanie. Należy opracować sekwencję ekspresji, która pozwoli płynnie przejść między wyrazem radości, zdziwienia i smutku. Można również rozszerzyć obsługę błędów wczytywania plików z poleceniami. Należy to zrobić, tak aby w trakcie wczytywania pliku z instrukcjami jeżeli zostanie napotkania instrukcja, której parametry są spoza dopuszczalnego przedziału, to należy zgłosić informację o błędzie. Jednak program nie powinien przerywać procesu egzekucji poleceń. Powinno nastąpić przejście do następnej instrukcji. Podobnie w przypadku napotkania błędu składni w danej linii. Po jego zgłoszeniu powinna ona zostać pominięta i program powinien rozpocząć czytanie i interpretację następnej linii. Informacja o błędzie powinna objemować wyświetlenie tego co zostało wczytane w danym momencie i co było w tym miejscu oczekiwane. 5