W trakcie realizacji algorytmu napotkaliśmy problem związany z rozróżnianiem kolorów. Po w miarę stabilnym umocowaniu czujnika, robot nie był w stanie odpowidnio rozróznić koloru białego i czerwonego. Oba kolory przyjmowały wartości zbliżone do liczby 68. Nie było problemów z rozróżnianiem koloru czerwonego dla którego wartości zbliżone były do liczby 40.
:- consult('../plnxt.pl').
start :-
nxt_open,
thread_create(go_on_buddy,_,[detached(true)]).
go_on_buddy :-
nxt_light_LED(activate),
trigger_create(_, black, turn, 1).
%trigger_create(_, red, runaway, 1),
%nxt_go(200).
black :-
nxt_light(Value, force),
write(Value),
%write('black'),
nl,
fail.
%Value > 35,
%Value < 38.
red :-
nxt_light(Val, force),
write('red'),
nl,
Val > 67,
Val < 70.
turn :-
nxt_rotate(350, 160, force),
trigger_create(_, black, turn, 1),
nxt_go(200).
runaway :-
trigger_killall,
nxt_go(300, force),
trigger_create(_, black, outside, 1).
outside :-
timer_create(_, 3, stop).
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Jak się okazało problemem było zbyt wysokie umieszczenie czujnika. Po umieszczeniu czujnik tuż nad powierzchnią stołu nie mieliśmy już dużych problemów z działaniem programu
:- consult('../plnxt.pl').
start :-
nxt_open,
thread_create(go_on_buddy,_,[detached(true)]).
go_on_buddy :-
nxt_light_LED(passivate),
trigger_create(_, black, turn, 1),
trigger_create(_, red, runaway, 1),
nxt_go(200).
black :-
nxt_light(Value, force),
Value > 29,
Value < 35.
red :-
nxt_light(Val, force),
Val > 41,
Val < 47.
turn :-
nxt_rotate(350, 160, force),
trigger_create(_, black, turn, 1),
nxt_go(200).
runaway :-
trigger_killall,
nxt_go(300, force),
trigger_create(_, black, outside, 1).
outside :-
timer_create(_, 3, stop).
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Kolega Grzegorz Janas, odrabiający laboratorium „lab_plnxt_zaawansowane” w ubiegłym tygodniu miał ogromnego pecha z połączeniem, ustawieniem parametrów portu i sparowaniem. Bezbłędne połączenie robota Lego umożliwia wykonywanie dalszej częsci laboratorium.
Już na samym początku były problemy z wtyczką BT, nie chciała działać. Rozwiązanie: W moim przypadku pomogło przełożenie do innego portu. Z obserwacji na innych stanowiskach pomógł restart systemu.
Brak skryptu plnxt_stty w pliku plnxt_v0.tar.gz utrudniał ustawienia parametrów portu i sparowania. O braku wspomnianiego skryptu został poinformowany prowadzący laboratoria.
Kolejnym problemem był komunikat:
?- nxt_open.
ERROR: source_sink `/dev/rfcomm3' does not exist (Host is down)
Exception: (10) open('/dev/rfcomm3', write, _L182, [buffer(false)]) ?
W takim wypadku należy sprawdzić czy w robocie jest włączony Bluetooth. Czasami Bluetooth sam sie wylacza (być może oszczędzanie energii) i tym samym płata ogromnego psikusa osobom próbującym wykonać laboratorium…