To jest stara wersja strony!


Algorytmy (echosonda)

Poniżej znajdują się algorytmy sterowania wykorzystujące echosondę. Aby sprawdzić działanie algorytmów należy przygotować tor przeszkód.

Unikanie przeszkód

Zapis słowny

  1. jedź do przodu
  2. jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej wróć do (1)
  3. obróć się o 900 w prawo
  4. idź do (1)

Zapis regułowy

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_90_degrees
 
Rule: 3
stop

Implementacja w Prologu

start :-
      ultrasonic_sensor(Value),
      Value > number,
      go(0,speed,force).
start :-
      ultrasonic_sensor(Value),
      Value =< number,
      turn(90,speed).
start :-
      go(0,0,0).

XTT

XTT

Objechanie przeszkody

Zapis słowny

  1. jedź do przodu
  2. jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej wróć do (1)
  3. obróć się o 900 w prawo
  4. jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej idź do (5)
  5. zrób krok do przodu
  6. jeżeli przeszkoda idź do (3) inaczej idź wykonaj kolejny punkt
  7. obróć się o 900 w lewo i idź do (1)

Zapis regułowy

Rule: 1
if ultrasonic_sensor_Value > number
then robot_state is go
 
Rule: 2
if ultrasonic_sensor_Value ≤ number
then robot_state is turn
 
Rule: 3
if robot_state is go
and previous_action is turn_right_90_degrees
then robot_action is go_one_step_foward
 
Rule: 4
if robot_state is go
and previous_action is go_foward
then robot_action is go_foward
 
Rule: 5
if robot_state is go
and previous_action is turn_left_90_degrees
then robot_action is go_foward
 
Rule: 6
if robot_state is turn
and previous_action is go_foward
then robot_action is turn_right_90_degrees
 
Rule: 7
if robot_state is turn
and previous_action is go_one_step_foward
then robot_action is turn_left_90_degrees

Implementacja w Prologu

state(go_foward). // Knowladge Base => previous state updated in fly.. initial state would also be state(go)
 
start :-
      ultrasonic_sensor(Value),
      Value > number,
      start_go.
 
start :-
      ultrasonic_sensor(Value),
      Value =< number,
      start_turn.
 
start :-
      go(0,0,0).
 
start_go :-
      state(go_foward),
      go(0,speed,force).
 
start_go :-
      state(go_step_foward),
      go_cm(distance,speed).
 
start_turn :-
      state(go_foward),
      turn_degrees(90,speed).
 
start_turn :-
      state(go_step_foward),
      turn_degrees(-90,speed).

XTT

XTT

Pokonywanie przeszkód

Zapis słowny

  1. jedź do przodu
  2. jeżeli przeszkoda zatrzymaj się (wskaźnik echosondy poniżej progu) idź do (3) inaczej wróć do (1)
  3. obróć się o 450 w prawo i zapisz odczyt czujnika
  4. obróć się o 1350 w lewo i zapisz odczyt czujnika
  5. jeżeli odczyt_1 większy od odczyt_2 obróć się o 1350 w prawo
  6. idź do (1)

Zapis regułowy

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

Implementacja w Prologu

start :-
      ultrasonic_sensor(Value),
      Value > number,
      go(0,speed,force).
start :-
      ultrasonic_sensor(Value),
      Value =< number,
      turn(90,speed).
start :-
      go(0,0,0).

XTT

I tak kolejne....

Zapis słowny

Implementacja w Prologu

XTT

Uwagi

Materiały

pl/miw/miw08_mindstormsdesign/strona_1.1207611216.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