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

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

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

Zad. 7: Fabryka obiektów i singleton

Zad. 6: Sterowanie robotem mobilnym

Zad. 7: Fabryka obiektów i singleton

Zad. 5: Sterowanie robotem mobilnym

Zad. 5: Sterowanie dronem

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. 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. 4: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 7: Sterowanie manipulatorem przypadek 3D

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Laboratorium nr 4: Arytmetyka liczb zespolonych

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

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

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

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zadanie nr 2: Arytmetyka liczb zespolonych

Układ równań liniowych

Zad. 1: Sterowanie mimika

Wprowadzenie do UML, przykład użycia kolizja

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

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Rys 3-1. Rysunek wałka

Diagramy UML, przykład problemu kolizji

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

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

Ćwiczenie nr 3 Edycja modeli bryłowych

Tworzenie i modyfikacja modelu geologicznego

Zadanie 2: Arytmetyka symboli

Materiały pomocnicze do programu AutoCAD 2014

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Manipulator OOO z systemem wizyjnym

Ćwiczenie nr 5 i 6 Przygotowanie dokumentacji technicznej dla brył

BRIDGE CAD ABT - INSTRUKCJA OBSŁUGI

ZINTEGROWANY SYSTEM ZARZĄDZANIA TREŚCIĄ

Ćwiczenie nr 2 - Rysowanie precyzyjne

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

Backend Administratora

7. Modelowanie wałka silnika skokowego Aktywować projekt uŝytkownika

VinCent Administrator

Ćwiczenie nr 5 Zautomatyzowane tworzenie dokumentacji

Projektowanie systemów zrobotyzowanych

INSTYTUT INFORMATYKI STOSOWANEJ MODELOWANIE CZĘŚCI Z WYKORZYSTANIEM PROGRAMU SOLID EDGE

Konsolidacja FP- Depozyty

W tym ćwiczeniu zostanie wykonany prosty profil cienkościenny, jak na powyŝszym rysunku.

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Topologia działek w MK 2013

Dia rysowanie diagramów

Ćwiczenie nr 8 - Modyfikacje części, tworzenie brył złożonych

Aleksandra Zając. Raport. Blender. Pokemon: Eevee

Ćwiczenie 9. Rzutowanie i wymiarowanie Strona 1 z 5

Ćwiczenie 1 - Modelowanie bryłowe z wykorzystaniem obiektów podstawowych i podstawowych technik modyfikacyjnych

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

Tworzenie prezentacji w MS PowerPoint

BOC INFORMATION TECHNOLOGIES CONSULTING. Zadania. Przykład bankowy

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

Instrukcja obsługi programu Do-Exp

Tworzenie dokumentacji 2D

Przykładowe plany zajęć lekcyjnych Design the Future Poland

Modelowanie obiektowe - Ćw. 1.

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

Ćwiczenie nr 9 - Tworzenie brył

Płaszczyzny, Obrót, Szyk

rgbf<składowa_r,składowa_g,składowa_b,filter>. Dla parametru filter przyjmij kolejno wartości: 0.60, 0.70, 0.80, 0.90, 1.00, np.:

Laboratorium 7 Blog: dodawanie i edycja wpisów

1.Formatowanie tekstu z użyciem stylów

Rys. 1. Rozpoczynamy rysunek pojedynczej części

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

TWORZENIE SZEŚCIANU. Sześcian to trójwymiarowa bryła, w której każdy z sześciu boków jest kwadratem. Sześcian

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

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Ćwiczenie 3: Rysowanie obiektów w programie AutoCAD 2010

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

REFERAT O PRACY DYPLOMOWEJ

Rozdział 5. Administracja kontami użytkowników

2. Korzystając z ikony Warstwy stwórz nowe warstwy według podanego schematu:

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

DARMOWA PRZEGLĄDARKA MODELI IFC

Zespół można utworzyć przez utworzenie nowego dokumentu na bazie szablonu zespołu (pliki z rozszerzeniem.iam). Tworzony jest pusty dokument zespołu.

(1,10) (1,7) (5,5) (5,4) (2,1) (0,0) Grafika 3D program POV-Ray

Projekt połowicznej, prostej endoprotezy stawu biodrowego w programie SOLIDWorks.

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Baza danych sql. 1. Wprowadzenie

7. Podstawy zarządzania szablonami

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

5.4. Tworzymy formularze

1 Tworzenie brył obrotowych

Platforma e-learningowa

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

Analiza mechanizmu korbowo-suwakowego

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Transkrypt:

