Zad. 8: Manipulator 3D – przeszukiwanie zbioru obiektów
Transkrypt
Zad. 8: Manipulator 3D – przeszukiwanie zbioru obiektów
Zad. 8: Manipulator 3D – przeszukiwanie zbioru obiektów niejednorodnych1 1 Cel ćwiczenia Wykorzystanie w praktyce mechanizmu rzutowania w gór˛e w połaczeniu ˛ z metodami wirtualnymi. Wykształcenie umiej˛etności korzystania z szablonu std::map<>. 2 Opis zadania programowego Niniejsze zadanie jest kontynuacja˛ i rozszerzeniem wcześniejszego zadania. Bazujac ˛ na programie zrealizowanym w ramach poprzedniego zadania należy wprowadzić struktur˛e pojedynczej kolekcji obiektów w oparciu o szablon std::map<>. Powinien on ujednolicić dotychczasowa˛ operacj˛e szukania obiektu w oparciu o nazw˛e. Realizacja tej operacji powinna być wykonana tylko i wyłacznie ˛ w zbiorze obiektów, który ma być reprezentowany przez odpowiednia˛ instancj˛e szablonu std::map<>. Obiekt zawierajacy ˛ std::map<> musi być polem w klasie Scena. Aby wykonać odpowiednie akcje dla znalezionego obiektu geometrycznego (tj. wczytanie pliku, który zawiera opis postury, w przypadku robotów, lub wektor translacji w przypadku wielościanów) należy wykorzystać mechanizm metod wirtualnych. Mechanizm ten należy również wykorzystać w przypadku aktualizacji stanu danego obiektu geometrycznego, tzn. w przypadku manipulatorów, odnosi si˛e to do wyznaczenia nowej postury, zaś w przypadku wielościanów, aktualizacja stanu oznacza wyznaczenie jego nowego położenie. Oddzielna˛ operacja˛ powinna być operacja zapisu aktualnego stanu obiektów do plików, w celu ich odrysowania przez program gnuplot. Powinna ona zostać również zrealizowana z wykorzystaniem mechanizmu metoda wirtualnych. 3 Reakcja na bł˛edy Jeżeli zostanie stwierdzony bład ˛ w trakcie interpretacji plików konfiguracyjnych, to należy zgłosić stosowna˛ informacj˛e i przerwać działanie programu. Jeżeli natomiast nie zostanie znaleziony obiekt, którego ma dotyczyć akcja, lub opis akcji zawiera bład, ˛ to należy zgłosić stosowny komunikat. Program jednak nie powinien przerywać swojego działania. Powinien przejść do realizacji operacji dla nast˛epnego obiektu geometrycznego. 4 Wersje rozszerzeń 4.1 Rozszerzenie podstawowe W wersji rozszerzonej zakłada si˛e, że manipulatorów może być również dowolna ilość. Wszystkie obiekty geometryczne, takie jak manipulatory i wielościany (tzn. prostopadłościany i parawany), majac ˛ być dost˛epne tylko i wyłacznie ˛ poprzez jeden kontener stworzony na bazie sza1 Niniejsze zadanie nie jest obligatoryjne. Niemniej w przypadku osób pragnacych ˛ otrzymać ocen˛e 5, 0 lub podnieść dotychczasowa˛ ocen˛e, realizacja tego zadania jest niezb˛edna. W przypadku osób starajacych ˛ si˛e o ocen˛e celujac ˛ a,˛ należy zrealizować je w wersji rozszerzonej (co najmniej rozszerzenie podstawowe). 1 blonu std::map<>. W konstrukcji tej należy wykorzystać mechanizm rzutowania w gór˛e. Należy zwrócić uwag˛e, aby w momencie zakończenia przez program swojego działania, wszystkie obiekty tworzone dynamicznie zostały podane destrukcji. Program ma zostać uruchomiony z nazwami dwóch plików, tak jak to jest przedstawione poniżej. ./program konfig.dat scenariusz_dzialania.dat Pierwszy z nich ma zawierać list˛e nazw plików, które we wcześniejszej wersji zadania były podawane w linii polecenia. Przykładowa zawartość pliku konfig.dat: konfig_manip1_rot.dat konfig_manip2_trans.dat obiekt1.dat konfig_manip3_trans.dat obiekt2.dat obiekt3.dat konfig_manip4_rot.dat obiekt4.dat Plik scenariusz_dzialania.dat zawiera list˛e składajac ˛ a˛ si˛e z nazwy obiektu, do którego ma być zastosowane określone działanie, oraz z nazwy pliku, w którym opisane jest dane działanie. W przypadku manipulatorów działaniem tym jest nowa konfiguracja, zaś w przypadku prostopadłościanów i parawanów, operacja przesuni˛ecia ich na scenie. Przykładowa zawartość pliku scenariusz_dzialania.dat. manipulator1_trans manipulator1_trans prostopadloscian_1 prostopadloscian_1 manipulator2_trans postura1_manip1_trans.dat postura2_manip1_trans.dat prost1_pozycja1.dat prost1_pozycja2.dat postura1_manip2_trans.dat Pliki opisujace ˛ wspomniane działania maja˛ taki sam format jak w zadaniu poprzednim. Wprowadzony zestaw operacji umożliwia stworzenia scenariusza działań, które może zainscenizować prac˛e robotów na linii produkcyjnej. 4.2 Rozszerzenie pomocnicze Dalszym rozszerzeniem realizacji zadania jest wprowadzenie płynnej zmiany postury manipulatorów, jak też pozycji przemieszczajacych ˛ si˛e obiektów. 2