Aktuální vydání

celé číslo

01

2020

Operátorské panely, HMI, SCADA

celé číslo

Postavte si svůj robot – roboty ve výuce (část 7)

V předchozím článku bylo ukázáno použití základních bloků v grafickém prostředí z palety Common. V tomto článku budou představeny bloky z palety Complete, která obsahuje všechny programovací bloky. Kromě slíbených příkladů bude ještě ukázáno, jak správně programovat v NXT-G.

 

Paleta Complete a její bloky

Paleta Complete obsahuje šest sekcí s bloky označenými Common, Action, Sensor, Flow, Data a Advanced. Ikony popisovaných bloků jsou uvedeny v tab. 1. Bloky Common jsou shodné s bloky z palety Common a byly popsány dříve, v šesté části článku.
 

Action

Bloky sekce Action (obr. 1) umožňují ovládat chování výstupních zařízení – interaktivních servomotorů, reproduktorů NXT, displeje NXT, Bluetoothu (odesílání) a svítidla.
 

Sensor

Bloky sekce Sensor ( obr. 2) odpovídají dotykovému spínači, snímači zvuku, snímači osvětlení, ultrazvukovému snímači, tlačítkům NXT, snímačům otáček servomotorů, časovačům, Bluetoothu (přijímání) a snímači barev. Jejich kombinací lze ovládat chování robotu.
 

Flow

S bloky sekce Flow ( obr. 3) lze dotvářet chování robotu. Jsou zde bloky pro čekání, opakování, rozhodování a zastavení určité činnosti.
 

Data

Bloky sekce Data ( obr. 4) jsou určeny k vytváření logických (booleovských) a matematických operací, k porovnávání hodnot, porovnávání rozsahu, generování náhodného čísla z daného rozsahu a k výběru proměnných a konstant.
 

Advanced

Bloky sekce Advanced jsou určeny ke konvertování dat (čísel) na text (zobrazující se na displeji kostky NXT), přidávání textu, ovládání funkce sleep na kostce NXT, ukládání dat z robotu do kostky NXT, nastavování limitních hodnot snímačů (snímače zvuku nebo osvětlení), resetování motorů a připojování k jinému zařízení pomocí komunikačního standardu Bluetooth.
 

Jak správně programovat v NXT-G

 

Obecné zásady

Bloky z programovací palety lze přemísťovat dvěma způsoby:
  • drag and drop (příslušný blok se vybere a přetáhne levým tlačítkem myši),
  • copy and paste (blok se vybere kliknutím na blok a dalším kliknutím se umístí na požadované místo).
 
První blok se na programovací ploše vždy umísťuje do místa s nápisem Start (obr. 6). Toto místo je spojeno pomocí vodorovného bílého „výběžku“ s bodem, kde je zobrazena ikona programu NXT – tento bod se nazývá startovní bod. Ze startovního bodu vycházejí celkem tři bílé „výběžky“, které se nazývají Sequence Beams – sekvenční paprsky.
 

Sequence Beam – sekvenční paprsek

Sekvenční paprsek řídí tok programu, tzn. že určuje pořadí, v jakém budou bloky vykonány. Do kostky NXT budou staženy jen bloky spojené sekvenčním paprskem, který vychází ze startovního bodu. Existují dva druhy sekvenčních paprsků – hlavní a vedlejší (obr. 7).
 

Vytvoření paralelní větve v programu

Paralelní větve v programu dovolují současně vykonávat posloupnosti bloků (několik sekvenčních paprsků). Postup vytvoření paralelní větve bude vysvětlen na příkladu. Uvažujme bloky umístěné podle obr. 8. Po najetí kurzorem myši na místo, které je v obrázku označeno červeně, se šipka myši změní v cosi, co připomíná svazek drátů. Nyní lze kliknutím na levé tlačítko myši přejít do režimu vytváření nového sekvenčního paprsku. V tomto režimu se kurzor myši přesune na místo, které je v obrázku označeno jakéhokoliv místa sekvenčního paprsku. Uvažujme např. uspořádání bloků podle obr. 9. Je zde třeba vytvořit paralelní větev. Po najetí kurzorem myši na místo označené v obrázku červeně je nutné stisknout a držet klávesu shift. Oboustranná šipka se změní ve „svazek drátů“. Kliknutí levým tlačítkem myši otevře režim vytváření nového sekvenčního paprsku. Kurzor se přesune na místo, které je na obrázku označeno červeně. Po kliknutí a uvolnění klávesy shift je paralelní větev vytvořena.

 

Smazání bloku z pracovní plochy

Blok umístěný na pracovní ploše lze zrušit (smazat) tímto postupem: klikne se na blok určený ke zrušení (obvod bloku bude zvýrazněn modrou barvou) a potom již stačí stisknout klávesu delete a blok bude smazán z pracovní plochy.
 

Přesun bloku po programovací ploše

Blok umístěný na pracovní ploše lze přemístit posunem: stačí najet kurzorem myši na programovací blok, stisknout a držet levé tlačítko myši, přesunout se na místo, kam se má blok umístit, a pustit tlačítko myši.
 

Data Hub – rozbalení nabídky

Funkce Data Hub je vlastnost většiny programovacích bloků a spočívá v rozbalení nabídky tímto postupem (obr. 10): blok se umístí na programovací plochu a přesune na něj kurzor do místa uvedeného v levém obrázku. Až se objeví oboustranná šipka, je třeba kliknout. Rozbalí se nabídka Data Hub se vstupními „zástrčkami“ na levé straně a výstupními „zástrčkami“ vpravo.
 