Zad. 6: Sterowanie dronami w obecności przeszkód 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas oraz czynności. Wykorzystanie dziedziczenia do modelowanie kilku różnych pojęć będących uszczegółowieniem bardziej ogólnego pojęcia. Zastosowanie rzutowania w górę do stworzenia listy obiektów różnych typów. Wykorzystanie polimorfizmu i wskaźników współdzielonych (tzw. inteligentnych). 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. Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Niniejsze zadanie jest rozszerzeniem poprzedniego zadania. Nowymi elementami są przeszkody. Zakładamy, że będą one reprezentowane poprzez prostopadłościany, których boki będą równoległe do jednej z osi globalnego układu współrzędnych. Przykład takiego organizacji sceny pokazany jest na rys. 1. Na scenie powinny być co najmniej trzy tego typu przeszkody. Zakłada się, że są one automatycznie tworzone na początku działania programu w taki sposób, że nie będą się nakładać na siebie. Oprócz tego na scenie w wolnej przestrzeni powinny być umieszczone co najmniej trzy drony. W trakcie wykonywania ruchu (przelotu lub obrotu) ma być sprawdzane, czy nastąpiła kolizja z przeszkodą lub innym dronem czy też nie, w przypadku kolizji ruch powinien zostać zakończony w miejscu poprzedzającym kolizję. Program powinien umożliwiać sterowanie każdym z dronów w analogiczny sposób jak w przypadku poprzedniego zadania. Identyfikacja drona i jego selekcja będzie realizowana poprzez wyświetlenie numerów kolejnych dronów i ich aktualnych współrzędnych. 1

Rysunek 1: Przykładowy widok drona wraz z przeszkodami a) pozycja początkowa b) pozycja końcowa z zaznaczoną ścieżką przelotu (w wersji podstawowej zadania, ścieżki przelotu nie trzeba rysować) 4 Przygotowanie do zajęć Należy przygotować diagram klas proponowanych struktur danych. Ze względu na to, że obecne zadanie jest rozszerzeniem wcześniejszego programu, diagram powinien zawierać wszystkie obecnie stworzone klasy i zawierać dodatkowe związane z aktualnym zadaniem. 5 Wymagania co do konstrukcji programu Oprócz wymagań sformułowanych w opisie zadania należy uwzględnić uwarunkowania przedstawione poniżej. Ze względu na to, że test kolizyjności ruchu drona dotyczy zarówno kolizji z przeszkodami, jak też z innymi dronami, należy wszystkie obiekty tych typów umieścić na jednej liście. Aby to było możliwe, wspomniana lista powinna być listą wskaźników na obiekty klasy bazowej. Konieczne jest więc wprowadzenie dodatkowej klasy, która będzie wspólna dla przeszkód i drona, np. ObiektSceny. Dzięki temu będzie możliwe wykorzystanie niejawnego rzutowania w górę. Listę obiektów należy stworzyć w oparciu o szablon std::list<>. Jako wskaźników, będących elementami listy, należy użyć wskaźników współdzielonych (std::shared_ptr<>). W klasie Scena powinny być dwie listy. Jedna lista powinna być listą wskaźników do obiektów klasy Dron (należy wykorzystać szablon std::shared_ptr<>). Druga lista natomiast powinna dawać dostęp zarówno do obiektów klasy Dron, jak też obiektów klasy PrzeszkodaProstopadloscienna (aby nie musieć tworzyć długich nazw można użyć skrótu np. PrzeszkodaPr). Przy konstrukcji drugiej listy należy skorzystać z mechanizmu rzutowania w górę oraz z szablonu std::shared_ptr<>. Lista ta będzie wykorzystana na potrzeby testu kolizyjności. Lista dronów będzie użyteczna na potrzeby procedury selekcji drona, który ma być sterowany. W obiekcie klasy ObiektSceny, podobnie jak w obiekcie klasy Wektor3D należy wprowadzić pole statyczne, które pozwoli zliczyć ile zostało utworzonych łącznie tego typu 2

