Różnice

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

Odnośnik do tego porównania

pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09c [2009/01/26 09:59]
jsi08 problemy
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09c [2019/06/27 15:50]
Linia 1: Linia 1:
-Bolek: Lesiak, Stachura, Pracuch 
-====== Laboratorium ====== 
-=== Konstrukcja robota === 
-Do naszego ćwiczenia wykorzystaliśmy robota zbudowanego przez poprzednią grupę. Był on zbudowany na bazie Tribota i zaopatrzony w czujniki dźwięku, odległości,​ nacisku oraz światła. 
-=== Zdjęcie robota === 
-{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​foto020.jpg|}} 
-=== Algorytmy === 
-  * Realizowaliśmy algorytm sprzątacza. Pierwsza wersja miała opierać się na triggerach. Algorytm wyglądał następujaco. Robot obracał się dookoła i cały czas badał czy istnieje w odległości 20cm jakaś przeszkoda. Jeśli tak, zatrzymywał obrót i przystępował do wypchnięcia przeszkody poza obszar sprzątania po czym wracał na swoją pozycje i kontynuował obrót do 360 stopni. 
-  * Podobnie jak wyżej, z tym że algorytm bez triggerów. 
- 
- 
- 
-  sprzataj :-  
-      ​nxt_ultrasonic(Value,​force),​ 
-      Value < 30, 
-      ​write(Value),​ 
-      ​nxt_pincer(open),​ 
-      ​nxt_go_cm(400,​20),​ 
-      ​nxt_go_cm(-400,​20),​ 
-      ​nxt_pincer(close). 
-  sprzataj. 
-  obrot(0). 
-  obrot(X) :- 
-      ​nxt_rotate(400,​10),​ 
-      X > 0, 
-      Y is X - 10, 
-      ​sprzataj,​ 
-      ​obrot(Y). 
-  start :-  
-      ​nxt_open,​ 
-      ​obrot(360). 
- 
-=== Problemy === 
-  * Podczas realizacji algorytmu opartego na triggerach występowały błędy. 
- 
-Kod programu z triggerami: 
- 
-W tej wersji robot po napotkaniu przeszkody otwiera ramiona i jedzie do przodu, natomiast nie jedzie do tyłu - mimo, że komenda jazdy do tyłu jest między komendą "​nxt_pincer(open)"​ a "​nxt_go_cm(400,​10)"​. 
-Przyczyna błędu jest w komendzie: nxt_stop - naszym celem, było to, by zatrzymała komendę obrotu o 360 stopni (nxt_rotate(400,​360)) i faktycznie - zatrzymywała,​ ale oprócz tego miała wpływ również na komendę jazdy do tyłu, tzn. rozkaz nxt_go_cm(-400,​10) był anulowany. 
- 
-check_ultrasonic :- 
- nxt_ultrasonic(Value,​force),​ 
- Value < 25, 
- write(Value). 
- 
-ruch :-    ​ 
- nxt_pincer(open),​ %%% 
- nxt_go_cm(-400,​10),​ %%% 
- nxt_go_cm(400,​10). %%% 
-  
-ultrasonic :-  
- nxt_stop, %%% 
- ruch. 
- 
-sprzataj :- 
- nxt_open, 
- trigger_create(_,​check_ultrasonic,​ultrasonic),​ 
- nxt_rotate(400,​360). 
- 
-Podsumowując powyższy kod: nxt_stop zatrzymywała komendę, która następowała po niej. 
-Zaczęliśmy przypuszczać,​ że funkcja "​ultrasonic"​ (zawierająca nxt_stop) zostaje po raz drugi uruchomiona przez trigger, podczas gdy pierwsze działanie "​ultrasonic"​ jeszcze się nie skończyło (przypuszczenia nie udało się sprawdzić, wyjaśnienie poniżej). 
-Podjęliśmy więc próbę jednorazowego uruchomienia trigger'​a i ubicia go: 
- 
-[reszta kodu be zmian] 
- 
-ultrasonic :-  
- nxt_stop,  
- trigger_killall,​ %%% 
- ruch. 
- 
-sprzataj :- 
- nxt_open, 
- trigger_create_noreturn(_,​check_ultrasonic,​ultrasonic),​ %%% 
- nxt_rotate(400,​360). 
- 
-Próba ubicia triggera skończyła się błędem: ​ 
- 
-** Warning: [Thread 2] Thread running "​trigger_start_noreturn(main,​ check_ultrasonic,​ ultrasonic)"​ died on exception: Arithmetic: `angle/​1'​ is not a function** 
- 
- 
-Próbowaliśmy tez tworzyć triggera jak poprzednio przez trigger_create/​3,​ ale kończyło się to identycznym błędem. 
- 
-**Wnioski:​** 
-  * - trigger_create i trigger_create_noreturn nie działają tak jak powinny 
-  * - trigger_killall nie działa 
-  * - nxt_stop w funkcji wywoływanej przez triggera nie działa (prawdopodobnie przez to, że sam trigger_create źle działa) 
-  * - program bez triggerów działa dobrze 
- 
-=== Zmiany === 
-    *  
- 
-=== Plik z laboratorium === 
-Plik zawierający opisane wyżej algorytmy: 
-{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​nasze-21.zip|}} 
- 
  
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-09c.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