Sprawozdanie z laboratorium 2 (zapoznanie z PLNXT)
Data: 08.04.2009
Godzina: 14.00
Skład grupy: Tomasz Dzierżanowski, Miłosz Fedak, Paweł Bicz
Robot: HENIO
AGH, WEAIiE, Informatyka Stosowana, IV rok, 2008/2009
Implementacja algorytmów
Algorytm 1
start_light :-
nxt_open,
trigger_create(_,check_light,[nxt_stop,rotate,start_light]),
nxt_go(400).
check_light :-
nxt_light(Value,force),
Value > 50.
rotate :-
Angle is 90 + random(180),
nxt_rotate(350, Angle).
Algorytm 2
start_sonic :-
nxt_open,
trigger_create(_,check_distance,[nxt_stop,rotate, start_sonic]),
nxt_go(400).
check_distance :-
nxt_ultrasonic(Distance,force),
Distance < 30.
rotate :-
Angle is 90 + random(180),
nxt_rotate(350, Angle).
Zdjęcia robota
Zdjęcie robota w czasie testów początkowych.
Zdjęcie robota w czasie jazdy z zastosowaniem algorytmu 2.
Spostrzeżenia, napotkane problemy, wnioski
Przedstawione przez nas dwa algorytmy działają poprawnie jednak zachowują się niestabilnie.
- niestabilnośc wynika wprost z zastosowanego przez nas modelu rozwiązania tj.
start_light :-
nxt_open,
trigger_create(_,check_light,[nxt_stop,rotate,start_light]),
nxt_go(400).
- wykorzystana przez nas rekurencja tworzy w każdym nawrocie nowy proces/wątek, co przy braku synchronizacji z istniejącymi bardzo utrudnia/ uniemożliwia np. zatrzymanie robota po zaczęciu czynności.
- Przy uzyskaniu sychnchronizacji rozwiązanie to było by bardzo eleganckie.
Uwagi dotyczące funkcjonalności PLNXT