Data Hub – vytváření datových spojení

Datovým spojením lze přenášet data v podobě čísel, textu nebo logických hodnot. Správně vytvořené spojení je znázorněno plnou čarou, nesprávně vytvořené spojení je znázorněno tečkovanou šedou čarou. Typ dat je znázorněn barvou čáry: žlutá jsou čísla, oranžová text a zelená logické hodnoty. Datové spojení lze vytvořit tímto postupem: najede se kurzorem myši nad „zástrčku“, kde se šipka změní ve „svazek drátů“. Po kliknutí se spustí režim vytváření datového spojení a lze tak vytvořit spojení z výstupní „zástrčky“ jednoho bloku do vstupní „zástrčky“ druhého bloku.
 

Jednoduché úlohy s využitím snímačů

Dřív, než začnete zkoušet následující příklady, postavte si svůj robot tak, aby bylo možné k němu postupně připojovat a využít všechny dostupné snímače. Pro začátek lze využít návody na stavbu robotu TaskBot nebo TriBot.
 

Ultrazvukový snímač

K robotu se připevní ultrazvukový snímač tak, aby mohl vykonávat tuto úlohu: Robot se pohybuje vpřed. Narazí-li na překážku, zastaví se. Poté se pohybuje po stanovenou dobu vzad (např. 0,5 s). Následně čeká 1 s. Otočí se o 45° doleva a pokračuje dál v pohybu k další překážce. Na displeji se zobrazuje aktuální vzdálenost k překážce. Výsledný program je znázorněn na obr. 11 a lze jej stáhnout z webových stránek autorů.
 

Snímač osvětlení

K robotu se připevní snímač osvětlení tak, aby mohl sledovat černou čáru (nejlépe kolmo k podložce, na které je černá čára, do vzdálenosti asi 10 mm od podložky). Úkolem je projet dráhu označenou černou čarou dané tloušťky na bílém podkladu. Robot svítí červenou LED (umístěnou na snímači) na dráhu a senzorem (fotodiodou umístěnou na snímači pod LED) snímá intenzitu odraženého světla. Podle naměřené intenzity odraženého světla jsou ovládány motory pro směr pohybu. Jde o řešení úlohy známé jako „cik cak“ neboli pohyb směrem k čáře či od čáry podle rozhodovací úrovně nastavené v bloku Switch. Záleží na tom, z které strany černé čáry je snímač osvětlení umístěn. Výsledný program je na obr. 12 a lze jej stáhnout z webových stránek autorů.
 

Dotykový spínač

Na robot se připevní dva senzory dotyku tak, aby mohl vykonávat následující úlohu: Při stisku dotykového spínače 1 zrychli o 20 %. Při stisku dotykového spínače 2 zpomal o 20 %. Zobraz aktuální hodnotu na displeji. Výsledný program je znázorněn na obr. 13 a lze jej stáhnout z webových stránek autorů.
 

Uživatelské (vlastní) bloky

V předchozím příkladu jsou použity dva uživatelské (vlastní, uživatelem vytvořené) bloky: Zvysit a Snizit (obr. 14). Lze je vytvořit jednoduše tak, že se označí všechny bloky na pracovní ploše, z kterých je třeba vytvořit vlastní blok, z menu Edit se vybere příkaz Make a New My Block. Otevře se okno (obr. 15), ve kterém je vidět obsah vytvářeného bloku. Lze jej pojmenovat a stručně popsat. Po kliknutí na tlačítko Next je možné v dalším okně (obr. 16) nastavit, jak bude vypadat ikona nového bloku. V paletě Custom je nový blok dostupný v poli My Blocks.
 

Zhodnocení programovacího jazyka NXT-G

Na závěr je užitečné zhodnotit použití programovacího jazyka NXT-G. Jeho výhodou je jednoduché a intuitivní ovládání. Je vhodný pro úplné začátečníky v programování a při psaní jednoduchých a krátkých programů. Naopak nevyhovuje při psaní rozsáhlejších programů. Komplikovaně se v něm definují uživatelské proměnné a není možné pracovat s datovými strukturami typu pole (array). Omezující je i možnost zobrazovat na displeji kostky NXT jen celá čísla. Další pokračování bude věnováno popisu programovacího jazyka NXC – Not eXactly C.
Ing. Martin Hlinovský, Ph.D.
Ing. Lenka Mudrová
 
 
Obr. 1. Bloky sekce Action
Obr. 2. Bloky sekce Sensor
Obr. 3. Bloky sekce Flow
Obr. 4. Bloky sekce Data
Obr. 5. Bloky sekce Advanced
Obr. 6. Umístění prvního bloku na pracovní ploše
Obr. 7. Hlavní a vedlejší sekvenční paprsek
Obr. 8. Vytváření paralelní větve v programu
Obr. 9. Vytvoření paralelní větve v programu z libovolného místa
Obr. 10. Rozbalení nabídky Data Hub bloku Move
Obr. 11. Výsledný program pro úlohu s ultrazvukovým snímačem
Obr. 12. Výsledný program pro úlohu sledování černé čáry s využitím snímače osvětlení
Obr. 13. Výsledný program pro úlohu s dotykovými spínači
Obr. 14. Vlastní (uživatelem vytvořené) bloky Zvysit a Snizit
Obr. 15. Okno pro vytvoření vlastního bloku – název bloku a stručný popis
Obr. 16. O kno pro vytvoření vlastního bloku – vytvoření ikony
 

Tab. 1. Ikony bloků palety Complete