Zapoznanie z PLNXT
Celem ćwiczenia było zapoznanie się z interfejsem programistycznym w prologu do Lego Mindstorms.
Przebieg Ćwiczenia
Sama konstrukcja robota wykożystywana w tym ćwiczeniu wydaje się nie być szczególnie istotna, warto nadmienić, że robot był samojezdy oraz posiadał nst. czujniki:
Komunikacja pomiędzy robotem a PC odbywała się za pomocą Bluetooth.
Po wstępnym zapoznaniu się z instrukcją
API przystąpiliśmy do jego testowania. W pierwszej fazie udało się nam przetestować działanie podstawowych funkcji
API m. in.:
nxt_open, nxt_close - otwarcie/zamknięcie połączenia
nxt_voltage_millivolt(Voltage) - odczyt napięcia na bateriach
nxt_rotate(350,360) - obrót w prawo
nxt_go(300) - jazda do przodu z prędkością 300 stopni/sekundę
Implementacja Algorytmu
:- consult('../plnxt/plnxt.pl').
start :-
nxt_open,
trigger_create(_,check_distance,[nxt_stop, rotate90]),
trigger_create(_, check_stop, [nxt_stop, nxt_close]),
nxt_go(500).
check_distance :-
nxt_ultrasonic(Distance,force),
Distance < 15.
rotate90 :-
go_rotate,
trigger_create(_,check_distance,[nxt_stop, rotate90]),
nxt_go(500).
go_rotate :-
nxt_rotate(350, 90), sleep(1),
nxt_go_cm(500,30),
nxt_rotate(350,-90),sleep(1),
nxt_go_cm(500,30),
nxt_rotate(350,-90),sleep(1),
nxt_go_cm(500,30),
nxt_rotate(350,90),sleep(1).
check_stop :-
nxt_touch(Stop,force),
Stop = 1.
Robot porusza się do przodu z zadaną prędkością, gdy zbliży się do przeszkody wykonuje serię manewrów umożliwiających jej ominięcie i jedzie dalej aż do napotkania kolejnej przeszkody, poczym znów ją omija, wyłaczenie programu następuje poprzez wciśnięcie czujnika dotyku. Zrezygnowaliśmy tutaj ze sterowania robotem poprzez klaśnięcia ponieważ system ten źle sprawdza się w warunkach laboratorium i jest bardzo ciężki w testowaniu.
omijanie.pl
Wnioski
API prologu jest zdecydowanie wygodniejszą formą tworzenia oprogramowania dla Mindstorms niż kożystanie z dostarczanego programu firmy LEGO, z którego kożystaliśmy na wcześniejszych zajęciach. Warto było by się zastanowić nad innym sposobem rozkazywania robotowi w trakcie jego działania niż klaskanie (co niestety często się zdarza w instrukcjach), z bardzo prozaicznego powodu ponieważ system klaskań nie sprawdza się w warunkach laboratorium.