obiektów oraz ile ich pozostało na końcu działania programu. W dobrze skonstruowanym programie, gdy program kończy swoje działanie, nie powinno już być żadnego obiektu tego typu. Dla przypomnienia: 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ł). 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 PrzeszkodaPr powinna znaleźć się w pliku nagłówkowym PrzeszkodaPr.hh, zaś metody w pliku PrzeszkodaPr.cpp. Proste metody można definiować bezpośrednio w ciele klasy. 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 udostępniony moduł łącza do programu gnuplot. 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 Problem detekcji kolizji 6.1 Kolizja z przeszkoda Ze względu na przyjęte założenia co do kształtu przeszkód i sposobu ich umiejscowienia na scenie, rozwiązanie problemu detekcji kolizji można znacząco uprościć. Zakładając dodatkowo, że korpus drona ma zwarty kształt, tak jak to jest przedstawione na rys. 3a, można aproksymować go walcem. To z kolei pozwala zastosować podejście opracowane przez Lozano-Pereza znane pod pojęciem przestrzeni konfiguracyjnej. Wykorzystywane jest ono do planowania ścieżek bezkolizyjnych dla konstrukcji, których kształt można aproksymować, w wersji 2-D, wielobokami lub okręgami. W wersji 3-D, gdy aproksymowane są wielobokami, walcami lub kulami. W przypadku zastosowania aproksymacji kształtu drona z zastosowaniem walca, sprawdzenie wszystkich obiektów do przestrzeni konfiguracyjnej staje się proste. Sprowadza się ono wówczas do powiększenia przeszkód w kierunkach horyzontalnych o promień podstawy walca. Natomiast w kierunkach wertykalnych przeszkody zostają powiększone o połowę wysokości walca. W przypadku drona stosuje procedurę odwrotną, co redukuje aproksymujący go walec do punktu materialnego. (patrz rys. 3b). Problem detekcji kolizji sprowadza się wówczas do sprawdzenia, czy punkt reprezentujący drona znajduje się w w powiększonym prostopadłościanie modelującym w przestrzeni konfiguracyjnej przeszkodę, czy też nie. 3

Rysunek 2: Przykład zastosowania sposobu redukcji korpusu drona do punktu (rzut z góry): a) faktyczne kształty przeszkody i drona, b) efekt rozszerzenia przeszkody i redukcji drona do punktu materialnego 6.2 Kolizja z innym dronem Drony wzajemnie dla siebie też są przeszkodami. W tym przypadku wystarczy skorzystać z tego, że obrys drona aproksymujemy walcem. Dzięki temu problem sprawdzenia czy zachoa) b) Rysunek 3: Przykład rozwiązania problemu sprawdzenia czy zachodzi kolizja między dronami poprzez aproksymację ich obrysów walcami, dzięki temu test kolizyjności sprowadza się do problemu sprawdzenia odległości między dwoma punktami zrzutowanymi na płaszczyznę OXY oraz różnicy wysokości a) faktyczne kształty dronów (rzut z góry), b) efekt sprowadzenia dronów do punktów dzi kolizja, sprowadza się do problemu sprawdzenia czy odległość między dwoma punktami zrzutowanymi na płaszczyznę OXY jest mniejsza niż suma promieni aproksymujących obrysy każdego z dronów oraz czy różnica wysokości (współrzędne z-towe) jest mniejsza niż wysokość walca. Na rys. 4 pokazany jest widok ścieżek przelotu drona dla przypadku bez kolizji i z kolizją. Przykłady rozwiązań systemów detekcji kolizji przedstawione są na rys. 5 i 6. Bazują one na wykorzystaniu dalmierzy ultradźwiękowych. Dalmierze te jednak nie są w stanie wykryć obiektów, które są źródłem zbyt słabego echa. Nie daję one więc stuprocentowej pewności uniknięcia kolizji. Przykład takiej sytuacji, w której dochodzi do kolizji pomimo użycia dalmierza ultradźwiękowego, widoczny jest na rys. 6b. 4

Rysunek 4: Przykładowy widok ścieżki przelotu drona a) bez kolizji b) z kolizją c) d) Rysunek 5: Przykład realizacji systemu detekcji kolizji z wykorzystaniem zwykłych dalmierzy ultradźwiękowych a) konstrukcja nośna z sensorami b) konstrukcja quadrokoptera. c) d) zobrazowanie fazy detekcji przeszkody i wyhamowywania lotu. Materiał pochodzi z http://www.flightbots.com oraz z https://www.youtube.com/watch?v=x6ztuljimso 5

Rysunek 6: Przykład realizacji systemu detekcji kolizji z wykorzystaniem dalmierzy ultradźwiękowych i systemu wizyjnego quadrokopterze Phantom 4. a) widok bocznych dalmierzy i kamery b) jednak niewielkie przeszkody są wciąż problemem. Materiał pochodzi z http://www.dji.com/phantom-4 oraz z https://www.youtube.com/watch?v=c7lirizw2mc 7 Przykład działania programu jkowalsk@panamint>./sterowanie-dronem Laczna ilosc stworzonych obiektow klasy Wektor3D: 184 Ilosc istniejacych obiektow klasy Wektor3D: 26 Dron 1. Wspolrzedne: (250, 30, 40) o - obrot drona j - lot na wprost s - selekcja drona w - wyswietl ponownie menu k - zakoncz dzialanie programu Twoj wybor (w - wyswietl menu)> s Dron 1. Wspolrzedne: (50.0, 100.0, 20.0) 0. - zaniechaj zmiany selekcji Dron 1. Wspolrzedne: (50.0, 100.0, 20.0) Dron 2. Wspolrzedne: (0.0, 0.0, 0.0) Dron 3. Wspolrzedne: (-60.0, 50.0, 30.0) Podaj numer drona, dla ktorego maja być wykonane operacje sterowania Wprowadz numer drona lub 0 > 2 6

