User Manual

115
Příklad 10: Konečný stavový automat, část 2
Adresář: <RP6Examples>\RP6BaseExamples\Example_05_Move_04_FSM2\
Soubor: RP6Base_Move_04_FSM2.c
POZOR: Robot se bude v tomto programu pohybovat!
Nyní vyzkoušíme konečný stavo automat s pohyblim robotem! Program je skutečně
jednoduchý. Nejdříve bliká LED 5. Přitom robot po s požaduje: “Můžete, prosím, někdo
stisknout le nárazník?. Kd to uděláte, přesune se RP6 asi o 15 cm dozadu a začne blikat
stavová LED 2. Obvykle nyní předpokládáte, že někdo stiskne pra nárazník, který způsobí, že
se robot opět přesune 15 cm dopředu
a cyklus se spustí od začátku.
Struktura konečného stavového automatu není nijak zvláštní. Je velmi podobná prvnímu
příkladu, který jste viděli výše, kde bylo v programu napsáno START Stav1 Stav2..., ale je
rozšířen přidáním několika podmíněných výrazů. V případě, že robot čeká, než se dokončí
pohyb, používají dva stavy volání funkce isMovementComplete()”. Uvnitř těchto stavů, program
le provádí jednoducčásti kódu, kde pomocí stopek přepí LED v intervalu 500ms. Tato
část může být samozřejmě nahrazená libovolnou posloupnos kódu třeba běžícím světlem
z příkladu 1.
Můžeme popsat řadu stránek o konečných stavových automatech a podobných tématech, ale
jak jsme již uvedli tento materiál je pouze příručka a ne referenční kniha konečných stavových
automatů. A tak raději přejdeme k dalším ukázkom programům
Příklad 11: Řízené chování robotu
Adresář: <RP6Examples>\RP6BaseExamples\Example_05_Move_04\
Soubor: RP6Base_Move_04.c
POZOR: Robot se bude v tomto programu pohybovat!
Předchozí příklady automatů vedou k sledujícímu programu, který implementuje jednoduc
řízení chování robotu. Pro zjednodušení používáme pouze dva způsoby chování. V dalších
příkladech budeme základní program postupně rozšiřovat, až se vytvoří jednoduc chování
hmyzu. První krok vytvoří š hmyz pouze se dvěma malými snímači, které hlásí kolize.
První dva způsoby chování se navají Projížďka a Únik. Chování Projížďka pouze říká
robotu jeď dopředu a nedělá žádné další aktivity. Samozřejmě můžeme přidat další věci, tj.
občas projíždění začek nebo zrychlování a zpomalování podle napě baterie. Kvůli
modularitě strukturovaného programu radíme raději navrhnout samostatný program, který bude
zahrnovat toto chování.
Na rozdíl od Projížďky je chování Únik docela složité a bude aktivní, jakmile razníky zjistí
kolizi. Podle toho, který razní se stlačí, robot couvne o několik centimetrů zpět, natočí se a
sledně se vrák řízení chování Projížďka.
Tuto strukturu můžeme vyjádřit jednoduchým diagramem:
Pomocí Supresor” S chování Únik potlačí výstup chování Projížďka a systému vnuřízení
motorů vlastními povely. Obvykle má Únik vyšší prioritu než Projížďka.