====== 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 [[http://www.youtube.com/watch?v=5ozMIMAn4z4|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 [[http://www.youtube.com/watch?v=t4DmWjR37rE|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:sprzatacz_lytomy.pl|sprzatacz-lytomy}}