[[
✎ pl:miw:miw08_mindstormsdesign:strona_2
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== 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ą
pl/miw/miw08_mindstormsdesign/strona_2.1212752430.txt.gz
· ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry