Różnice

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

Odnośnik do tego porównania

pl:miw:miw08_mindstormsdesign:grid [2008/05/19 13:36]
miw
pl:miw:miw08_mindstormsdesign:grid [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Algorytmy omijania przeszkód ====== 
-Poniżej zestawiono kilka algorytmów omijania przeszkód. Algorytmy te w większości wykorzystują echosondę. 
- 
- 
- 
-===== Algorytm 1 ===== 
-{{ :​pl:​miw:​miw08_mindstormsdesign:​plansza.jpg?​150|plansza}} 
-Przed przystąpieniem do pracy należy przgotować planszę (plansza w postaci kwadratu złożona z 6x6 kwadratów o powierzchni mieszczącej robot mobilny). Zadaniem robota powinno być znalezienie czarnego kwadratu na planszy. Utrudnienie będzie polegać na tym, że w różnych miejscach na planszy pojawią się stojące przeszkody (rys. czerwone pola). Plansza powinna mieć białe obramowanie. 
-Na tak przygotowanej planszy, można postawić robota mobilnego w dowolnym punkcie. Robot powinien znaleźć czarne pole omijając po drodze przeszkody. 
- 
-==== Zapis słowny reguł ==== 
-      - jeżeli czarne pole to STOP 
-      - jeżeli białe pole to obróć się w prawo 
-      - jeżeli robot jest w odległości mniejszej niż 1/4 odległości granicznej od przeszkody to obróć o 180<​sup>​0</​sup>​ 
-      - jeżeli robot jest w odległości mniejszej niż 1/2 odległości granicznej od przeszkody to obróć w prawo o 90<​sup>​0</​sup>​ 
-      - jeżeli robot jest w odległości mniejszej niż odległości granicznej od przeszkody to obróć w lewo o 90<​sup>​0</​sup>​ 
-      - jedź do przodu 
- 
- 
-==== Zapis regułowy ==== 
-W poniższych regułach przyjęto, że reguły wykonują się w kolejności od 1 do 6. Jeżeli, któraś z reguł "​zadziała",​ to wówczas następuje powrót do ponownego sprawdzenia reguł od 1 do 6. 
-<code ada> 
-Rule: 1 
-if light_value == '​black'​ 
-then STOP 
- 
-Rule: 2 
-if light_value == '​white'​ 
-then turn = + 90 
- 
-Rule: 3 
-if ultrasonic_value < N/4 
-then turn = 180 
- 
-Rule: 4 
-if ultrasonic_value < N/2 
-then turn = 90 
- 
-Rule: 5 
-if ultrasonic_value < N 
-then turn = - 90 
- 
-Rule: 6 
-go = max 
-</​code>​ 
- 
- 
- 
-==== Implementacja w Prologu ==== 
-<code prolog> 
-start :- 
-      nxt_light_sensor(Port,​Value),​ 
-      Value == RGB_black, 
-      nxt_go(0). 
-start :- 
-      nxt_light_sensor(Port,​Value),​ 
-      Value == RGB_white, 
-      nxt_turn(Speed,​+90). 
-start :- 
-      ultrasonic_sensor(Value),​ 
-      Value =< N/4, 
-      nxt_turn(Speed,​+180). 
-start :- 
-      ultrasonic_sensor(Value),​ 
-      Value =< N/2, 
-      nxt_turn(Speed,​+90). 
-start :- 
-      ultrasonic_sensor(Value),​ 
-      Value =< N, 
-      nxt_turn(Speed,​-90). 
-start :- 
-      nxt_go(1). 
-</​code>​ 
- 
- 
- 
- 
- 
- 
- 
- 
-==== XTT ==== 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg8.png|XTT}} 
- 
-UWAGI!!!FIXME 
-   - Na powyższym diagramie XTT wykorzystano zapętlenie reguł. 
-   - Czy akcję początku i końca programu (START i STOP) powinny być jakoś dodatkowo zaznaczone na XTT? 
-   - W diagramie na potrzeby algorytmu stworzono pusty przebieg (zaznaczony na czerwono). W programie wykrywane jest to jako błąd. Jednak uważam, że warto przemyśleć opcję wprowadzenia '​pustej reguły'​ w calu przekierowania strumienia np. do innej tablicy. Oczywiście zamiast tego pola można było wprowadzić regułę dopełniającą pozostałe reguły w tablicy. 
-   - Ponadto w tablicy związanej z action_robot wprowadziłem akcję od pustego warunku (czyli taki '​else'​). Program wyświetla to jako błąd. Uważam, że wprowadzenie formuły/​pola '​else'​ mogłoby by być przydatne. Oczywiścię nie jest to problem, gdyż tak jak w wcześniejszej uwadze, można sztucznie wprowadzić regułę/​pole,​ które mogłoby to uzupełnić. 
  
pl/miw/miw08_mindstormsdesign/grid.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