Laboratorium
Konstrukcja robota
Na laboratorium korzystaliśmy z robota, który został zbudowany przez poprzednią grupę. Pozostawiony robot zawierał wszystko co potrzebowaliśmy, więc jakakolwiek modyfikacja nie była potrzebna.
Zdjęcie robota
Algorytmy
kwadrat :- nxt_open,
nxt_go_sec(400,1), nxt_turn(400,120),
nxt_go_sec(400,1), nxt_turn(400,120),
nxt_go_sec(400,1), nxt_turn(400,120),
nxt_go_sec(400,1), nxt_turn(400,120).
Zadaniem robota było dojechanie do przeszkody, cofnięcie się, wykonanie obrotu o 180 stopni. Początkowo robot po wykonaniu obrotu kontynuował jazdę i zatrzymywał się na klaśnięcie, jednak gdy wszystkie grupy testowały swoje roboty, inne dźwięki zatrzymywały naszego robota. Z tego powodu fragment kodu, który był za to odpowiedzialny został wykomentowany.
check_ultrasonic :- nxt_ultrasonic(Value,force),
Value < 30.
check_sound :- nxt_sound(Value,force),
Value > 50.
ultrasonic :- nxt_stop,
nxt_go_cm(-400,15),
nxt_rotate(400,60),
%nxt_go(400),
%trigger_create(_,check_sound,[nxt_stop,nxt_close]).
jazda :- nxt_open,
nxt_go(400),
trigger_create(_,check_ultrasonic,ultrasonic).''
Zadaniem robota była jazda do przeszkody, cofnięcie się, wykonanie obrotu o 90 stopni. Zadanie miało być wykonywanie cyklicznie przez określoną ilość razy. Wystąpił jednak problem, który uniemożliwił implementacje tego algorytmu. Jest on opisany poniżej.
Problemy
Robot pozostawiony przez poprzednią grupę miał odwrotnie podpięte silniki. Zamiast skręcać w prawo, skręcał w lewo.
Silniki robota, nie wyłączały się jednocześnie. Robot zamiast zatrzymywać równocześnie koła, najpierw zatrzymywał jedno, a dopiero po chwili drugie.
Użycie funkcji trigger_create więcej niż jeden raz powodowało zwrócenie błędu. Po jego otrzymaniu dalsza komunikacja z robotem była niemożliwa. Konieczne było zrestartowanie robota oraz ponowne uruchomienie prologa. Wyświetlany był błąd:
ERROR: Arithmetic: `force/0' is not a function
^ Exception: (19) _L3673 is force//256 ?
Zmiany
Wprowadzona zmiana, dotycząca korzystania z robotów zbudowanych przez grupy z poprzednich zajęć okazała się trafna. To dzięki niej od razu przystąpiliśmy do programowania robota.
Można wprowadzić większą ilość przykładowych algorytmów o zróżnicowanym poziomie trudności.
Plik z laboratorium