Sprawozdanie 5

Robot: Czesław
Data wykonania: 2.06.2010 godz. 9:30
Autorzy: Martyka Łukasz, Stereńczak Agata, Szczurek Joanna

Budowa robota

Pierwszym robotem którego otrzymaliśmy na laboratorium był robot Dyzio. Niestety po dosłownie kilku minutach mieliśmy z nim problemy. Nie wykonywał naszych poleceń. Dlatego poprosiliśmy o wymianę robota. W zamian za niego otrzymaliśmy Czesława, który był już w pełni zbudowany i współpraca z nim przebiegała bezproblemowo.

Algorytm Sprzątacz

Na tym laboratorium zajęliśmy się algorytmem sprzątacz. Z powodu niewielkiej dostępnej przestrzeni, zmieniliśmy odległość wykrywania przeszkód przez robota z 40 cm na 20 cm.

Sprzątacz działa w ten sposób, że w pętli zwiększamy wartość kąta obrotu o 10 stopni aż do 360 stopni. Po obrocie o kąt 10 stopni robot sprawdza czy na jego drodze w promieniu 20 cm nie znajduje się jakiś przedmiot ( funkcja badaj_ultra ). Jeśli nie, to obraca się dalej, a jeśli znajdzie przedmiot to podjeżdża o 40 cm do przodu a następnie o 40 cm w tył ( funkcja podjedz ).

W efekcie naszej pracy powstały dwie wersje programu.

Filmik obrazujący działanie pierwszej wersji sprzątacza Sprzątacz 1
Jak widać robot znajduje przeszkodę, jedzie do przodu usuwając ją z drogi ale potem zaczyna się kręcić i kolejne polecenia nie są wykonywane poprawnie.

Filmik obrazujący działanie drugiej wersji sprzątacza Sprzątacz 2
W tej wersji robot usuwa znalezioną przeszkodę, odwraca się, wraca prawie na swoje początkowe miejsce i wtedy rozpoczyna poszukiwania, ale nie jest to z tego miejsca w którym skończył.

Kod algorytmu wersji drugiej:

:- consult('plnxt.pl').
 
start :- Angle is 0,
        my_loop(Angle).

my_loop(Angle) :- Angle < 360,
                write(Angle),   
                badaj_ultra,
                NewAngle is Angle + 10,
                my_loop(NewAngle).
 
obrot :- write('obrot'),
        nxt_rotate(360, 10, force).

badaj_ultra :-
        nxt_ultrasonic(Ultra,force),
        Ultra < 20,
        podjedz,
        obrot.

badaj_ultra :-
        nxt_ultrasonic(Ultra,force),
        Ultra >= 20,
        obrot.

podjedz :- nxt_go_cm(400, 40),
         sleep(1),
        nxt_go_cm(-400, 40).
        
stop :-
        nxt_stop,
        nxt_close.
 

Wnioski

Aby sprawdzić, czy program nie wykonywał się poprawnie z powodu błędów implementacyjnych wykonaliśmy test, polegający na wywołaniu samej funkcji podjedz z konsoli. W tym przypadku działała ona poprawnie. Niestety przy wywoływaniu całego programu w tym miejscu występowały problemy. Na podstawie tego możemy wnioskować że błędy są skutkiem złej współpracy PLNXT ze sprzętem.

Plik z algorytmem

pl/dydaktyka/piw/2010/sprawozdania/piw20100602-09d.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