Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_mindstormsdesign:strona_2 [2008/05/19 13:17]
miw
pl:miw:miw08_mindstormsdesign:strona_2 [2008/06/06 14:15]
miw
Linia 1: Linia 1:
-====== Poruszanie się wzdłuż linii ====== 
-Poniżej znajdują się algorytm sterowania wykorzystujący **sensor natężenia światła**. ​ 
  
-===== Algorytm 1 ===== 
-Aby sprawdzić działanie algorytmu należy przygotować makietę z narysowaną czarną linią (najlepiej na białym tle). W algorytmie założono, że robot znajduje się na czarnej linii w chwili startu. Zadaniem robota jest poruszanie się wzdłuż linii. 
- 
-==== Zapis słowny ==== 
- 
-      - jedź do przodu jeżeli widzisz czarną linię, inaczej idź do pkt (2) 
-      - obracaj się w prawo o N<​sup>​0</​sup>​ póki obrót < 45<​sup>​0</​sup>​. Jeżeli linia czarna idź do (1). Jeżeli obrót > 45<​sup>​0</​sup>​ idź do (3). 
-      - obróć się w lewo o 45<​sup>​0</​sup>​. Obracaj się o -N<​sup>​0</​sup>​ w lewo póki obrót > -45<​sup>​0</​sup>​. Jeżeli linia czarna idź do (1). Jeżeli obrót < -45<​sup>​0</​sup>​ to STOP 
- 
- 
- 
-==== Zapis regułowy ==== 
-Poniżej został zastosowany zupełny zapis reguł. W zapisie w Prologu zapis ten ulegnie zmianie. 
-<code ada> 
-Rule: 1 
-if light_value == '​black'​ 
-then go = 1 and trun_mem = 0 
- 
-Rule: 2 
-if light_value != '​black'​ and turn_mem in [0,45) 
-then turn = 1 and turn_mem += turn 
- 
-Rule: 3 
-if light_value != '​black'​ and turn_mem in (-45,0) 
-then turn = 1 and turn_mem += turn 
- 
-Rule: 4 
-if light_value != '​black'​ and turn_mem >= 45 
-then turn = -turn_mem and turn_mem = -1 
- 
-Rule: 5 
-if light_value != '​black'​ and turn_mem not in (-45,0) and not in [0,90) 
-then STOP 
- 
- 
-</​code>​ 
- 
- 
- 
- 
-==== Implementacja w Prologu ==== 
- 
-<code prolog> 
-start :- 
-      nxt_light_sensor(Port,​Value),​ 
-      Value = RGB_black, 
-      assert(turn_mem(0)),​ 
-      nxt_go(0). 
-start :- 
-      turn_mem(Value),​ 
-      Value >= 0, 
-      Value < 45, 
-      nxt_turn(Speed,​1) 
-      retractall(turn_mem(_)),​ 
-      increment(Value,​X),​ 
-      assert(turn_mem(X)). 
-start :- 
-      turn_mem(Value),​ 
-      Value >= 45, 
-      nxt_turn(Speed,​-Value),​ 
-      retractall(turn_mem(_)),​ 
-      assert(turn_mem(-1)). 
-start :- 
-      turn_mem(Value),​ 
-      Value < 0, 
-      Value > -45, 
-      nxt_turn(Speed,​-1),​ 
-      retractall(turn_mem(_)),​ 
-      decrement(Value,​X),​ 
-      assert(turn_mem(X)). 
-start :- 
-      nxt_go(0). 
-</​code>​ 
- 
- 
- 
- 
-==== XTT ==== 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg5.png|XTT}} 
- 
- 
-{{:​pl:​miw:​miw08_mindstormsdesign:​alg6.png|XTT2}} 
- 
-UWAGI!!! FIXME 
-  * Problem z wpisaniem wartości z ujemną wartością 
- 
-====== Uwagi ====== 
-====== Materiały ====== 
pl/miw/miw08_mindstormsdesign/strona_2.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