Laczna ilosc stworzonych obiektow klasy Wektor3D: 184 Ilosc istniejacych obiektow klasy Wektor3D: 26 Dron 2. Wspolrzedne: (0.0, 0.0, 0.0) o - obrot drona j - lot na wprost s - selekcja drona w - wyswietl ponownie menu k - zakoncz dzialanie programu Twoj wybor (w - wyswietl menu)> j Dron 2. Wspolrzedne: (0.0, 0.0, 0.0) Podaj dlugosc drogi przelotu i kat wznoszenia (+)/ opadania (-). Dlugosc drogi: 100 Kat wznoszenia [stopnie]: 45 Wykryta została kolizja!!! Lot zostal przerwany. Laczna ilosc stworzonych obiektow klasy Wektor3D: 372 Ilosc istniejacych obiektow klasy Wektor3D: 26 Dron 2. Wspolrzedne: (60.1, 0.1, 60.0) Twoj wybor (w - wyswietl menu)> k Koniec dzialania programu. Laczna ilosc stworzonych obiektow klasy Wektor3D: 372 Ilosc istniejacych obiektow klasy Wektor3D: 0 jkowalsk@panamint> _ 8 Uproszczenia W wersji uproszczonej programu wystarczy, że program będzie umożliwiał sterowanie jednym dronem. Kolejne uproszczenie, to w przypadku braku selekcji rezygnacja z tworzenia listy dronów. 9 Rozszerzenia Możliwych jest kilka wariantów rozszerzenia tego zadania. 7

9.1 Rysowanie ścieżki przelotu i jej usuwanie W trakcie przelotu powinna być widoczna historia lotu w postaci ścieżki. Powinna być możliwe jej usunięcie w wybranym momencie poprzez odpowiednią opcję w menu. Do przechowywania kolejnych punktów ścieżki należy wykorzystać szablon std::list<>. 9.2 Możliwość dodawania i usuwania przeszkód w trakcie działania programu Program powinien umożliwiać dodawanie i usuwanie wybranej przeszkody. 9.3 Modyfikacja położenia i rozmiarów przeszkód Program powinien umożliwić wyselekcjonowanie odpowiedniej przeszkody i zmianę jej rozmiarów, jak też położenia i orientacji. 9.4 Detekcja kolizji dla przypadku dowolnej orientacji przeszkody Program powinien umożliwiać detekcję kolizji dla dowolnej orientacji przeszkody modelowanej za pomocą prostokątów. 9.5 Wizualizacja wyselekcjonowanego drona lub przeszkody Wyselekcjonowany dron powinien być inaczej rysowany niż pozostałe, np. większa grubość linii. Można to osiągnąć dzięki temu, że dodając nazwy plików, zwracana jest referencja do struktury, w której oprócz nazwy zapisany jest tryb rysowania. Można więc zapamiętać wskaźnik na ten obiekt i później modyfikować jego parametry. Należy zwrócić na to uwagę, że musi to być wskaźnik, a nie kopia tego obiektu. 10 Wymagania i zarys programu zajęć w okresie realizacji zadania Przystępując do pracy nad programem zaleca się, aby rozszerzenie menu programu zrealizować na samym końcu, gdy stworzymy już i przetestujemy wszystkie niezbędne funkcjonalności. 10.1 Tydzień 0 Należy przygotować diagram klas modelujący pojęcia sceny, drona, oraz przeszkody. 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). 8

Zdefiniowane powinna być klasa PrzeszkodaPr z najistotniejszymi metodami. Należy zwrócić uwagę, że pojęcia Dron oraz PrzeszkodaPr w tym zadaniu są elementami sceny. To jest element wspólny tych pojęć. Tak więc klasa PrzeszkodaPr, podobnie jak klasa Dron powinna dziedziczyć klasę ObiektSceny. Obiekt sceny charakteryzuje współrzędne położenia na scenie oraz jego orientacja. 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 sceny zawierającej co najmniej dwie przeszkody i drona. Nie muszą one jeszcze być umieszczone odpowiednich listach. 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. 9