Różnice

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

Odnośnik do tego porównania

pl:miw:miw08_mindstormsdesign:strona_1 [2017/07/17 10:08]
pl:miw:miw08_mindstormsdesign:strona_1 [2019/06/27 15:50] (aktualna)
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 ====
 +
 +<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}}
  
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