Inteligentní pojízdný robot

V minulé hodině jste si určitě všimli, že robot byl při jízdě po městě poměrně nepřesný. Často nedorazil úplně přesně na požadované místo.

V této hodině se tedy naučíte, jak přesně 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.

Barevný senzor

K přesné orientaci robota v prostoru využijeme barevný senzor.

Jedná se o vstupní zařízení, které se připojuje k portům řídící jednotky označeným 1 - 4.

Senzor je upevněn na přední části robota tak, aby byl jeho snímač (na obrázku červeně ohraničen) umístěn ve vzdálenosti zhruba 0,5 cm nad zemí.

Testujeme barevný senzor

Otevřete programovací prostředí EV3 a řešte jednotlivé úkoly uvedené v záložkách níže.

TIP: Blok pro ovládání barevného senzoru naleznete ve žluté paletě programových bloků. Jmenuje se "Color Sensor". 

Prozkoumejte režimy programového bloku a zkuste zjistit, jak senzor rozeznává jednotlivé barvy. Co je zjištěnou hodnotou při detekci libovolné barvy?

Tip pro řešení: Na třetí záložce v rámci operačního systému řídící jednotky naleznete volbu "Port View". Pomocí ní si můžete vybrat senzor, který je aktuálně k jednotce připojený a zapnout snímání. Na displeji se zobrazí snímaná hodnota.

Co robot detekuji si také můžete programově vypsat na displej řídící jednotky.

Čára, kterou robot bude sledovat, je černá na bílém podkladu. Jak robot tyto dvě barvy rozeznává? Zjistěte.

TIP: Pro lepší názornost použijte výpis hodnoty na displej.

Úkol pro rychlé žáky
Vytvořte program, který vždy slovem vypíše na displej název barvy, kterou světelný senzor detekoval.

TIP: Pro rozlišení jednotlivých barev můžete využít blok pro podmínku "Switch", která v režimu měření barvy barevným senzorem umožňuje rozlišovat 6 základních barev.

Aktivita - 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 fuknci prohodí. Ten, který doteď stál se spustí a druhý svůj pohyb přeruší.

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í. 

TIP: Abyste mohli kalibraci pohodlně provést, pomozte si opět 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.

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.

Využijeme tedy kalibraci, kterou jste se právě naučili a zajistíme, aby robot sledoval okraj černé čáry.

Jak na sledování okraje čáry?

Aby mohl robot sledovat okraj černé čáry, musíme zrealizovat několik dílčích kroků. Prvním krokem je kalibrace, kterou jsme se již naučili. Zbylé kroky se naučíme nyní.

Pro řešení této aktivity využijeme několik nových programových prvků.

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 průměrnou hodnotu snímané barvy. Propojte jednotlivé bloky na obrázku tak, aby se do proměnné "PRUMER" uložila průměrná hodnota dle následujícího vzorce:

PRUMER = (BILA - CERNA) / 2 + CERNA

Aktivita - sledování okraje černé čáry

Jsme ve finále. Můžeme dokončit program pro sledování okraje černé čáry. Na obrázku vidíte drobnou nápovědu k tomu, jak program dokončit. Musíte naplnit tyto tři kroky, z nichž první dva už jsme se naučili a vytvořili jsme je. 

1) Kalibrace - přirazení minima a maxima světelnému senzoru.

2) Výpočet průměrné hodnoty - realizováno na základě kalibrace.

3) Nyní najděte a doplňte nedostatky uvnitř nekonečného cyklu.

Pokud bude hodnota snímaná senzorem větší, než hodnota vypočítaného průměru, tak se oba motory budou snažit přiblížit světelný senzor k černé čáře. V opačném případě bude mít robot snahu dostat snímač senzoru z černé čáry zpět na okraj.