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:piw20100526-17b [2010/05/29 13:49]
piw10
pl:dydaktyka:piw:2010:sprawozdania:piw20100526-17b [2019/06/27 15:50] (aktualna)
Linia 13: Linia 13:
 ---- ----
  
-====== ​======+====== ​Uwięziony ​====== 
 + 
 +Jak zawsze algorytm był pisany etapami i testowany w każdym kroku, co zdecydowanie ułatwia nam pracę. Największy problem był z odczytaniem wartości za pomocą nxt_light. Wartość zwracana przez robota dla danego koloru była różna w zależności czy Franek był odwrócony w stronę okna czy też w stronę sali. Niestety te wartości przy różnych kolorach i różnym ustawieniu względem okna nachodziły się na siebie, co uniemożliwiło nam dobranie odpowiednich współczynników. Pomysł był więc następujący,​ przenieść planszę na bardziej neutralne miejsce - podłoga. Jednak i to nie pomogło, błędy były mniejsze, ale zakresy wartości dla poszczególnych kolorów nachodziły na siebie. Podjęliśmy mimo wszystko próby wyznaczenia widełek dla danych kolorów, ale nasze testy zakończyły się nie pomyślnie. Algorytm został napisany w większej części. Niestety brak możliwości dobrania odpowiednich liczb przekreślił nasze perspektywy zakończenia zadania powodzeniem. Poniżej dotychczasowy efekt naszej pracy: 
 + 
 +<code prolog>​ 
 +% :- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + write('​-- start 0.1 --'​),​ 
 + nxt_goal(franek,​ my_actions). 
 + 
 +my_actions :- 
 + nxt_light_LED(activate),​ 
 + gogo. 
 + 
 +gogo :- 
 + stop, 
 + nxt_go(250),​ 
 + trigger_create(_,​ check_1, check_more). 
 + 
 +check_1 :- 
 + nxt_light(V,​ force), 
 + V > 60, 
 + V < 65. 
 +   
 +check_more :- 
 + stop, 
 + nxt_go_cm(50,​2),​ 
 + nxt_light(V,​ force), 
 + decide(V). 
 + 
 +decide(V) :- 
 + V < 60, 
 + write('​czarny'​),​ 
 + escape. 
 + 
 +decide(V) :- 
 + V >= 60, 
 + write('​czerwony'​). 
 + 
 +escape :- 
 + Angle is 150 + random(60),  
 + nxt_rotate(100,​ Angle, force), 
 + gogo. 
 +   
 +stop :- 
 + trigger_killall,​ 
 + nxt_stop. 
 +</​code>​ 
 + 
 +---- 
 + 
 +====== Porządki ====== 
 + 
 +Algorytm został napisany w całości, jednak wystąpił pewien problem. Mianowicie w czasie gdy Franek się obracał i napotkał przeszkodę. W momencie napotkania przeszkody robot jechał do przodu, ale tylko jednym kołem! Następnie już wracał używając obu. Efekt: obrót, obrót, jazda do tyłu. Mimo dobrze napisanego kodu błędu nie byliśmy w stanie wykryć (czyżby bug?) Koniec zajęć dobiegł końca, więc na tym zakończyliśmy naszą pracę danego laboratorium. A to wynik naszego sprząta Franka: 
 + 
 +<code prolog>​ 
 +% :- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + write('​-- start 0.0 --'​),​ 
 + nxt_goal(franek,​ sprzatacz). 
 + 
 +sprzatacz :- 
 + nxt_rotate(50,​ 360), 
 + trigger_create(_,​ przeszkoda_w_zasiegu,​ sprzataj). 
 + 
 +przeszkoda_w_zasiegu :- 
 + nxt_ultrasonic(V,​ force), 
 + V < 20. 
 + 
 +sprzataj :- 
 + stop, 
 + nxt_go_cm(400,​ 80), 
 + nxt_go_cm(-400,​ 80). 
 +   
 +stop :- 
 + trigger_killall,​ 
 + nxt_stop. 
 +</​code>​ 
 + 
 +---- 
 + 
 +====== Wnioski i spostrzeżenia ====== 
 + 
 +Dwukrotnie na komendę nxt_open otrzymaliśmy:​ 
 + 
 +<​code>​ 
 +ERROR: I/O error in write on stream $stream(388428( (Transport endpoint is not connected) 
 +   ​Exception:​ (13) nxt actions serial:​nxt_actions input setmode('​S1',​ switch, buolean) ? 
 +</​code>​ 
 +W takim wypadku pomagało jedynie ponowne uruchomienie komputera. Niestety nie znamy przyczyny powstawania tego błędu. 
 + 
 +  * duże zaskoczenie podczas wykrycia buga (algorytm sprzątacza) Robot zamiast jechać do przodu obracał się. Przypuszczamy,​ że było to spowodowane poprzednią rotacją robota. 
 + 
 +----
pl/dydaktyka/piw/2010/sprawozdania/piw20100526-17b.1275133757.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