Prace rozpoczęliśmy od poprawienia kodu więźnia, ponieważ nie udało nam się go dobrze zaimplementować. Ponownie próbowaliśmy zczytać wartości dla poszczególnych kolorów biały, czerwony, czarny.
?
start :-
write('-- start 0.1 --'),
nxt_goal(ewka, my_actions).
my_actions :-
nxt_light_LED(passivate),
gogo.
gogo :-
stop,
trigger_create(_, check, checked),
nxt_go(250).
check :-
nxt_light(V, force),
V < 20.
checked :-
nxt_light(V, force),
decide(V),
stop.
decide(V) :-
V < 12,!,
write('black\n'),
escape.
decide(V) :-
V >= 12,!,
write('red\n'),
escape.
escape :-
Angle is 150 + random(60),
nxt_rotate(100, Angle, force),
gogo.
stop :-
trigger_killall,
nxt_stop.
readcolor :-
nxt_light_LED(activate),
nxt_light(V1),
nxt_light_LED(passivate),
nxt_light(V2),
D is V1 - V2,
write(V1),write(' '),write(V2),write(' '),write(D),write('\n').
Używaliśmy funkcji readcolor do szybkiego odczytu wartości z włączoną i wyłączoną diodą. Próbowaliśmy w różnych miejscach sali. Poniżej przedstawiamy odczytane zakresy wartości dla kilku pobranych próbek.
|-----------------------------------------------
| |z włączoną diodą |z wyłączoną diodą |
|-----------------------------------------------
|biały | 61 - 70 | 30 - 44 |
|-----------------------------------------------
|czerwony | 68 - 68 | 28 - 36 |
|-----------------------------------------------
|czarny | 40 - 43 | 14 - 20 |
|-----------------------------------------------
Możemy wywnioskować, że odróżnić możemy jedynie tylko kolor czarny. Przebudowaliśmy robota, aby zmieniać odległość sensora od podłoża, jednak takie działanie również nie przyniosło efektu, zakresu koloru białego i czerwonego nakładały się.
Kolejny pomysł to taki, aby zamiast koloru czerwonego wykrywać inny kolor (podpatrzyliśmy ten pomysł od kolegów z innej grupy). Tak jak oni wyjęliśmy karty bankomate, legitymacje, karte mpk. Sprawdziliśmy to dla kolorów: pomarańczowy, zielony, niebieski, czerwony(karta IKEA FAMILY). Nasza walka oraz próby na różnych odcieniach nie przyniosły rezultatu. Niestety nie byliśmy w stanie wykonać tego ćwiczenia. Próby połączenia z innym robotem nie zrobiliśmy - najpierw chcieliśmy dobrze zaimplementować algorytm więźnia.