Close

MBot a čáry – 1. díl

MBot a čáry I

Ne nezačínám fantazírovat a s mBotem se rozhodně nemůžete věnovat magii a temným čárám (alespoň pokud vím :-)). Zato umí mBot velmi dobře jezdit po nakreslených čárách, popřípadě, jako dobře vychovaný robůtek umí čáru respektovat a nepřekračovat hranici. V minulém díle jsme se učili pracovat s LED Matrix a dnes se podíváme, jak robota zkrotit na čáře a používat snímač čáry.

MBot umí jezdit po čárách. Toto kouzlo mu umožňuje modul snímač čáry (Line Followeru), který je umístěný zpravidla v přední části robota (využít lze samozřejmě i jinde). Modul obsahuje dva senzory schopné snímat odražené IR záření (modul obsahuje dvě dvojkombinace LED vyzařující IR záření s fototranzistory které jsou schopné číst a přijímat IR záření odražené od blízké plochy). Podle intenzity přijímaného záření modul snímač čáry oznamuje mBotovi jestli vidí černou barvu (méně odraženého záření), nebo bílou barvu (více odraženého záření).

Snímač čáry – Line Follower

Snímač čáry pro mBota
MBot – modul snímače čáry

Jednoduchý snímač čáry, o kterém je v tomto článku řeč, snímá dvěma senzory dva stavy (černá/bílá) svého okolí. Při vzájemné kombinaci různých stavů, které mohou při snímání okolí nastat, je možné vyhodnotit jejich čtyři různé kombinace. MBot pak může být naprogramován na reakce na tyto čtyři stavy. Výsledkem může být i poměrně sofistikované chování robota.

Snímač čáry a jeho stavy

mBot - čtyři stavy snímače čar
MBot – čtyři stavy snímače čar

Z předchozí grafiky, kde jsou popsané čtyři stavy snímače čar, které mohou nastat vyplývají i reakce, které by mBot na danou situaci měl mít naprogramované. Proto si prohlédneme screen prvního programu, který umožňuje pohyb po čáře.

program umožňující mBotovi pohyb po čáře
Program umožňující mBotovi pohyb po čáře

Čára ovšem nemusí sloužit pouze jako dráha, po které by robot mohl chodit, ale třeba také jako hranice, kterou mBot nemůže překročit. Na několika předváděcích akcích jsme v Domečku této schopnosti mBota s úspěchem použili při demonstraci, kdy se robot samostatně pohyboval po stole. Byl schopen volně jezdit po bílé desce stolu, jakmile se ovšem senzorem dostal za hranu desky vyhodnotil si výsledek tak, že vidí černou barvu (a tudíž hranici), couvl, otočil se a pokračoval v projíždění.

Hranice může být zároveň i obrysem bludiště, které musí mBot samostatně projet. Není tedy třeba v klubovně stavět bludiště s opravdovými stěnami. V pohodě si vystačíte s černou páskou a bílou deskou stolu a můžete si dětmi vyrobit improvizovanou únikovou hru – ale o tom asi v jiném díle mého seriálu :-).

mbot - program - čára jako hranice
Mbot – program – čára jako hranice

Popis programu: Po stisknutí tlačítka se spustí program v nekonečné smyčce. Pak mohou pro robota nastat tři různé stavy, na které má naprogramované reakce. Jednak je to stav, kdy nevidí žádnou hranici – prostě jede dopředu rychlostí 100 a svítí zelenou barvou. A pak jsou dva velmi podobné stavy, kdy „vidí“ hranici buď levým senzorem, nebo pravým. V tomto případě přeruší jízdu dopředu, rozsvítí červené světlo a půl sekundy couvá. Poté v závislosti pokud mBot viděl hranici levým, nebo pravým senzorem se náhodně zatočí buď doleva, nebo dobrava (s příslušnou světelnou signalizaci) a pokračuje v jízdě dopředu.

