15.04.2009, godz. 9.30
grupa w składzie: Joanna Jaworek, Eliasz Kańtoch, Piotr Figiel
Informatyka Stosowana IV rok
Robot: Franek
Na początku zajęć stworzyliśmy robota, który zawierał 3 sensory: dotyku, odległości oraz dźwięku.
Umożliwiło nam to zaimplementówanie i sprawdzenie dwóch algorytmów: omijanie przeszkód oraz panikarz.
Pod koniec zajęć, ponieważ zostało nam jeszcze trochę czasu stworzyliśmy robota, którego celem było wykonywanie zadań dla algorytmu „piłkarz”.
Poniżej zamieszczamy zdjęcie naszego robota, który służył do rozwiązania algorytmu 1 i 2.
W przeciwieństwie do poprzednich zajęć konfiguracja stanowiska przebiegła bardzo szybko i bez większych komplikacji.
Przetestowaliśmy funkcjonalność robota za pomocą poleceń dostępnych w dokumentacji do laboratorium, a następnie szybko zabraliśmy się za tworzenie własnych algorytmów.
Na podstawie dokumentacji opracowaliśmy dwa obowiązkowe algorytmy i częściowo algorytm dodatkowy -piłka.
Poniżej zamieszczamy opis algorytmów z kodami źródłowymi/zdjęciami/wnioskami.
Jako pierwszy algorytm zrealizowaliśmy „omijacza przeszkód”
Celem algorytmu 1 było przemieszcza się robota do przodu,a po napotkaniu przeszkody zatrzymanie się i ominięcie przeszkody. W fazie przemieszczania do przodu (tylko w tej fazie) robot powinien zatrzymuje się i wyłączyć zaraz po klaśnięciu.
Wymagane sensory: odległości oraz dźwięku.
:- consult('plnxt.pl'). start:- nxt_open, go_on_buddy, trigger_create(_,check_distance,[nxt_stop]). go_on_buddy :- nxt_go(200), sleep(1), trigger_create(_,clap,wait_a_second_buddy). wait_a_second_buddy :- nxt_stop, nxt_rotate(750,-360,force), sleep(1), trigger_create(_,clap,go_on_buddy). clap :- nxt_sound(Value,force), Value > 55. check_distance :- nxt_ultrasonic(Distance,force), Distance < 15.
Po zaimplementowaniu algorytmu „omijacz przeszkód” postanowiliśmy zaimplementować podobny algorytm: panikarz.
Celem algorytmu 2 jest powolne przemieszczanie się robota, który po klaśnięciu zmienia kierunek i przez krótki czas ucieka. Po wciśnięciu sensora dotyku zatrzymuje się i zamyka połączenie. Robot przemieszcza się powoli. Po klaśnięciu zmienia kierunek i szybko ucieka przez jakiś czas (wtedy nie jest podatny na klaśnięcie), po czym uspokaja się i znowu jedzie powoli. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku.
wymagane sensory: dźwięku, dotyku.
:- consult('plnxt.pl'). start:- nxt_open, go_on_buddy, trigger_create(_,clap,[nxt_stop,nxt_close]). go_on_buddy :- nxt_go(200), sleep(1), trigger_create(_,clap,wait_a_second_buddy). wait_a_second_buddy :- nxt_stop, nxt_rotate(750,-360,force), sleep(1), trigger_create(_,clap,go_on_buddy). clap :- nxt_sound(Value,force), Value > 55. pushed :- nxt_touch(Value,force), Value=1.
Zdjęcie robota- takie same jak dla poprzedniego algorytmu.
Filmik:http://www.youtube.com/watch?v=PjBwF7pIcB4
Po zaprogramowaniu algorytmu 1 i 2 postanowiliśmy spróbować rozwiązać zadanie dodatkowe-czyli algorytm „piłka”
Robot umieszczony na planszy testowej w obszarze start łapie piłkę znajdującą się w czerwonym obszarze przed nim i przemieszcza ją poza obszar zamknięty wewnątrz czarnej linii.
Z użyciem planszy testowej.
Wymagane sensory: dotyku, światła.
:- consult('plnxt.pl'). start:- nxt_open, go_on_buddy, trigger_create(_,check_distance,pick_up), trigger_create(_,czarne,[nxt_stop,nxt_close]). go_on_buddy :- nxt_go(200), trigger_create(_,check_distance,pick_up). pick_up: nxt_go(600), trigger_create(_,check_distance,[nxt_stop, nxt_close]). check_distance :- nxt_ultrasonic(Distance,force), Distance < 1. czarne :- nxt_light(Value,force), Value <50.
Podczas tworzenia dodatkowej aplikacji bardzo przydatna byłaby funkcja np. poruszanie się za intensywnością światła przez robota - nxt_search_light , nxt_search_sound. Interesujące byłoby dodanie ruchu robota po bardziej skomplikowanych trajektoriach typu zygzak nxt_go_ zigzag czy okrąg nxt_go_circle. Robot byłby w stanie wykonywać naprawdę widowiskowe ruchy w kilku linijkach kodu.