====== 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 900 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 900 w lewo i idź do (1)
==== Zapis regułowy ====
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
==== Implementacja w Prologu ====
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).
==== XTT ====
{{:pl:miw:miw08_mindstormsdesign:alg3.png|XTT}}