====== Sprawozdanie, laboratorium nr 3 ====== ===== Wstęp ===== Na niniejszym laboratorium nawiązaliśmy współpracę z robotem Lego Mindstorm NXT, który ma na imię "Czesław". Wygląda on następująco: {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_1.jpg?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_2.jpg?400|}} Nasz robot uzbrojony jest w dwa silniki, każdy z nich napędza jedno z kół. Zatem mamy tutaj do czynienia z jednym niezależnym mostem napędowym. Ponadto, "Czesław" zaopatrzony jest w trzy sensory: dotyku, dźwięku oraz ultradźwięku. ===== Zrealizowane zadanie ===== ==== Zadanie "Panikarz" ==== Napisaliśmy program w języku Prolog, który po kompilacji, załadowaniu go do pamięci robota, oraz po uruchomieniu go dla naszego robota, sprawia, iż "Czesław" nabiera następujących zachowań: Robot "Czesław" poruszą się wolno, spokojnie. Po klaśnięciu (czyli po wywołaniu nagłego hałasu) "Czesław" zmienia kierunek ruchu i przez pewien czas poruszą się dość szybko (nie jest wtedy podatny na hałas, np. klaśnięcie). Jednakże, po paru chwilach "Czesław" uspokaja się i znów porusza się wolno, spokojnie, jak poprzednio, przed klaśnięciem. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku. Kod źródłowy powyższego algorytmu dla języka Prolog wygląda następująco: %Zadanie "Panikarz" :- consult('plnxt.pl'). start :- nxt_open, thread_create(go_on_buddy,_,[detached(true)]). go_on_buddy :- nxt_go(200), trigger_create(_,clap,after_clap). after_clap :- nxt_stop, nxt_rotate(350,120), nxt_go_cm(500, 20), nxt_go(200), trigger_create(_,touch,stop). clap :- nxt_sound(Value,force), Value > 75. touch :- nxt_touch(Value,force), Value > 0. stop :- trigger_killall, nxt_stop, nxt_close. Robot "Czesław" przemieszcza się wzdłuż linii prostej ze stałą, niewielką prędkością (200 jednostek), a gdy pojawi się sygnał na czujniku dźwięku powyżej wartości 75 jednostek, zatrzymuje się i szybko obraca o kąt 120 stopni. Następnie zaczyna szybko przemieszczać się z prędkością 500 w wybranym kierunku, aż przejedzie 20cm. Po paru chwilach robot zwalnia, i kontynuuje przechadzkę z niewielka prędkością (200). Gdy pojawi się sygnał na czujniku dotyku robot zatrzymuje się i algorytm kończy swoje działanie. === Zdjęcia === {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_3.jpg?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_4.jpg?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_5.jpg?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_6.jpg?400|}} === Filmy === Filmy pokazujące zachowanie naszego robota dla algorytmu "Panikarz" znajdują się w załączniku do niniejszego sprawozdania (filmy *.3gp). ===== Wnioski, spostrzeżenia, napotkane problemy ===== Czasami zdarzało się, iż otrzymywaliśmy od środowiska Prologu komunikaty o błędach lub ostrzeżenia, po czym mieliśmy trudności z ponownym zmuszeniem naszego robota do wykonywania naszych algorytmów. Niekiedy musieliśmy radzić sobie z tymi problemami w sposób siłowy - restart środowiska Prologu lub restart kostki centralnej robota. A oto zrzuty ekranu ukazujące wspomniane problemy: {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_7.png?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_8.png?400|}} {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3_Franek_9.png?400|}} ===== Pliki źródłowe oraz multimedia ===== Poniższy odnośnik zawiera kod źródłowy programu "Panikarz", oraz wszelkie zdjęcia użyte w niniejszym sprawozdaniu, a także filmy ukazujące działanie programu "Panikarz" na naszym robocie "Czesław". {{:pl:dydaktyka:piw2009:sprawozdania:Pokrzepa_Lazar_Armata_Lab3.zip|Źródła_i_Multimedia}}