Różnice

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

Odnośnik do tego porównania

pl:miw:miw08_mindstormsdesign:strona_1 [2008/06/03 01:34]
miw
pl:miw:miw08_mindstormsdesign:strona_1 [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Algorytmy (echosonda) ====== 
-Poniżej znajdują się algorytmy sterowania wykorzystujące **echosondę**. Aby sprawdzić działanie algorytmów należy przygotować tor przeszkód. 
- 
-===== Objechanie przeszkody ===== 
-==== Zapis słowny ==== 
-      - jedź do przodu ​ 
-      - 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 
-      - 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 ==== 
- 
-atrybuty: 
-  * ultras_v 
-  * robot_state 
-  * prev_action 
-  * robot_action 
-akcje 
-  * zmiana wart atrybutu? ​ 
- 
-pomieszanie ​ 
-  * deklaratywne/​proceduralne 
-  * reguły/​uruchamianie 
- 
-model przetwarzania:​ 
-  * pojedyncze przejscie, 
-  * monitorowanie?​ 
-  * nawroty? 
- 
-<code ada> 
-Rule: 1 
-if ultrasonic_Value > 50 and go ≠ 0 
-then go := 100 and go_cm := 0 and turn := 0 
- 
-Rule: 2 
-if ultrasonic_Value > 50 and go = 0 and turn = 0 
-then go := 100 and go_cm := 0 and turn := 0 
- 
-Rule: 3 
-if ultrasonic_Value > 50 and go = 0 and turn < 0 
-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>​ 
- 
- 
- 
- 
- 
-==== Implementacja w Prologu ==== 
-<code prolog> 
- 
-state(go). // Knowladge Base => previous state updated in fly.. initial state would also be state(go) 
- 
-start :- 
-      nxt_ultrasonic_sensor(port,​Value) 
-      Value > 50, 
-      start_go. 
- 
-start :- 
-      nxt_ultrasonic_sensor(port,​Value) 
-      Value =< 50, 
-      start_turn. 
- 
-start :- 
-      nxt_go(0). 
- 
-start_go :- 
-      state(go), 
-      nxt_go(0). 
- 
-start_go :- 
-      state(go_cm),​ 
-      nxt_go_cm(distance,​speed). 
- 
-start_turn :- 
-      state(go), 
-      nxt_turn_degrees(speed,​90). 
- 
-start_turn :- 
-      state(go_cm),​ 
-      nxt_turn_degrees(speed,​-90). 
-</​code>​ 
- 
- 
- 
-==== XTT ==== 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg3.png|XTT}} 
  
pl/miw/miw08_mindstormsdesign/strona_1.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