Zad. 10: Sterowanie manipulatorem cz. 2 i 3



Podobne dokumenty
Zad. 7: Sterowanie manipulatorem przypadek 3D

Zad. 6: Sterowanie robotem mobilnym

Zad. 5: Sterowanie dronem

Zad. 5: Sterowanie robotem mobilnym

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

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

Zad. 7: Fabryka obiektów i singleton

Zad. 7: Fabryka obiektów i singleton

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

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

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

Zad. 1: Sterowanie mimika

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

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

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

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Laboratorium nr 4: Arytmetyka liczb zespolonych

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

Zadanie 2: Arytmetyka symboli

Programowanie obiektowe

Programowanie obiektowe

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

Wprowadzenie do UML, przykład użycia kolizja

Układ równań liniowych

Zadanie nr 2: Arytmetyka liczb zespolonych

na podstawie modelu 3D

Ćwiczenie nr 5 Zautomatyzowane tworzenie dokumentacji

Obsługa programu Soldis

1.1. Przykład projektowania konstrukcji prętowej z wykorzystaniem ekranów systemu ROBOT Millennium

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

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

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

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

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

PRZEKROJE RYSUNKOWE CZ.1 PRZEKROJE PROSTE. Opracował : Robert Urbanik Zespół Szkół Mechanicznych w Opolu

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

Ćwiczenie: JavaScript Cookies (3x45 minut)

Zadanie 11. Przygotowanie publikacji do wydrukowania

Diagramy UML, przykład problemu kolizji

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Programowanie w środowisku graficznym GUI

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

INSTRUKCJA DO ĆWICZENIA NR 3. Lokalny układ współrzędnych oraz sposoby jego modyfikacji. Plecenie kreskuj i wypełnij.

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

Programowanie obiektowe

47. Ćwiczenia przejściowe

Przypisy i przypisy końcowe

62. Redagowanie rzutów 2D na podstawie modelu 3D

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

DARMOWA PRZEGLĄDARKA MODELI IFC

Utworzenie pliku. Dowiesz się:

CalendarGenerator v0.1 - instrukcja obsługi

Zadanie 9. Projektowanie stron dokumentu

SolidWorks 2012 odpowiedzi na często zadawane pytania Jerzy Domański, Uniwersytet Warmińsko-Mazurski w Olsztynie, jdom@uwm.edu.pl

3D Analyst. Zapoznanie się z ArcScene, Praca z danymi trójwymiarowymi - Wizualizacja 3D drapowanie obrazów na powierzchnie terenu.

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

Laboratorium 10: Maszyna stanów

KŁAD NIETYPOWA ODMIANA PRZEKROJU

1. Opis okna podstawowego programu TPrezenter.

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

Rzutowanie z 4D na 3D

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

EXCEL. Diagramy i wykresy w arkuszu lekcja numer 6. Instrukcja. dla Gimnazjum 36 - Ryszard Rogacz Strona 20

Programowanie obiektowe

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie

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

Przedmiotowy system oceniania z informatyki

Korzystanie z aplikacji P-touch Transfer Manager

Andrzej Frydrych SWSPiZ 1/8

Kopiowanie ustawień SolidWorks

I. Interfejs użytkownika.

Dodawanie operacji dodatkowych w WAPRO Mag.

Pierwszy model od bryły do dokumentacji

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Jak wyskoczy okienko z listą miejsc to proszę odznaczyć pierwszą pozycję i poszukać swoją aptekę, zaznaczyć ją i OK.

Opis klawiatury komputerowej

System rejestracji wizyt w BIOBANKU Instrukcja uz ytkownika systemu

Nowe funkcjonalności w wersji Automatyczne uzupełnianie zakładek w dokumentach WORD przy podpisywaniu

Defekty Mr Buggy 4. Znane, nieznane i literówki (wybrane)

Notepad++ / PuTTY. Interaktywne środowisko programowania w języku ForthLogic. Wersja dokumentu P.1. Wersja dokumentu NP1.

Instrukcja konfiguracji programu Fakt z modułem lanfakt

Projekt wykonany w programie CAD Decor Pro 3. Do utworzenia dokumentacji wykonawczej klikamy przycisk Dokumentacja.

