====== Lab Prolog NXT API ====== ===== Cel ===== Celem laboratorium jest wykorzystanie PlNXT (API w języku Prolog) w tworzeniu programów sterujących robotem Mindstorms NXT. ===== Wstęp ===== PlNXT składa się z czterech modułów: * {{:pl:miw:miw08_mindstormsapi:080527:nxt_actions_icommand.pl|nxt_actions_icommand}} * {{:pl:miw:miw08_mindstormsapi:080527:nxt_sensomoto.pl|nxt_sensomoto}} * {{:pl:miw:miw08_mindstormsapi:080527:nxt_movement.pl|nxt_movement}} * {{:pl:miw:miw08_mindstormsapi:080527:threads.pl|threads}} Proszę pobieżnie zapoznać się z dokumentacją: * [[http://student.agh.edu.pl/~holownia/plnxt/nxt_sensomoto.html|nxt_sensomoto]] * [[http://student.agh.edu.pl/~holownia/plnxt/nxt_movement.html|nxt_movement]] * [[http://student.agh.edu.pl/~holownia/plnxt/threads.html|threads]] Powinniście mieć Państwo do dyspozycji robota [[http://mindstorms.lego.com/Overview/MTR_Tribot.aspx|TriBot]]. Proszę zapoznać się z jego opisem. Jeśli wszystko jest na miejscu, poprzednia grupa nie przywłaszczyła sobie żadnego klocka i można przystąpić do ćwiczenia. ;) Proszę otworzyć plik {{:pl:miw:miw08_mindstormsapi:test.pl|test.pl}} i załadować w SWI Prolog. Analizując plik, proszę obserwować wykonanie. W razie potrzeby posiłkować się dokumentacją. ===== Przebieg ćwiczenia ===== Wykorzystując PlNXT zaimplementujcie Państwo jeden z poniższych algorytmów. Mile widziany swój pomysł (oczywiście odpowiednio skomplikowany). ==== Algorytm I - Poszukiwanie piłki ==== Robot przeszukuje jakiś obszar w poszukiwaniu piłki. Np. kwadrat o boku 50 cm albo koło o promieniu 75 cm. Jeśli jej nie znajdzie, wraca do punktu początkowego i przeszukuje obszar jeszcze raz. Po znalezieniu zatrzaskuje szczęki i prezentuje "taniec radości". Tutaj można wykazać się artyzmem. ;) Na sygnał dźwiękowy przerywa/wznawia poszukiwanie. ==== Algorytm II - Omijanie przeszkód ==== Robot przemieszcza się z punktu A do B. Po napotkaniu przeszkody zatrzymuje się i próbuje ją ominąć. Na sygnał dźwiękowy przerywa/wznawia ruch. ===== Uwagi ===== Należy zamykać połączenie po wykonaniu programu przy użyciu predykatu nxt_sensomoto:nxt_connection_close/0. Jeśli w wyniku błędu w programie poprawne zamknięcie połączenia nie będzie możliwe, należy wyłączyć i włączyć MindstormsNXT oraz adapter Bluetooth, a także ponownie uruchomić SWI Prolog. W przeciwnym razie mogą wystąpić problemy przy nawiązywaniu ponownego połączenia. ===== Sprawozdanie ===== W sprawozdaniu należy zawrzeć: * krótki opis algorytmu (co się udało zrobić, czego nie), * kod programu, * uwagi dotyczące funkcjonalności PlNXT.