Sterowanie manipulatorem w obecno´ sci przeszkód
Sterowanie manipulatorem w obecnoÅ›ci przeszkód 1 Cel zadania Utrwalenie umiejÄ™tnoÅ›ci korzystania z szablonów std::vector<> i std::list<>. 2 Opis zadania Niniejsze zadanie jest rozszerzeniem wczeÅ›niejszego zadania. Należy napisać program, który uwzglÄ™dni obecność przeszkód w otoczeniu robota. Jeżeli użytkownik bÄ™dzie chciaÅ‚ zmienić konfiguracjÄ™ manipulatora i w nowej konfiguracji zostanie wykryta kolizja z jakÄ…Å› przeszkodÄ…, to program powinien wyÅ›wietlić informacjÄ™ o kolizji oraz zaniechać zmiany konfiguracji, tzn. w okienku wizualizujÄ…cym manipulator powinien pozostać w poprzedniej konfiguracji przed momentem wykrycia kolizji. 3 Interfejs użytkownika W wersji podstawowej interfejs użytkownika w stosunku do poprzedniego programu w ogóle nie musi ulec zmianie. ZakÅ‚adamy, że zbiór przeszkód wczytujemy w momencie startu pro- gramu. W wersji rozszerzonej program powinien umożliwiać wyÅ›wietlenie informacji o wybranej przeszkodzie (współrzÄ™dne jej wierzchoÅ‚ków), jej usuniÄ™cie lub dodanie nowej. Ta ostatnia operacja może polegać na podaniu nazwy pliku z opisem danej przeszkody. Program powinien sygnalizować bÅ‚Ä…d jeżeli danego pliku nie bÄ™dzie można otworzyć. W wersji jeszcze bardziej rozszerzonej operacja dodania przeszkody wymaga wprowadze- nia współrzÄ™dnych punktów oraz nazwy pliku, do którego bÄ™dzie skÅ‚adowany opis przeszkody. 4 Reprezentacja przeszkód 4.1 Wersja 2D - podstawowa Przeszkody majÄ… być modelowane za pomocÄ… wieloboków. ZakÅ‚ada siÄ™, opisy przeszkód bÄ™dÄ… skÅ‚adowane w plikach tekstowych. WspółrzÄ™dne poszczególnych wierzchoÅ‚ków bÄ™dÄ… poda- wane w osobnych liniach. WspółrzÄ™dne pierwszego wierzchoÅ‚ka muszÄ… być powtórzone na samym koÅ„cu (wynika to z tego, żegnuplotbÄ™dzie rysowaÅ‚ liniÄ™ Å‚amanÄ…, której wierzchoÅ‚ki poczÄ…tku i koÅ„ca muszÄ… siÄ™ poÅ‚Ä…czyć). PrzykÅ‚ad zawartoÅ›ci takiego pliku przedstawiony jest poniżej. 40 40 90 40 90 30 40 30 40 40 Jest to opis prostokÄ…ta, którego krótszy bok ma dÅ‚ugość 10, zaÅ› dÅ‚uższy 50. Wykrycie kolizji polega na stwierdzeniu, czy któryÅ› z odcinków brzegu wieloboku przecina siÄ™ z jakimkolwiek Rysunek 1: PrzykÅ‚ad wizualizacji manipulatora wraz z przeszkodami odcinkiem reprezentujÄ…cym pojedyncze ogniwo (segment) manipulatora. ZetkniÄ™cie siÄ™ ma- nipulatora z przeszkodÄ… jest również uważane za kolizjÄ™. PrzykÅ‚ad rysunku manipulatora i przeszkód przedstawiony jest na rys. 1. 4.2 Wersja 3D Niniejszy rozdziaÅ‚ dotyczy tych wszystkich osób, które w pierwszej części wybraÅ‚y wariant 3D. Wykrywanie przecięć miÄ™dzy bryÅ‚ami jest zdecydowanie bardziej zÅ‚ożonÄ… procedurÄ… do im- plementacji. 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 rys. 2. Dla osób, które pragnÄ… mimo wszystko zmierzyć siÄ™ z trudniejszym przypadkiem, propono- wane jest wykrycie przecięć miÄ™dzy bryÅ‚ami. 5 MateriaÅ‚y pomocnicze 5.1 yródÅ‚a programów Dodatkowe pomocnicze elementy uÅ‚atwiajÄ…ce rozpoczÄ™cie realizacjÄ™ zadania można znalezć na serwerzediablolubpanamintw kataloguÜbk/edu/po/zad/z-manipulator2. W katalogu tym znajdujÄ… siÄ™ nastÄ™pujÄ…ce podkatalogi i pliki: Übk/edu/po/zad/z-manipulator2/. przyklad_2D/Makefile przyklad_2D/src/start.cpp przyklad_2D/src/lacze_do_gnuplota.cpp przyklad_2D/inc/lacze_do_gnuplota.hh przyklad_2D Katalog zawiera przykÅ‚ad odrobinÄ™ bardziej rozbudowany niż przykÅ‚ad z po- przedniego zadania. Zawiera on dwa pliki opisujÄ…ce przeszkody jako wieloboki oraz dwie do- datkowe linie kodu w samym programie, które odpowiedzialne sÄ… za doÅ‚Ä…czenie tych plików do polecenia przekazywanegognuplotowi. Odpowiedzialne jest ono za wymuszenie rysowania przezgnuplotwieloboków reprezentujÄ…cych wspomniane wczeÅ›niej przeszkody. 5.2 Prezentacja W sekcji pomoc udostÄ™pniona zostaÅ‚a prezentacja, w której przedstawione jest rozwiÄ…zanie pro- blemu detekcji przeciÄ™cia odcinak z przeszkodÄ…. W tym zadaniu wystarczy ograniczyć siÄ™ do wykrycia przeciÄ™cia odcinka z odcinkiem lub ich zetkniÄ™cia. Nie trzeba rozstrzygać przypadku wnikania odcinka w przeszkodÄ™, który jest dość szczegółowo analizowany w tej prezentacji.