Różnice

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

Odnośnik do tego porównania

pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11b [2009/01/25 14:04]
jsi08
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11b [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Przygotowanie ====== 
-Mieliśmy gotowego robota Jasia, lekko zmodyfikowanego Tribota. Posiadał czujnik światła skierowany na podłogę, czujnik dźwięku i czujnik dotyku. Nie ingerowaliśmy w konstrukcję. 
  
-====== Więzień ====== 
-===== Algorytm ===== 
- 
-Postanowiliśmy przygotować "​Więźnia"​ do ucieczki z więzienia. Po krótce, Jasio miał jeździć po ograniczonym czarną linią terenie, aż nie znajdzie "​czerwonego klucza"​. Po jego znalezieniu,​ miał za zadanie zwiewać, gdzie pieprz rośnie. Problemem okazał się fakt, że nie mieliśmy na planszy dostępu do koloru czerwonego, ale poradziliśmy sobie z problemem. 
- 
-Dodatkowo postanowiliśmy jako urozmaicenie dołożyć, "​kręciołę",​ czyli kręcenie się wokół siebie Jasia, ze szczęścia po ucieczce. Jasio zaczynał tańczyć na klaśnięcie. 
- 
-{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​dsc00157.jpg|}} 
- 
-===== Kod programu ===== 
- 
-<code prolog> 
-:​-consult('​plnxt.pl'​). 
- 
-start:- 
- nxt_open, 
- nxt_light_LED(activate,​force),​ 
- jazda, 
- trigger_create(_,​pushed,​[nxt_stop,​nxt_light_LED(passivate,​force),​nxt_close]). 
- 
-jazda:- 
- nxt_go(150),​ 
- trigger_create(_,​light,​[nxt_stop,​cofnij]),​ 
- trigger_create(_,​red,​[nxt_stop,​uciekaj]). 
- 
-cofnij:- 
- nxt_go_cm(-150,​5),​ 
- nxt_rotate(200,​105),​ 
- jazda. 
- 
-uciekaj:- 
- nxt_go(600),​ 
- trigger_create(_,​klask,​[nxt_stop,​kreciola]). 
- 
-kreciola:- 
- nxt_rotate(500,​360),​ 
- uciekaj. 
- 
-pushed:- 
- nxt_touch(Value,​force),​ 
- Value=1. 
- 
-light:-  
- nxt_light(Value,​force),​ 
- Value<​35. 
- 
-red:- 
- nxt_light(Value,​force),​ 
- Value>​50,​ 
- Value<​70. 
- 
-klask:- 
- nxt_sound(Value,​force),​ 
- Value>​90. 
-</​code>​ 
- 
-Jak widać powyżej, kod nie był złożony. Należy tutaj podkreślić ewidentną zaletę środowiska jakim jest prolog. Zbudowanie takiego algorytmu w tradycyjnym języku programowania mogłoby zdecydowanie przekroczyć ograniczenia czasowe laboratoriów i pewnie wielokrotnie przewyższyć długością i nieczytelnością kod w prologu. 
- 
-====== Problemy ====== 
-Niestety po dopisaniu "​kręcioły"​ natkneliśmy się na dziwne i trudne do przewidzenia zachowanie Jasia. Po przeładowaniu "​xpce"​ i ponownemu włączeniu "​Więźnia",​ Jasio od początku reagował na klaśnięcia,​ powodujące "​kręciołę"​. Przy kolejnych wyłączeniach "​xpce"​ pojawiały się podobne komunikaty: 
-<​code>​ 
-?- start. 
-Yes 
-?- halWarning: [Thread 4] Thread running "​trigger_start(pushed,​ [nxt_stop, nxt_light_LED(passivate,​ force), nxt_close], 1)" died on exception: source_sink `nxt_close'​ does not exist 
-Warning: [Thread 3] Thread running "​trigger_start(klask,​ [nxt_stop, kreciola], 1)" died due to failure 
-?- halt. 
-3 threads wouldn'​t die 
-</​code>​ 
-Najwyraźniej wątki, stworzone dla konkretnych czujników, nie były kończone, po skorzystaniu z wyłącznika dotykowego, który też działał na osobnym wątku. Po ponownym włączeniu "​xpce"​ nie zakończone wątki ciągle działały i powodowały nieprzewidziane rezultaty. ​ 
- 
- 
-{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​dsc00159.jpg|}} 
- 
- 
-Ponadto, jak widać powyżej, musieliśmy się zmagać z niesfornością robotów.. i ich operatorów ;-) 
- 
-====== Usprawnienia ====== 
-Dość dużą trudność sprawiło nam ustalenie wartości czerni i czerwieni, dla sensora świetlnego. Można by zaszyć w bibliotece plnxt stałe odpowiadające za te kolory, bądź wprost triggery odpowiadające za ich detekcje. Ostatecznie dopisanie w dokumentacji zakresów dla poszczególnych kolorów. ​ 
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-11b.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