Close

Pozor – mBot naslouchá

V minulém článku jsme s mBotem jezdili a dnes si k tomu pohybu ještě něco přidáme. Tak schválně! Víte co má společného mBot a netopýr? Pokud jste zvědaví, můžete se vše dozvědět v následujícím článku.

To co mají netopýr a mBot společného je to, že jedním ze způsobů jak vnímají své okolí je echolokace. Echolokace funguje tak, že živočich (nebo mBot) vydá zvuk, ten se odrazí od překážky a vrátí se zpět, kde je vyhodnocen. Vydávaný zvuk bývá často mimo oblast slyšitelnosti (pro člověka).

Živočichové na vydávání zvuků/vysílání signálu používají hlasivky, mBot vysílá signál „očima“. Tedy ne přímo očima :-), ale ultrazvukovým modulem, umístěným na přední části mBota, který vzdáleně připomíná oči.

ME Ultrasonic Senzor - mBotovy oči
ME Ultrasonic Senzor – mBotovy oči

Senzor funguje tak, že jedno „očičko“ je vysílač který vysílá ultrazvukové pulsy (o frekvenci 42 kHz – pro zajímavost) a druhé „očičko“ slouží jako přijímač. Vyhodnocuje se doba mezi vysláním a příjmem ultrazvukového signálu. Doba od vyslání do příjmu se pak přepočítává na vzdálenost. Čidlo dokáže měřit vzdálenost od necelých tří centimetrů po čtyři metry.

Senzor ME Ultrasonic nemusí být umístěn na přední části šasi mBota a nemusí být pouze jeden. MBot umí vyhodnocovat tyto senzory v počtu limitovaném počtem vstupních konektorů (tedy max 4 u mBota). Pro kutily je tedy možné si vyhrát s úpravami konstrukce a umístit ultrazvukový senzor třeba na servo, nebo vyzbrojit mBota více senzory a naprogramovat mu složitější chování.

Me ultrazvukový snímač můžete připojit k desce mBota na kterýkoliv port. U vyšších modelů typu Ranger je třeba volit port označený žlutou barvou.

Podmínkové příkazy

Aby mBot reagoval na jakoukoliv situaci (tedy i na hodnoty snímané ultrazvukovým senzorem) je nutné v programu použít podmínkový příkaz, který nám umožní mBotovi nastavit reakci na podnět.

Příklad použití podmínkových příkazů
Příklad použití podmínkových příkazů

Jak vyplývá z názvu – tento typ příkazu se nazývá podmínkovým. Důvodem je to, že k tomu, aby bylo možné realizovat nějakou činnost je třeba splnit nějakou podmínku. V našem případě chceme, aby mBot svítil zeleným světlem pokud není překážka příliš blízko. Jakmile se překážka ocitne na 10 cm a blíže, mělo by se rozsvítit světlo červené. Podmínkou je tedy vzdálenost 10 cm, kterou porovnáváme s hodnotou, kterou nám naměřil senzor (ta část programu, která je na obrázku na světle zeleném pozadí).

V případě že je podmínka splněná, čili mBot přes ultrasonický senzor detekoval překážku, která je od mBota do 10 cm, provede se činnost v prvním „okénku“ widgetu (těch činností tam klidně může být i více). V případě, že mBot překážku nedetekoval provede se činnost ve druhém „okénku“.

V programu je použita nekonečná smyčka (opakuj stále), která neustále cykluje a neustále spouští podmínkový příkaz. Bez této smyčky by se celá činnost provedla jen jednou a program by byl ukončen.

Podmínkové příkazy mají v programování mBota nezastupitelné využití. Podmínkové příkazy lze sestavovat s určitou logikou, kde je nutné splnit například více podmínek, nebo jednu z více podmínek. Podmínky je také možné vkládat do podmínek a složitěji tak strukturovat logiku činnosti mBota, ale o tom asi v jiném článku. Do podmínek je možné vkládat nejrůznější činnost, jako v našem případě ovládání motorků.

Příklad použití podmínkových příkazů pro ovládání motorů mBota
Příklad použití podmínkových příkazů pro ovládání motorů mBota

Na předchozím obrázku lze vidět program, ve kterém je demonstrováno jednoduché ovládání motorků mBota pomocí podmínkových příkazů (ke stažení na konci článku).

Průběh tohoto jednoduchého programu (jistě si sami naprogramujete něco ještě sofistikovanějšího) je následující. Ve smyčce, která neustále spouští podmínkový příkaz se neustále testuje vzdálenost překážky od mBota. Pokud je překážka v nedohlednu (nebo mBot žádnou nevidí :-)) svítí si robůtek na hřbetě zelenou barvou a valí si to dopředu maximální rychlostí.

Pokud ovšem mBot zaregistruje překážku (je splněna podmínka) otočí se doleva, sekundu jede dopředu rychlostí 100, pak se otočí zpět doprava. Poté znovu probíhá, díky nekonečné smyčce, testování jestli před mBotem není překážka. Pokud ano, mBot se posouvá a opakuje činnost, dokud nenajde konec překážky.

Upozornění na závěr: Aby mBot „viděl“ překážku před sebou, je nutné, aby překážka k němu byla kolmo. Podle zákonu odrazu je totiž úhel odrazu roven úhlu dopadu. Pokud tedy dopadne vlnění na měřenou překážku v jiném než kolmém úhlu, odražené vlnění nedoputuje zpět do přijímací části senzoru a mBot si tím pádem myslí, že se před ním žádná překážka nenachází.

mBot programy ke stažení

Program – jednoduchá detekce překážky se signalizací

Program – detekce překážky – zastavení mBota před překážkou

Program – detekce překážky – mBot se pokusí překážku objet

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

Ondřej Merta

2 Comments on “Pozor – mBot naslouchá

kubarobot
29.2.2020 at 9:39

Můžete mi prosím poradit, jak program otevřu? Arduino ide a ani ardublock to nechce. Dík

Ondřej Merta
29.2.2020 at 14:45

Dobrý den

Vše je tvořeno v programu mblock 3. Ke stažení zde: mblock download. Tuším ve třetím článku na téma mBot o tom byla řeč.

Napsat komentář