Laboratorium (zapoznanie z PLNXT) - Agatka

Środa godz. 17.00
Marcin Armata
Jakub Mytnik

Kody programów

Algorytm 1

Robot porusza się dowolnie wewnątrz obszaru na planszy testowej ograniczonego czarną linią. Nie może poza niego wyjechać! Gdy najedzie na czarną linię, powinien zawrócić. Niekoniecznie o 180 stopni. Np. Angle is 120 + random(120) zunifikuje Angle z liczbą z przedziału od 120 do 240. Można jej użyć jako kąt obrotu robota.

:- consult('plnxt.pl').
 
start :-
	trigger_create(_,check_light,[nxt_rotate(300,300,force),start]),
	nxt_go(180).
 
check_light :-
	nxt_light(Light,force),
	Light < 16.

Algorytm 2

Robot przemieszcza się po pomieszczeniu i zmienia kierunek poruszania się, gdy przed sobą napotka przeszkodę.

:- consult('plnxt.pl').
 
start :-
    trigger_create(_,check_distance,[nxt_stop,nxt_rotate(300,300),start]),
    nxt_go(300).
 
check_distance :-
    nxt_ultrasonic(Distance,force),
    Distance < 20.

Spostrzeżenia, napotkane problemy, wnioski.

Ze względu na maksymalne uproszczenie naszych algorytmów połączenie (nxt_open) otwieraliśmy po załadowaniu powłoki SWIPL oraz pliku plnxt.pl ([plnxt].) przed uruchomieniem predykatu start. Aby zatrzymać działanie programu należało w powłoce SWIPL wydać polecenie nxt_stop.

ctr-z

Pierwszy napotkany przez nas problem dotyczył nieprawidłowego zamknięcia programu przy użyciu kombinacji klawiszy ctr-z. (należy używać ctr-d)

nxt_rotate

Kolejny problem dotyczył realizacji poelecenia nxt_rotate przez Agatkę. Z niewiadomych dla nas powodów Agatka nie chciała wykonać obrotów o dużą wartość kąta obrotu np: nxt_rotate(350,360). Metodą prób i błędów ustaliliśmy, że obrót realizowany jest dla wartości kąta mniejszych bądź równych 300 stopni - dlatego też w naszych algorytmach stosujemy stałą wartość obrotu nxt_rotate(300, 300) Wydaje nam się, że problem może dotyczyć blokowania się mechanizmu koła przy dużej wartości kąta. Dla zdiagnozowania źródła problemu należałoby jeszcze przetestować różne wartości prędkości obrotu dla dużych kątów np. nxt_rotate(100, 360) i nxt_rotate(600, 360) ponieważ nie wiemy czy prędkość obrotu ma tutaj znaczenie.

Załączniki

Zdjęcia

Ze względu na chwilowe oblężenie planszy z czarną linią zdjęcia robiliśmy przy swoim stanowisku. Zdjęcia przedstawiają realizację algorytmu pierwszego. Koło imituje czarną linię. Czujnik światła umieszczony po prawej stronie robota.

Zdjęcie 1 - Agatka zbliża się do linii.

dsc00110.jpg

Zdjęcie 2 - Agatka zatrzymuje się wykrywając kolor czarny czujnikiem światła.

dsc00111.jpg

Zdjęcie 3 - Agatka odjeżdża po wykonaniu obrotu o 300 stopni.

dsc00112.jpg

Kod programów

pl/dydaktyka/piw/2009/sprawozdania/piw20090408-17e.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0