Różnice

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

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:miw:miw08_mindstormsdesign:grid [2008/05/18 21:19]
miw utworzono
pl:miw:miw08_mindstormsdesign:grid [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Algorytmy omijania przeszkód ====== ====== Algorytmy omijania przeszkód ======
 Poniżej zestawiono kilka algorytmów omijania przeszkód. Algorytmy te w większości wykorzystują echosondę. Poniżej zestawiono kilka algorytmów omijania przeszkód. Algorytmy te w większości wykorzystują echosondę.
 +
 +
 +
 ===== Algorytm 1 ===== ===== Algorytm 1 =====
-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 milny). 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.+{{ :​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ł ==== ==== Zapis słowny reguł ====
       - jeżeli czarne pole to STOP       - jeżeli czarne pole to STOP
Linia 10: Linia 16:
       - 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>​       - 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       - jedź do przodu
 +
  
 ==== Zapis regułowy ==== ==== Zapis regułowy ====
Linia 15: Linia 22:
 <code ada> <code ada>
 Rule: 1 Rule: 1
-if laser_value ​== '​black'​+if light_value ​== '​black'​
 then STOP then STOP
  
 Rule: 2 Rule: 2
-if laser_value ​== '​white'​+if light_value ​== '​white'​
 then turn = + 90 then turn = + 90
  
Linia 37: Linia 44:
 go = max go = max
 </​code>​ </​code>​
 +
 +
 +
  
 ==== Implementacja w Prologu ==== ==== Implementacja w Prologu ====
 <code prolog> <code prolog>
 start :- start :-
-      ​ultrasonic_sensor(Value), +      ​nxt_light_sensor(Port,Value), 
-      Value > number+      Value == RGB_black
-      ​go(0,​speed,​force).+      ​nxt_go(0).
 start :- start :-
-      ​ultrasonic_sensor(Value), +      ​nxt_light_sensor(Port,Value), 
-      Value =< number+      Value == RGB_white
-      ​turn(90,speed).+      ​nxt_turn(Speed,+90).
 start :- start :-
-      ​go(0,0,0).+      ​nxt_ultrasonic_sensor(port,Value), 
 +      Value =< N/4, 
 +      nxt_turn(Speed,​+180). 
 +start :- 
 +      nxt_ultrasonic_sensor(port,​Value),​ 
 +      Value =< N/2, 
 +      nxt_turn(Speed,​+90). 
 +start :- 
 +      nxt_ultrasonic_sensor(port,​Value),​ 
 +      Value =< N, 
 +      nxt_turn(Speed,​-90). 
 +start :- 
 +      nxt_go(1).
 </​code>​ </​code>​
  
  
-==== XTT ==== 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg11.png|XTT}} 
  
  
 +
 +
 +
 +
 +==== 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.1211138361.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (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