Labolatorium z PLNXT (2)
Autorzy: Michał Chalupczak, Słowamorir Widlarz, Grzegorz Dydo-Rozniecki
Robot: Jasio
Cel labolatorium
Na laboratoriach staraliśmy się zaimplementować jeden z algorytmów zaproponowanych w opisie: Śledzenie linii. Robot umieszczony na planszy testowej dojeżdża do grubej czarnej linii i od tego momentu stara się poruszać wzdłuż tej linii. Po wciśnięciu sensora dotyku kończy pracę.
Wykonanie ćwiczenia
:- consult('plnxt.pl').
start:-
nxt_open,
nxt_light_LED(activate, force),
go_on_buddy,
trigger_create(_,pushed,nxt_stop).
go_on_buddy :-
nxt_go(500),
trigger_create(_,line,find_way).
find_way :-
nxt_stop,
sleep(0.1),
nxt_go(300,50),
nxt_stop,
sleep(0.1),
nxt_turn(300, 160),
nxt_go_sec(300, 2),
trigger_create(_,line,tracking).
tracking :-
nxt_stop,
sleep(0.1),
nxt_turn(300, -160),
go_on_buddy.
line :-
nxt_light(Value,force),
Value < 20.
pushed :-
nxt_touch(Value,force),
Value=1.
Problemy
Za każdym razem po wykonaniu programy interpreter Prologa sygnalizował ostrzeżenie: „Warning: [Thread 4] Thread running (…) died on exception: Out of global stack”, a po wyjściu z Prologa wyjątek: „1 threads wouldn't die”. Zapewne jest to spowodowane błędem w implemetacji PLNXT, choć z punktu widzenia wykonania ćwiczenia jest nieszkodliwe.
Skręcanie robota o 90 stopni nie ma „okrągłej” wartości i bardzo ciężko wymierzyć dokładnie obrót o kąt prosty.
Dwa razy Jaś zaczął niespodziewanie wydawać z siebie wysoki, cichy dźwięk, który ustawał po wyłączeniu i ponownym włączeniu robota.