MBOT A ČÁRY – 2. DÍL

minulém díle o programování mBota jsem nakousl problematiku „čárování“, tedy tvorbu programu pro pohyb mBota od firmy Makeblock po čáře. Programování pohybu se týkalo základního modulu pro čtení čar (ME Line Follower – snímač čáry), který je dodáván v základní verzi produktu mBot Explorer. Existují ale i sofistikovanější moduly pro snímač čáry, které můžete svému modrému kamarádovi pořídit a o těch bude toto volné pokračování předchozího dílu.

Sofistikovanější modul pro čtení čar, který vám umožní naučit vašeho mBota mnohem chytřejšímu řešení problémů ve světě čar, naleznete ve světě pod pojmem ME Line Follower Array (slovíčko Array nám signalizuje, že půjde o práci s daty, které jsou v poli) a v Čechách, například v e-shopu hwkitchen.cz jej naleznete pod názvem ME profi snímač čáry. Podle informací majitele e-shopu je výroba tohoto snímače ukončována a bude zřejmě postupně nahrazován podobným snímačem ME RGB profi snímač čáry. Tento snímač čáry jsem ještě neměl v ruce, ale snad se tak v dohledné době stane a budu vám moci dát pár tipů, jak jej využít při výuce, nebo při kutění s vašimi ratolestmi.

ME profi snímač čáry – popis

Svou konstrukcí vychází ME profi snímač čáry z konstrukce základního modelu snímače čáry, který se dodával ve starším kompletu mBota i v novějším mBotu Explorerovi. Tento snímač ale není součástí základního vybavení a pokud si s ním chcete pohrát je třeba jej za nevelký peníz přiobjednat.

Oba moduly používají pro čtení čáry IR senzory, kdy je každý senzor soustavou LED diody vysílající infračervené záření a fototranzistoru, který je schopen toto záření odražené od povrchu detekovat. Základním (a to dosti podstatným) rozdílem v kvalitě je počet senzorů, který každý z obou snímačů čar nabízí. Zatímco základní snímač čáry nabízí pouze dva senzory, jeho vylepšený bratránek vám nabídne senzorů rovnou šest.

Porovnání základního snímače čáry a ME profi snímače

S počtem senzorů zároveň ale narůstá i komplikovanost při vyhodnocování dat získaných ze senzorů modulu a větší náročnost při tvorbě programů, kdy je třeba třídit a vyhodnocovat větší množství stavů. Je to ovšem daň za kvalitu a s modulem ME profi snímače se dají dělat i mnohé poměrně komplikované kousky o kterých si se základním snímačem můžete nechat pouze zdát.

Oba moduly se instalují na mBota prakticky stejně, pokud byste si přeci jen nevěděli při montáži a demontáži rady, podívejte se na instruktážní video v úvodu článku. Oba moduly také komunikují stejným typem portu, takže je lze pohodlně přicvaknout na již přivedený kabel po předchozím modulu snímače čar.

Programování mBota s profi snímačem čáry

Odlišnosti se projeví až při tvorbě programu. Zatímco dvousenzorový základní snímač pro čtení čar je okamžitě použitelný, pro šestisenzorový ME profi snímač musíte doinstalovat do mBlocku 3 rozšíření pro ME Line Follower Array. Postup při instalaci rozšíření je opět zřejmý v doprovodném videu a není nijak náročný.

Nainstalované rozšíření vám poskytne možnost používat tři nové widgety, které vám umožní, vložíte-li je do podmínkových příkazů, reagovat na požadované stavy.

MBot snímač čáry – použití různých typů widgetů ve stejném programu

Z funkčního hlediska není rozdíl mezi těmito programovými bloky žádný. Jediným rozdílem je způsob zadávání detekovaného stavu snímače. Ve dvou případech zadáváme požadovaný stav v binární podobě, kdy znak 1 reprezentuje bílou barvu, kterou by měl senzor snímat a 0 barvu černou. V příkladu na obrázku (program č. 1) je nutné zadávat adresu v uvozovkách, v příkladu programu č. 3 je nutné před jedničky a nuly vložit znak B. Prostřední varianta programu č. 2 na obrázku pak rovnou uvádí číslo v decimální podobě.

MBot – tabulka všech detekovatelných stavů ME Line Follower Array

Programy

Program „follower harfa“:

Na závěr článku naleznete tři příklady programů ke stažení a vyzkoušení. Asi nejjednodušší je program „follower-harfa“, který prostě jen demonstruje na sérii podmínkových příkazů, jak mBota pomocí profi snímače čar proměnit v jednoduchý hudební nástroj. Při vyluzování tónů si můžete navíc vyzkoušet jak rychle a přesně senzor reaguje, popřípadě zkusit si naprogramovat složitější variantu s větším počtem tónů.

