Rozpoczęcie pracy
Gdy przystąpiliśmy do pracy Franek był już zbudowany, jednak w robocie brakowało czujnika dźwięku, dołożyliśmy ramie, na którym zamontowany został czujnik. Dzięki temu mogliśmy przejść do testowania programów.
Po zmodyfikowaniu robota wykonaliśmy kilka testów przykładowego programu z konspektu laboratorium. Próg dla czujnika dźwięku podany w trigerze był jednak niezbyt trafnie dobrany przy panujących w laboratorium warunkach i być może przez to, iż czujnik zbierał szumy z otoczenia nie zawsze robot jechał do momentu klaśnięcia, a przy znacznej zmianie wartości nie reagował na klaśnięcia przejeżdżając cały dystans.
Algorytm 1
Kod programu
:- consult('./plnxt.pl').
start :-
nxt_open,
nxt_light_LED(activate),
trigger_killall,
trigger_create(_,check_distance,[nxt_stop,nxt_rotate(350,120),nxt_go(300)],inf),
trigger_create(_,pushed,[nxt_stop,ext]),
nxt_go(300).
check_distance :-
nxt_light(Distance,force),
Distance <50.
% Sprawdzenie, czy sensor dotyku jest wciśnięty.
pushed :-
nxt_touch(Value,force),
Value=1.
ext :- nxt_light_LED(passivate),trigger_killall, nxt_close.
Komentarz
Podczas konstrukcji algorytmu z zadania Algorytm 1 szybko udało nam się dojść do momentu, w którym robot poruszał się tylko w wyznaczonym obszarze. Do obrotu użyliśmy nxt_rotate. Ze względu na początkowe zapętlanie się błędnych wersji programu postanowiliśmy dodać drugi trigger, który pozwoliłby nam na szybkie zakończenie wykonywania programu.
Stopień realizacji zadania poprzez napisany przez nas program ilustruje załączony filmik.
Napotkane problemy
Na filmiku załączonym pod wcześniej umieszczonym linkiem widać także iż robot rozpoznaje także inne elementy planszy, które traktuje jak krawędzie wyznaczające obszar wewnątrz którego ma się poruszać
Nie zamykające się wątki
Ze względu na próby rozwiązania problemu z błędnym zamykaniem wątku nie zdążyliśmy zrealizować drugiego algorytmu