Inteligentní pojízdný robot

Určitě jste si již všimli, že robot byl při jízdě po městě poměrně nepřesný. Často nedorazil úplně na požadované místo. Pokud by obdobně nepřesně roboti jezdili i ve výrobních halách, napáchali by více škody než užitku. 

V této hodině se tedy naučíte, jak robota navigovat přesněji, jak určit, kudy má robot projet a na jaké místo má dorazit. Jak cestu najde? Nakreslíme mu ji! 

Všimněte si, že na zemi v učebně už je připravena černá čára. Naším úkolem v této hodině bude vytvořit program, díky kterému bude robot tuto čáru sledovat.

9.1 Rozpoznání čáry

Navigace je prováděna sledováním černé čáry. Aby byla vidět, musí být dostatečně silná a umístěna na světlém podkladu. V případě tmavého podkladu by musela být naopak světlá. Jenže jak čáru sledovat?

Sledování nám umožní optický senzor. Ten umí rozpoznávat barvy i množství odraženeného světla. Pozná tak tmavou barvu, od které se světla odrazí méně než od světlé.  

Kolik senzorů potřebujeme? Podívejme se na následující varianty.

Čáru můžeme nejsnáze sledovat pomocí 3 shodných optických senzorů umístěných v řadě vedle sebe.

Zjistěte, jak robot pozná, že jede rovně, kdy je potřeba zatočit doprava a kdy doleva.


Výhody a nevýhody řešení:
❌Je potřebné značné množství senzorů.
✔️Díky více senzorům se robot může pohybovat velmi rychle.


Řešení lze nahradit jednodušším se 2 senzory.
❓ Poznáte, který a proč vynechat?

Tato varianta vynechává prostřední senzor (č. 2). 

❓ Zjistěte, jak robot pozná, že jede rovně, kdy je potřeba zatočit doprava a kdy doleva.


Výhody a nevýhody řešení:
❌Jsou potřeba 2 senzory.
✔️Funguje rychleji než s jedním senzorem.
✔️Senzory lze posouvat blíže či dále od čáry a tím měnit přenost a rychlost robota.  

Tato varianta vynechává krajní senzor (č. 3). Robot se snaží držet čáry

❓ Zjistěte, jak nyní robot pozná, že jede rovně, kdy je potřeba zatočit doprava a kdy doleva.

Výhody a nevýhody řešení:
❌Jsou potřeba 2 senzory.
❌Velmi záleži na umístění senzoru. Je potřeba, aby vždy jeden byl na černé čáře.
✔️Funguje rychleji než s jedním senzorem.

❓ V LEGO stavebnici je ale jen jeden senzor. Jde to i s jedním senzorem?

👍 Ano jde, pojďme se podívat níže.

9.2 Jednoduchý pohyb po čáře

Jednoduchý pohyb po čáře pomocí jednoho senzoru spočívá ve sledování její barvy a barvy okolí.

Pokud se nacházíte:
 a) na čáře - senzor by vám měl vracet černou  barvu,
 b) mimo čáru - senzor by měl vracet bílou  barvu.

Reakce na barvu
 a)  černá barva: Jste na čáře. Je potřeba vyjet z čáry - zahnout vpravo. Pravý motor proto stojí a v pohybu je jen levý motor.
 b)  bílá barva: Jste mimo čáru. Je potřeba se na ní vrátit - zahnout vlevo. Levý motor proto stojí a v pohybu je jen pravý motor. 

Robot se bude pohybovat kmitavým pohybem.

9.3 Umístění senzoru barvy

⚙️ Pro sledování čáry bude robot potřebovat barevný senzor. Podle návodu proto rozšiřte robota o konstrukci, která mu dovolí sledovat čáru. 

Tato konstrukce je pohyblivá ve dvou směrech. Umožňuje měnit a testovat:
 a) výšku senzoru od země (cca 2 - 30 mm),
 b) vzdálenost od osy motorů (cca 50 - 80 mm).

9.4 Program - jednoduchý pohyb po čáře

Doplňte obě části podmínky na obrázku tak, aby pomocí programu robot vykonával kmitavý pohyb po čáře.

💡 TIP pro řešení: Jakmile senzor detekuje černou barvu, jeden z motorů se rozjede vpřed. Druhý mezitím stojí. Jakmile během šikmého pohybu detekuje senzor bílou barvu, motory si funkci prohodí. Ten, který doteď stál se spustí a druhý svůj pohyb přeruší.

9.5 Kalibrace senzoru

Čára, kterou náš robot sleduje nemusí být sytě černá a podklad čistě bílý. Abychom tyto dvě barvy robota naučili a on tak vždy poznal, kdy je senzor nad čarou a kdy mimo, musíme provést jeho kalibraci.

Kalibraci provedeme tak, že senzoru určíme hraniční barvy pro snímání (minimální a maximální). Kalibraci naleznete mezi režimy programového bloku „Color Sensor“.