Program pro mBota – follower harfa

Program „jezdec“:

Program jezdec předvádí řešení průchodu po čáře, která obsahuje ostrý úhel. Tento problém je možné jistě řešit více způsoby a určitě přijdete na něco chytřejšího. Pro inspiraci si ale zkuste mé řešení. Pro další povídání si prosím otevřete program „jizda“ na konci článku. Program je poněkud rozsáhlejší a nechci text zahltit grafikou.

Reakce mBota na stavy senzorů jsem rozdělil do čtyř skupin – na situaci,kdy je mBot správně na rovné čáře a může jet bez starostí kupředu (blok jizdaUvnitr), na dvě skupiny zahrnující korekce pohybu mBota pokud je mírně vychýlený doleva, nebo doprava (oba bloky jizdaVenku + prováděcí bloky pro jízdu) – tyto tři skupiny slouží pro standardní pohyb po trase a něco podobného v jednodušší podobě jsme již programovali v předchozím článku. Řešením pro pohyb po čáře, která obsahuje ostré úhly je blok „hrana“.

MBot – část programu jizda pro pohyb po čáře s ostrými úhly – blok hrana

Blok „hrana“ (reakce na stav modulu čtení čáry č. 63 – kdy je mbot kompletně na bílé barvě) je ta speciální část tohoto programu, která mBotovi řeší problém s ostrým úhlem. Pokud totiž mBot dojede na ostrý úhel přejede černou čáru a ocitne se na bílé ploše. Na bílé ploše se ale ocitne pouze modul čidla, tělo mBota zůstává na černé čáře.

MBot se tedy zastaví a začne dělat to co každý turista, který se ztratí. Začne se rozhlížet a hledat správnou cestu. Rozhlížení vypadá tak, že se na místě otáčí kolem vlastní osy postupně doleva a doprava, přičemž tyto výkyvy zvětšuje, dokud nenarazí na čáru. Čára, která pokračuje dopředu je vždycky blíž, než čára po které mBot přijel, takže ji tímto způsobem nalezne jako první. Pokud by se ztracený mBot rozhlížel jedním směrem (otáčel se na místě jedním směrem) v řadě případů by nalezl jako první cestu zpátky a zase by se vrátil a to nechceme.

Program „Labyrint“

Abych ukázal další možnost, jak využít profi snímač čáry, vymyslel jsem mapu z čar, kterou musí mBot projít. V bludišti jsou ale rozmístěny překážky – miny – na některých možných průchodech. Celým labyrintem tak vede jenom jedna možná cesta a protože mBot není schopný svými senzory detekovat miny na trati, je úplně závislý na svém programátorovi, jak mu naprogramuje bezpečnou trasu po které by mohl projít.

Mbot – trať pro kterou je funkční program „labyrint“ – modře vyznačeny uzly, kde se mBot rozhoduje

Program, díky kterému se může mBot v bludišti zorientovat je tedy třeba sestavit tak, aby byl kombinací klasického automatického pohybu po čáře s tím, že se v určitých bodech dráhy – uzlech – se mBot bude rozhodovat a podle aktuální situace vybere jak se v daném uzlu bude rozhodovat. Program labyrint, jak jej na konci článku naleznete ke stažení, má nastavenu trasu k projetí mapy (viz. obrázek). Pokud si vytvoříte mapu vlastní s odlišnou trasu, budete si muset samozřejmě změnit i tu „rozhodovací“ část programu tak, aby mBot byl schopen projít vaším labyrintem.

Mbot – program labyrint – blok pro rozhodnutí mBota

V bloku „rozhodnuti“, ve kterém je uložena v podstatě databáze rozhodnutí, jimiž se mBot při pohybu bludištěm řídí, jsou odkazy na tři bloky. Bloky uzelDoleva a uzelDoprava otáčí mBotem o 90° doleva a doprava (jakmile by byly v bludišti jiné než pravé úhly program vám nebude fungovat). Blok uzel zase ošetřuje tu vlastnost mBota, kterou je, že na zachycený stav reaguje okamžitě. Vzhledem k tomu, že mBot má čidlo vepředu, začal by se otáčet ještě předtím, než by na uzel skutečně dojel. Blok uzel tedy udělá to, že mBota bez ohledu na zachycený stav „donutí“ dojet osou vozidla na uzel a tam pak pokračuje dle databáze rozhodnutí buď v otáčení, nebo v další jízdě dopředu.

Tip: Udělejte si své bludiště a zkuste mBota naprogramovat, aby jej projel stanovenou trasou.

mBot programy ke stažení

Program Follower – harfa

Program Jezdec

Program Labyrint

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *