9. Inteligentní pojízdný robot

Určitě jste si 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ě jezdili roboti 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á projet a na jaké místo má dorazit. Jak robot cestu najde? Nakreslíme mu ji! 

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

9.1 Rozpoznání čáry

Navigace bude prováděna sledováním černé čáry. Aby byla čára vidět, musí být dostatečně silná a umístěna na světlém (kontrastním) podkladu. V případě tmavého podkladu by tedy musela být naopak světlá.

Jenže jak čáru sledovat? Sledování nám umožní optický senzor. Ten umí rozpoznávat nejen barvy, ale i množství odraženého světla. Pozná tak tmavou barvu, od které se světla odrazí méně než od barvy světlé.

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

Čáru můžeme sledovat nejsnáze 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řeba značné množství senzorů.
✔️Díky více senzorům se robot může pohybovat velmi rychle.


Otázka:
❓ Řešení lze nahradit jednodušší variantou 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ží na síle čáry a umístění senzoru.
✔️Funguje rychleji než s jedním senzorem.

❗ V LEGO stavebnici je ale jen jeden senzor. Jak bychom mohli sledování čáry vyřešit jen s pomocí tohoto senzoru?


Otázky:
❓ Jak nyní robot pozná, že jede rovně?
❓ Jak pozná, že vyjel na levou či pravou stranu?


Výhody a nevýhody řešení:
✔️Je potřeba jen 1 senzor.
❌Nefunguje tak rychle jako řešení pomocí 2 senzorů.

9.2 Základní pohyb po čáře s pomocí jednoho senzoru

Pohyb po čáře pomocí jednoho senzoru spočívá ve střídavém sledování barvy čáry 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 (viz obrázek)
 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 ni 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. Robota proto podle návodu rozšiřte robota o konstrukci, která mu dovolí sledovat čáru. 

Tato konstrukce je pohyblivá ve dvou směrech a 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).

❗ S pozicí senzoru experimentujte. Při špatné pozici senzoru vám robot i při dobře napsaném programu nebude fungovat.

9.4 Program - základní 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í: Ve chvíli, kdy 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ý dosud stál, se spustí a druhý svůj pohyb přeruší.

9.5 Zpřesnění rozpoznání pomocí kalibrace senzoru

V reálném prostředí nemusí být čára sytě černá a podklad čistě bílý. Robot tak může mít problém poznat, kdy je senzor nad čarou a kdy mimo ni. Abychom ho naučili barvy přesněji rozlišovat, musíme provést tzv. kalibraci senzoru. Kalibrací robota naučíme, co vnímat jako černou a co jako bílou barvu.

Kalibrace optického senzoru spočívá v nastavení úrovně světlé a tmavé barvy (hraničních hodnot množství odraženého světla).


❗ Kalibrace v praxi: V praxi bude kalibrace vypadat tak, že po spuštění nás program nejprve požádá (např. výpisem na displej), abychom robota přesunuli na světlé pozadí. Po potvrzení přesunu (např. stiskem tlačítka) dojde ke změření a nastavení hodnoty pro světlou barvu. Následně nás program vyzve, abychom robota přesunuli na čáru, a poté obdobně provede nastavení pro tmavou barvu čáry.

Kalibrace optického senzoru má několik fází:

1. Resetujeme (vymažeme) jeho předchozí nastavení.

2. Necháme ho zjistit úroveň světlé barvy okolí a tuto úroveň mu nastavíme jako maximum odraženého světla.

3. Obdobně ho necháme zjistit úroveň tmavé barvy naší čáry a tuto hodnotu nastavíme jako minimum odraženého světla.


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

Ukázka bloku pro reset senzoru


💡 TIP: Kalibraci naleznete mezi režimy programového bloku Color Sensor. Reset se postará o přípravu a vymazání předchozích nastavení.

Nastavení hodnoty spodního a horního rozsahu

Minimální hodnotu nastavíme tak, že změříme úroveň osvětlení a hodnotu uložíme do bloku s minimem. 

Nastavení maximální hodnoty provedeme obdobně. 

Proveďte kalibraci světelného senzoru. Nastavte minimální a maximální hodnotu pro snímání barvy bílého okolí a černé čáry. Nezapomeňte přidat interakci s uživatelem.

💡 TIP: Pro snazší kalibraci si můžete pomoci blokem s čekáním na potvrzení přenesení robota. 

Nevíte si rady, jak kalibraci provést?

Podívejte se na schéma programu.

🙋🏻 9.6 Jak zpřesnit pohyb robota?

Určitě jste si všimli, že dosud nebyl pohyb po čáře příliš plynulý. Robot buď jede pomalu či provádí až 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ěňte plynule pozici senzoru. Sledujte jaké hodnoty nám vrací, když se jeho pomocné světlo vzdaluje od středu čáry k jejímu okraji a dále zcela na podkladovou plochu.

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

Jsme ve finále. Vymyslete, jak by šlo zjištění z předchozí aktivity využít k jemnějšímu řízení pohybu robota. Prodiskutujte, jak mají motory reagovat na změřené hodnoty.

❗ 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ř. ± 10), musíme počítat s jinou středovou hodnotou.