Katedra Zarządzania i Inżynierii Produkcji 2013r. Materiały pomocnicze do zajęć laboratoryjnych

1 Powtórzenie wiadomości

Instrukcja użytkownika systemu Komornik SQL-VAT

Jednolity Plik Kontrolny w IFK

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Sylabus Moduł 2: Przetwarzanie tekstów

BANK GOSPODARSTWA KRAJOWEGO. w systemie BGK@24BIZNES

Product Update Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6

Jednolity Plik Kontrolny w IFK

Topologia działek w MK 2013

Instalacja i obsługa aplikacji MAC Diagnoza EP w celu wykonania Diagnozy rozszerzonej

Podstawy obsługi aplikacji Generator Wniosków Płatniczych

rysunkowej Rys. 1. Widok nowego arkusza rysunku z przeglądarką obiektów i wywołanym poleceniem edycja arkusza

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

Techniki wstawiania tabel

Podręcznik Użytkownika LSI WRPO

Transkrypt:

Zad. 10: Sterowanie manipulatorem cz. 2 i 3 1 Cel ćwiczenia Zapoznanie się dziedziczeniem klas oraz mechanizmami niejawnego rzutowania w górę. Przyswojenie pojęcia klasy abstrakcyjnej i praktyczne jej wykorzystanie w programie. Wykształcenie umiejętności posługiwania się metodami wirtualnymi i metodami abstrakcyjnymi. 2 Program zajęć Ocena realizacji zadania z poprzedniego laboratorium ocenie podlega poprawność realizacji zadania, styl pisania programu oraz dokumentacja wygenerowana za pomocą systemu doxygen. Ocena przygotowania do zajęć ocenie podlega diagram klas i diagram czynności (patrz rozdział 4.1). 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 należy stworzyć uproszczoną wersję programu, która będzie rysowała dwa manipulatory. Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Niniejsze zadanie jest rozszerzeniem wcześniejszego zadania. Należy napisać program, który w otoczeniu manipulatora (tzn. na scenie roboczej) uwzględni obecność przeszkód dwojakiego typu. Są nimi przeszkody modelowane poprzez wieloboki oraz przeszkody, którymi są inne manipulatory. Teraz przy zmianie postury manipulatora należy sprawdzić czy w trakcie zmiany postury występuje kolizja, czy też nie. Jeśli wystąpi kolizja, to należy przerwać działanie programu i wyświetlić typ przeszkody (manipulator lub wielobok) oraz jej nazwę przeszkody. Następnie należy zakończyć działanie programu. Uwaga: W trakcie zmiany postury należy również sprawdzić, czy manipulator sam ze sobą nie koliduje. Tak więc manipulator sam dla siebie jest też przeszkodą. 4 Przygotowanie do zajęć 4.1 Tydzień 0 Przed zajęciami należy stworzyć diagram klas dla całego programu uwzględniającego tylko manipulatory jako przeszkody. Należy też stworzyć odpowiedni diagram czynności dla operacji sprawdzania kolizji danego manipulatora z innym manipulatorem. 1

