Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100602-09d [2010/06/08 20:00] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100602-09d [2019/06/27 15:50] (aktualna) |
| |
===== Algorytm Sprzątacz ===== | ===== 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: |
| |
| <code>:- 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. |
| </code> |
| |
| |
===== Wnioski ===== | ===== 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 ===== | ===== Plik z algorytmem ===== |
| |
| {{:pl:dydaktyka:piw:2010:sprawozdania:sprzatacz_lytomy.pl|sprzatacz-lytomy}} |
| |