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:miw:miw08_mindstormsdesign:strona_1 [2008/04/07 20:30]
miw
pl:miw:miw08_mindstormsdesign:strona_1 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Algorytmy (echosonda) ====== ====== Algorytmy (echosonda) ======
 Poniżej znajdują się algorytmy sterowania wykorzystujące **echosondę**. Aby sprawdzić działanie algorytmów należy przygotować tor przeszkód. Poniżej znajdują się algorytmy sterowania wykorzystujące **echosondę**. Aby sprawdzić działanie algorytmów należy przygotować tor przeszkód.
-===== Unikanie przeszkód ===== 
  
 +===== Objechanie przeszkody =====
 ==== Zapis słowny ==== ==== Zapis słowny ====
-      - jedź do przodu+      - jedź do przodu ​
       - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej wróć do (1)       - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej wróć do (1)
       - obróć się o 90<​sup>​0</​sup>​ w prawo       - obróć się o 90<​sup>​0</​sup>​ w prawo
-      - idź do (1)+      - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej idź do (5) 
 +      - zrób krok do przodu 
 +      - jeżeli przeszkoda idź do (3) inaczej idź wykonaj kolejny punkt 
 +      - obróć się o 90<​sup>​0</​sup>​ w lewo i idź do (1)
  
-==== Zapis regułowy ==== 
-<code ada> 
-Rule: 1 
-if ultrasonic_sensor_Value > number 
-then robot_action is go_foward 
  
-Rule: 2 
-if ultrasonic_sensor_Value ≤ number 
-then robot_action is turn_right 
  
-Rule: 3 // co z ta reguła ??? 
-if error 
-then stop 
-</​code>​ 
  
-==== Implementacja w Prologu ==== 
-<code prolog> 
-start :- 
-      ultrasonic_sensor(Value),​ 
-      Value > number, 
-      go(0,​speed,​force). 
-start :- 
-      ultrasonic_sensor(Value),​ 
-      Value =< number, 
-      turn(90,​speed). 
-start :- 
-      go(0,0,0). 
-</​code>​ 
-==== XTT ==== 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg1_1_1.png|XTT}} 
  
-===== Objechanie przeszkody ===== 
-==== Zapis słowny ==== 
-      - jedź do przodu ​ 
-      - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do ( c) inaczej wróć do (a) 
-      - obróć się o 90<​sup>​0</​sup>​ w prawo 
-      - zrób krok do przodu 
-      - obróć się o 90<​sup>​0</​sup>​ w lewo i idź do (a) 
 ==== Zapis regułowy ==== ==== Zapis regułowy ====
 +
 <code ada> <code ada>
 Rule: 1 Rule: 1
-if ultrasonic_sensor_Value ​number +if ultrasonic_Value ​50 and go ≠ 0 
-then robot_action is go_foward+then go := 100 and go_cm := 0 and turn := 0
  
 Rule: 2 Rule: 2
-if ultrasonic_sensor_Value ≤ number +if ultrasonic_Value > 50 and go = 0 and turn = 0 
-then robot_action is turn_right+then go := 100 and go_cm := 0 and turn := 0
  
-Rule: 3 // co z ta reguła ??? +Rule: 3 
-if error +if ultrasonic_Value > 50 and go = 0 and turn < 0 
-then stop+then go := 100 and go_cm := 0 and turn := 0 
 + 
 +Rule: 4 
 +if ultrasonic_Value > 50 and go = 0 and turn > 0 
 +then go_cm := 10 and go := 0 and turn := 0 
 + 
 +Rule: 5 
 +if ultrasonic_Value ≤ 50 and go ≠ 0 
 +then turn := 90 and go := 0 and go_cm := 0 
 + 
 +Rule: 6 
 +if ultrasonic_Value ≤ 50 and go = 0 and turn ≠ 0 
 +then turn := 0 and go := 0 and go_cm := 10 
 + 
 +Rule: 7 
 +if ultrasonic_Value ≤ 50 and go = 0 and turn = 0 and go_cm = 0 
 +then turn := 90 and go := 0 and go_cm := 0 
 + 
 +Rule: 8 
 +if ultrasonic_Value ≤ 50 and go = 0 and turn = 0 and go_cm ≠ 0 
 +then turn := -90 and go := 0 and go_cm := 0
 </​code>​ </​code>​
 +
 +
 +
 +
  
 ==== Implementacja w Prologu ==== ==== Implementacja w Prologu ====
 <code prolog> <code prolog>
 +
 +state(go). // Knowladge Base => previous state updated in fly.. initial state would also be state(go)
 +
 start :- start :-
-      ​ultrasonic_sensor(Value), +      ​nxt_ultrasonic_sensor(port,Value) 
-      Value > number+      Value > 50
-      ​go(0,​speed,​force).+      ​start_go. 
 start :- start :-
-      ​ultrasonic_sensor(Value), +      ​nxt_ultrasonic_sensor(port,Value) 
-      Value =< number+      Value =< 50
-      ​turn(90,​speed).+      ​start_turn. 
 start :- start :-
-      ​go(0,0,0). +      ​nxt_go(0).
-</​code>​ +
-==== XTT ==== +
-===== Pokonywanie przeszkód ===== +
-==== Zapis słowny ==== +
-      - jedź do przodu +
-      - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do ( c) inaczej wróć do (a) +
-      - obróć się o 45<​sup>​0</​sup>​ w prawo i zapisz odczyt czujnika +
-      - obróć się o 135<​sup>​0</​sup>​ w lewo i zapisz odczyt czujnika +
-      - jeżeli odczyt_1 większy od odczyt_2 obróć się o 135<​sup>​0</​sup>​ w prawo +
-      - idź do (a) +
-==== Zapis regułowy ==== +
-<code ada> +
-Rule: 1 +
-if ultrasonic_sensor_Value > number +
-then robot_action is go_foward+
  
-Rule2 +start_go ​:- 
-if ultrasonic_sensor_Value ≤ number +      ​state(go),​ 
-then robot_action is turn_right+      ​nxt_go(0). 
 + 
 +start_go :- 
 +      state(go_cm),​ 
 +      nxt_go_cm(distance,​speed). 
 + 
 +start_turn :- 
 +      state(go),​ 
 +      nxt_turn_degrees(speed,​90).
  
-Rule3 // co z ta reguła ??? +start_turn ​:- 
-if error +      ​state(go_cm),​ 
-then stop+      ​nxt_turn_degrees(speed,​-90).
 </​code>​ </​code>​
  
-==== Implementacja w Prologu ==== + 
-<code prolog>​ +
-start :- +
-      ultrasonic_sensor(Value),​ +
-      Value > number, +
-      go(0,​speed,​force). +
-start :- +
-      ultrasonic_sensor(Value),​ +
-      Value =< number, +
-      turn(90,​speed). +
-start :- +
-      go(0,​0,​0). +
-</​code>​+
 ==== XTT ==== ==== XTT ====
 +{{:​pl:​miw:​miw08_mindstormsdesign:​alg3.png|XTT}}
  
-===== I tak kolejne.... ===== 
-==== Zapis słowny ==== 
-==== Implementacja w Prologu ==== 
-==== XTT ==== 
-====== Uwagi ====== 
-====== Materiały ====== 
pl/miw/miw08_mindstormsdesign/strona_1.1207593003.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