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.


Wyszukiwarka