4.2 Tydzień 1 Rysunek 1: Przykład wizualizacji sceny roboczej manipulatora Należy stworzyć diagram klas dla całego programu z uwzględnieniem wieloboków jako przeszkód. Tak więc teraz do zbioru przeszkód należą manipulatory, jak też wieloboki. Ponadto należy napisać diagram czynności sprawdzania kolizyjności dla manipulatora z wielobokiem oraz drugi czynności obrazujący sprawdzanie kolizyjności manipulatora ze wszystkimi przeszkodami na scenie roboczej. 5 Działanie programu Tak jak we wcześniejszej wersji programu, tak i w tej, program ma nie mieć żadnego menu. Wszystkie dane wczytywane są z plików, których nazwy podane są w linii wywołania programu. Składnia wywołania programu:./a.out plik_konfiguracji.dat plik_sceny.dat plik_postury1.dat [ plik_postury2.dat... ] Plik zawierający opis konfiguracji manipulatora oraz pliki postury manipulatora mają identyczną postać jak we wcześniejszej części zadania. Plik plik_sceny.dat zawiera opis sceny roboczej, tzn. rodzaj przeszkód i dane określające ich położenie. Ogólny schemat działania programu jest analogiczny jak w części pierwszej zadania. Program czyta konfigurację manipulatora oraz opis sceny roboczej. Wyświetlony zostaje manipulator oraz pozostałe elementy sceny, tzn. inne manipulatory oraz wieloboki. Następnie po 2s wczytuje pierwszą posturę i sprawdza czy koliduje ona z jakąś przeszkodą na scenie (tzn. wielobokiem, innym manipulatorem lub ze samym sobą). Następnie wyświetla aktualny stan sceny (niezależnie od tego czy jest kolizja czy też nie). Jeśli została stwierdzona kolizja, to program wyświetla informację z jaką przeszkodą nastąpiła kolizja (tzn. rodzaj przeszkody i jej nazwę, dla pierwszego manipulatora, który jest sterowany można przyjąć dowolną własną nazwę). Następnie przerywa czytanie nowych postur i przechodzi w stan oczekiwania na naciśnięcie klawisza ENTER, aby zakończyć działanie. Jeżeli w nowej konfiguracji manipulator nie koliduje z żadną przeszkodą, to program rysuje ją, odczekuje 1s i przechodzi do czytania następnej postury. 5.1 Składnia pliku opisu scen W pliku z opisem sceny w każdej linii umieszczone są dane dotyczące przeszkody znajdującej się na scenie roboczej. W pierwszym tygodniu zawartość pliku jest ograniczona tylko 2

do innych manipulatorów. W drugim tygodniu plik opisu sceny będzie uzupełniony o opisy przeszkód w postaci wieloboków. 5.1.1 Składnia pliku dla pierwszego tygodnia zadania Format pliku ma postać: M: nazwa_manipulatora1 (x0_1 y0_1) plik_konfiguracji.dat plik_postury.dat M: nazwa_manipulatora2 (x0_2 y0_2) plik_konfiguracji.dat plik_postury.dat... Pierwsze dwa znaki (tzn. M:) określają typ przeszkody. W tym przypadku odnoszą się one do manipulatora. Następnym elementem jest nazwa manipulatora. Stanowi ją ciąg znaków, który nie jest rozdzielony żadnym znakiem białym (spacja, znak tabulacji itd.). Kolejnym elementem są współrzędne podstawy manipulatora, a następnie plik konfiguracji i postury manipulatora. Pliki te mają identyczną postać i znacznie jak w pierwszej części zadania. Należy więc zastosować ten sam schemat do stworzenia nowego manipulatora. Różnica polega jedynie na tym, że do wyznaczonych współrzędnych wszystkich przegubów należy dodać współrzędne podstawy, które odpowiadają w tym przypadku wektorowi translacji. Plik może mieć dowolną ilość pustych linii. Przykład zawartości pliku: M: Manipulator_Maly (-50 0) scena1/konf_manip_m.dat scena1/postura_manip_m.dat M: Manipulator_3 (100 0) scena1/konf_manip_3.dat scena1/postura_manip_3.dat M: Manipulator_4 (55 0) scena1/konf_manip_4.dat scena1/postura_manip_4.dat 5.1.2 Składnia pliku dla drugiego tygodnia zadania W drugim tygodniu program powinien być w stanie przeczytać plik, który oprócz opisów manipulatorów będzie zawierał opisy wieloboków. Tak więc ogólny format pliku ma postać: W: nazwa_wieloboku1 (x1 y1) (x2 y2)... (xn yn) W: nazwa_wieloboku2 (x1 y1) (x2 y2)... (xm ym) M: nazwa_manipulatora1 (x0_1 y0_1) plik_konfiguracji.dat plik_postury.dat W: nazwa_wieloboku3 (x1 y1) (x2 y2)... (xl yl) M: nazwa_manipulatora2 (x0_2 y0_2) plik_konfiguracji.dat plik_postury.dat... W linii opisującej wielobok oprócz oznaczenia typu przeszkody znajduje się jej nazwa i współrzędne poszczególnych wierzchołków. Przykład zawartości pliku: W: Przeszkoda_A (20 0) (20 20) (40 20) (40 0) M: Manipulator_Maly (-50 0) scena1/konf_manip_m.dat scena1/postura_manip_m.dat W: Przeszkoda_B (20 40) (20 80) (40 80) (40 40) M: Manipulator_3 (100 0) scena1/konf_manip_3.dat scena1/postura_manip_3.dat M: Manipulator_4 (55 0) scena1/konf_manip_4.dat scena1/postura_manip_4.dat 5.2 Reakcja na błędy Reakcja na błędy w plikach konfiguracji, czy też postury manipulatorów powinna być analogiczna jak w części pierwszej niniejszego zadania. Ponadto jeżeli w trakcie przetwarzania pliku 3

