Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:piw:2010:sprawozdania:piw20100602-09d [2010/06/08 19:57]
piw10
pl:dydaktyka:piw:2010:sprawozdania:piw20100602-09d [2019/06/27 15:50] (aktualna)
Linia 10: Linia 10:
  
 ===== 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 =====
 +
 +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}}
  
pl/dydaktyka/piw/2010/sprawozdania/piw20100602-09d.1276019857.txt.gz · ostatnio zmienione: 2019/06/27 15:54 (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