Tip: Při hraní si s čarami je možné si to trošku začít komplikovat. Zkuste si třeba naprogramovat na situaci, kdy budou na dráze překážky, nebo bude dráha přerušena.

mbot - program pro obcházení překážek
Program, který mBotovi umožňuje obcházet překážky na čáře

Popis programu: mBot, který pracuje s tímto programem má vpodstatě dva základní režimy, podle kterých se chová. Jednak je to běžný režim sledování čáry, který je odvozený od programu umožňujícího chůzi po čáře a další režim je spuštěný pokud ultrazvukový senzor zaregistruje před robotem překážku bližší než 5 cm. V tomto případě se otočí doleva a opisuje obloukovou dráhu dokud nenarazí na čáru. Pokud narazí na čáru pokračuje dál v běžném provozu jízdou po čáře.

Tip: Program s detekci překážky, který jsem vám předložil, nefunguje vždy. Je stavěný na určitou velikost překážky. Pokud by byla překážka větší než je předpokládáno, mBot by si s touto situací neporadil a vrazil do ní. Zkuste tento problém vyřešit :-).

Program, který umožňuje mBotovi jet po přerušované čáře
Program, který umožňuje mBotovi jet po přerušované čáře

Popis programu: Pro chod programu je deklarována proměnná testCary do které je ukládán stav počtu testů pokud mBot hledá čáru (nabývá hodnot 0, nebo 1). V případě, že robot jede po čáře je testCary stabilně na hodnotě 0. Pokud se mBot dostane do režimu sledování čáry 3, čili když nevidí přerušenou čáru, jede 1s rychlostí 100 dopředu a pak se otáčí o 90° doleva a hledá čáru a poté o 180° doprava a opět hledá čáru. V případě, že v režimu hledání čáry čáru nalezne, přestane ji hledat a okamžitě normálně vyrazí vpřed. Pokud čáru nenalezne přepne se do klidového režimu, kdy čeká na operátora a signalizuje ukončení jízdy.

Doufám, že se vám toto prvotní seznámení se světem čar líbilo. Příští článek se do tohoto tématu vrhneme ještě o něco podrobněji a představíme si sofistikovanější modul pro sledování čáry, který může mBot používat.

mBot programy ke stažení

Program jízda po čáře

Program jízda s definovanou hranicí

Program jízda s překážkou

Program jízda po přerušované čáře

Odkazy na produkty HW Kitchen použité v článku:

Ondřej Merta

3 Comments on “MBot a čáry – 1. díl

[…] V 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. […]

miklik
14.5.2020 at 21:41

Pěkný článek. Nedávno mě dostal ukázkový kód na sledování čáry od Meet Edisona z pětí bloků i se startem, podobné to mají v edPy. Edison se klikatí jak trhlý doleva – doprava a sleduje hranu čáry. Má pouze jeden senzor.

Ed.LineTrackerLed(Ed.ON)

while True:
if Ed.ReadLineState()==Ed.LINE_ON_WHITE:
Ed.Drive(Ed.FORWARD_RIGHT, Ed.SPEED_1, Ed.DISTANCE_UNLIMITED)
else:
Ed.Drive(Ed.FORWARD_LEFT, Ed.SPEED_1, Ed.DISTANCE_UNLIMITED)

Ondřej Merta
15.5.2020 at 11:40

Děkuji za pochvalu. MBot by také uměl jet po čáře s jedním čidlem a sledovat hrany, jenže musím vycházet z modulů, které jsou od výrobce k dispozici 🙂 a ty mají dvě čidla. Nicméně v přípravě je další článek s pokročilejšími čtečkami čar, které obsahují těch čidel šest a to je teprve legrace. Vzhledem k tomu, že je k dispozici základní čtečka čáry se dvěma čidly, bylo by čtení čáry jedním čidlem asi mimo osu robůtka a ten pohyb by nebyl nic moc. Ale jako experiment by mohlo být zajímavé zkusit si to naprogramovat na jedno čidlo z modulu.

Napsat komentář