User Manual
112
Příklad používá blokovaný režim funkcí pro jízdu a otáčení, který bude automaticky volat
task_RP6System. Proto nemusíme tuto funkci volat opakovaně.
Příklad 8: Pohyb robotu po čtverci
Adresář: <RP6Examples>\RP6BaseExamples\Example_05_Move_03\
Soubor: RP6Base_Move_03.c
POZOR: Robot se bude v tomto programu pohybovat!
Nyní se robot pokusí pohybovat po čtverci s délkou strany 30cm. Po dokončení jízdy se otočí a
pohybuje se opačným směrem.
To bude fungovat pouze s přesně kalibrovanými enkodéry, jinak nemusí být pravé úhly přesné
(tj. například 80° nebo 98°). Příklad tedy předvádí také složitosti při přesném ovládání pásového
vozidla se zpětnou vazbou jen od signálu z enkodérů. V kapitole 2 jsme již tento problém
probírali. V závislosti na povrchu podlahy budou pásy klouzat a smýkat, což sníží skutečnou
vzdálenost v porovnání se změřenou hodnotou. Správné programování umožňuje kompenzaci
těchto chyb, ale raději se nesnažte dosáhnout 100% přesnost pouze pomocí enkodérů. Pro
přesné ovládání polohy by se měly použít externí snímače.
Příklad 9: Exkurze – konečný stavový automat
Adresář: <RP6Examples>\RP6BaseExamples\Example_05_Move_04_FSM\
Soubor: RP6Base_Move_04_FSM.c
Tento program bude vysílat hlášení na sériové rozhraní
V tomto ukázkovém programu se robot nepohybuje!
U složitějších programů nemusí být probrané metody dostatečné. Například když ovládání
chování robotu vyžaduje takzvaný konečný stavový automat (zkráceně FSM) – zřejmě nebude
možné snadno vyřešit pomocí jednoduchých metod. Tento ukázkový programu demonstruje
jednoduchý konečný stavový automat, který změní svůj stav při stlačení nárazníku. Pro
pochopení odzkoušejte činnost programu tak, že dvakrát stisknete nárazník a přitom budete
pečlivě sledovat terminál a stav LED. Stiskněte nárazník a pak ho pomalu pusťte!
V jazyku C se konečný stavový automat vytvoří pomocí konstrukcí switch-case nebo
alternativně skupinou podmíněných příkazů vytvořenou pomocí konstrukce “if-else-if-else”...
Větvení pomocí switch/case přinese mnohem přehlednější zdrojový text.