User Manual

112
Příklad používá blokovaný režim funkcí pro jízdu a oč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 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řes
(tj. například 80° nebo 98°). Příklad tedy předvádí také složitosti při přesm ovládání 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 sy klouzat a smýkat, což sníží skutečnou
vzlenost v porovnání se změřenou hodnotou. Správné programování umňuje kompenzaci
těchto chyb, ale raději se nesnažte dosáhnout 100% přesnost pouze pomocí enkodérů. Pro
přes 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č. Například kd ovládání
chování robotu vyžaduje takzvaný konečný stavo automat (zkráceně FSM) zřejmě nebude
mož snadno vyřešit pomocí jednoduchých metod. Tento ukázko programu demonstruje
jednoduchý konečný stavo automat, který změní svůj stav při stlačení razníku. Pro
pochopení odzkoušejte činnost programu tak, že dvakrát stisknete razník a přitom budete
pečlivě sledovat terminál a stav LED. Stiskněte razník a pak ho pomalu pusťte!
V jazyku C se konečný stavo 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ší zdrojo text.