Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_mindstormsdesign:strona_1 [2008/03/30 22:33] miw |
pl:miw:miw08_mindstormsdesign:strona_1 [2008/06/03 01:34] miw |
====== Unikanie przeszkód ====== | ====== Algorytmy (echosonda) ====== |
===== Zapis słowny ===== | Poniżej znajdują się algorytmy sterowania wykorzystujące **echosondę**. Aby sprawdzić działanie algorytmów należy przygotować tor przeszkód. |
- 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 | |
- idź do (a) | |
===== Implementacja w Prologu ===== | |
===== XTT ===== | |
| |
====== Objechanie przeszkody ====== | ===== 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 ( c) inaczej wróć do (a) | - 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 |
| - jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej idź do (5) |
- zrób krok do przodu | - zrób krok do przodu |
- obróć się o 90<sup>0</sup> w lewo i idź do (a) | - jeżeli przeszkoda idź do (3) inaczej idź wykonaj kolejny punkt |
===== Implementacja w Prologu ===== | - obróć się o 90<sup>0</sup> w lewo i idź do (1) |
===== XTT ===== | |
| |
| |
| |
| |
| ==== 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> |
| |
| |
====== Pokonywanie przeszkód ====== | ==== XTT ==== |
===== Zapis słowny ===== | {{:pl:miw:miw08_mindstormsdesign:alg3.png|XTT}} |
- 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) | |
===== Implementacja w Prologu ===== | |
===== XTT ===== | |
| |
====== I tak kolejne.... ====== | |
===== Zapis słowny ===== | |
===== Implementacja w Prologu ===== | |
===== XTT ===== | |