opisu sceny wystąpią błędy fatalne prowadzące do przerwania działania aplikacji, to należy wyświetlić numer linii, której przetwarzanie doprowadziło do wystąpienia tego typu błędu. Błędy w opisie wieloboku (np. błąd czytania liczby) traktujemy jako błędy fatalne. Należy wówczas wyświetlić odpowiedni komunikat i przerwać działanie aplikacji. 6 Przykład działania programu Niniejszy przykład nie obejmuje widoku okienka z rysunkiem wygenerowanym przez program gnuplot. Przedstawioną formę interakcji z użytkownikiem należy traktować jako obowiązującą. jkowalsk@panamint: rozwiazanie>./manipulator konfig.dat scenax.dat post1.dat post2.dat post3.dat Konfiguracja: Dlugosc ogniwa_0: 40 Dlugosc ogniwa_1: 45.5 Dlugosc ogniwa_2: 64.5 Dlugosc ogniwa_2: 32 q0 = 90.0 Przegub_0: (0.0, 0,0) q1 = 0.0 Przegub_1: (0.0, 40.0) q2 = 0.0 Przegub_2: (0.0, 85.5) q3 = 0.0 Przegub_3: (0.0, 150.0) Efektor: (0.0, 182.0) Postura wczytana z post1.dat q0 = 75.2 Przegub_0: (0.0, 0,0) q1 = -20.0 Przegub_1: (10.2, 38.7) q2 = -31.0 Przegub_2: (36.2, 76.0) q3 = -15.0 Przegub_3: (95.0, 102.5) Efektor: (126.6, 107.6) Postura wczytana z post2.dat q0 = 100.0 Przegub_0: (0.0, 0,0) q1 = -30.0 Przegub_1: (-6.9, 39.4) q2 = -41.0 Przegub_2: (8.6, 82.1) q3 = -25.0 Przegub_3: (65.0, 113.4) Efektor: (97.0, 115.7) KOLIZJA!!! Wystąpila kolizja z wielobokiem o nazwie: Przeszkoda_X Dzialanie programu zostalo przerwane. Aby zakonczyc nacisnij klawisz ENTER... Przedstawiony przykład należy uznać za obligatoryjny pod względem rodzaju i sposobu wyświetlania informacji. 4

7 Wymagania Oprócz samego programu należy stworzyć i wygenerować za pomocą programu doxygen dokumentację programu. Powinna ona zawierać diagramy wymagane w ramach przygotowania do zajęć. Diagramy powinny zostać odpowiednio zaktualizowane, aby odzwierciedlały stan faktyczny zaimplementowanego rozwiązania. 8 Rozszerzenia dla chętnych Niniejszy rozdział dotyczy tych wszystkich osób, które w pierwszej części wybrały wariant 3D. Implementacja wykrywania przecięć między byłami jest zdecydowanie bardziej złożoną procedurą. Ze względu na krótki czas realizacji zadania proponuje się przyjąć, że manipulator nie obraca się wzdłuż osi OZ (osi pionowej). Przeszkody w postaci brył można ulokować w obszarze płaszczyzny manipulatora, np. niech to będzie płaszczyzna YOZ. W takim przypadku problem problem kolizji można uprościć i sprowadzić do problemu 2D, tzn. szukać przecięć między szkieletem manipulatora, traktowanym jako linię łamaną, a obrysem rzutu przeszkody na płaszczyznę YOZ, który to rzut będzie wielobokiem. Idea sprowadzenia Rysunek 2: Idea sprowadzenia przypadku 3D do przypadku 2D. przypadku 3D do 2D przedstawiona jest na rysunku powyżej. Dla osób, które pragną mimo wszystko zmierzyć się z trudniejszym przypadkiem, proponowane jest wykrycie przecięć między bryłami. 5