Hodnotu, kterou snímá senzor musíme přiřadit senzoru v režimu „Calibrate“, čímž senzoru řekneme, v jakém rozsahu budeme měřit. Která hodnota bude minimální a která maximální.

Hodnota se u kalibrace nastaví tak, že bloky propojíme přetažením výstupního portu na port vstupní. Vznikne tak trvalé spojení zajišťující uložení hodnoty pro kalibraci.

Proveďte kalibraci světelného senzoru. Nastavte barvu bílého okolí jako maximální a černou čáru jako minimální hodnotu pro snímání. 

Kalibrace se provádí většinou jen jednou na začátku programu.

💡 TIP: Abyste mohli pohodlně provést kalibraci jak bílé, tak i černé barvy, pomozte si blokem „Wait“. Ten obsahuje režim, ve kterém se čeká na stisk tlačítka řídící jednotky. Na obrázku se čeká na stisk prostředního tlačítka.

Program tak bude vždy čekat, až umístíte senzor nad požadovanou barvu a až po stisku tlačítka provede kalibraci.

🙋🏻 9.6 Jak zpřesnit pohyb robota?

Určitě jste si všimli, že kmitavý pohyb po čáře není příliš vhodný. Robot provádí příliš trhavé pohyby.

Místo obyčejného rozpoznávání bílé a černé barvy můžeme senzor přepnout do režimu měření intenzity odraženého světla „Reflected Light Intensity“ (hodnoty 0 až 100).

Jaká barva a tím i hodnota bude přesně na okraji čáry, když senzor svítí z poloviny na bílou plochu a z poloviny na černou čáru? Ano, v tom je ten trik. Bude šedá.

Čím více budeme senzor nad čarou, tím bude barva tmavší, čím více mimo, barva světlejší. Ze skokového řízení tak přecházíme na jemnější řízení výkonu obou motorů. Že je to podobné úloze z minulé hodiny?

Ano, je :-)

 🙋🏻 9.7 Pro rychlé žáky: Jak na sledování okraje čáry?

Jsme ve finále. Můžeme dokončit program pro sledování okraje černé čáry. Co musíme vykonávat.

1) Kalibrace: přirazení minima a maxima světelnému senzoru.
2) Průměr (volitelně při špatné funkci): výpočet průměrné hodnoty z minima a maxima.
3) Měření: opakované zjištění odchylky od středové hodnoty.
4) Řízení motorů: řízení výkonu jednotlivých motorů podle míry odchylky.  

❗ Důležité upozornění: Zkalibrujte senzor a ověřte, jak se chová na rozhraní čáry. Senzor by měl vracet hodnoty blízké 50. Pokud jsou hodnoty značně odlišné (např. o ± 10), musíme si vypočítat vlastní průměrnou hodnotu světlé a tmavé barvy. 

Pro řešení průměru využijeme proměnnou.

Proměnná
Při kalibraci si musíme hodnotu barvy čáry a jejího okolí trvale uložit. K tomu slouží prvek, který nazýváme proměnná. Nalezneme ji v červené záložce programových bloků a jmenuje se „Variable“.

Pro vytvoření proměnné musíme nejdříve zapsat její název (na obrázku BILA vpravo nahoře).

Programový blok pracuje ve dvou režimech. Write, který využijeme, když chceme hodnotu do proměnné uložit a Read, který slouží pro čtení hodnoty z proměnné.

Proveďte kalibraci barevného senzoru a hodnotu bílé a černé barvy zároveň uložte do proměnné. Uložení každé barvy vždy proběhne až po stisku tlačítka řídící jednotky.

💡 TIP: Způsob uložení hodnoty ze senzoru do proměnné můžete vidět na obrázku.

Využijte již dříve vytvořený program pro kalibraci senzoru. Jak ho musíte rozšířit, abyste zároveň obě hodnoty uložili do proměnné?

Při sledování okraje černé čáry robot vyhledává středovou hodnotu mezi maximem a minimem, které jsme mu uložili při kalibraci. Jedná se o pomezí mezi černou čarou a bílým okolím. Tuto hodnotu si musíme vypočítat.

K jednoduchým výpočtům se používá blok „Math“, který nalezneme v červené záložce. Obsahuje řadu režimů. Na obrázku zvýrazněny čtyři základní (sčítání, odčítání, násobení a dělení). Na vstupy „a“ a „b se přivádí (zadávají) hodnoty, se kterými se počítá.


💡 TIP: Pro výpočet můžete využít také hodnotu uloženou v proměnné a přenést ji na vstupní port. 

Vaším úkolem v této aktivitě je spočítat střední hodnotu snímané barvy, tedy hodnotu, která je přesně mezi nejtmavší a nejsvětlejší barvou.

Bude-li např. nejtmavší barvu vyhodnocovat senzor jako 30 a nejsvětlejší barvu jako 80, bude střední hodnota 55.


Ověření (zkuste nejprve vyřešit sami)
Propojte jednotlivé bloky na obrázku tak, aby se do proměnné „STRED“ uložila střední hodnota dle následujícího vzorce:

STRED = (BILA - CERNA) / 2 + CERNA