8. Adaptivní tempomat – detekce překážky

V dnešní hodině naučíme robota, kterého jsme používali v úvodu učebnice, reagovat na překážky a jezdit v kolonách. V tuto chvíli by nedokázal zjistit, jestli mu v cestě nestojí překážka. V následujících aktivitách to robota naučíme.

8.1 Měření vzdálenosti ultrazvukovým senzorem

Než začneme ultrazvukový senzor používat k řízení robota, musíme znát jeho chování, rozsah měření i přesnost. Pojďme ho nyní prozkoumat. Vytvoříme si svůj vlastní elektronický metr.

Jak dlouhý je stůl v učebně? Jak široké a vysoké je okno? Jak daleko od vás je nejbližší zeď? 

Ke zjištění bychom potřebovali metr. Pojďme si jeden digitální vytvořit. Naměřenou hodnotu včetně jednotek vypisujte na displeji řídicí jednotky (např. 153 cm).


💡 TIP: Text není potřeba vykreslovat po více částech. V paletě příkazů v červené sekci Data Operations se nalézá blok Text, který umí slučovat více textu do jednoho výstupu.

Podívejte se na ukázku fragmentu z jiného programu, který na displeji vypíše text „BAR: “ poté uvede číslo rozpoznané barvy a přidá text „ !“, např. „BAR: 5 !“ Dokážete modifikovat tento program pro řešení našeho problému?

Pojďme měřit.
📝 1. Jak dlouhý je stůl v učebně?


📝 2. Jak široké a vysoké je okno?


📝 3. Jak daleko od vás je nejbližší zeď?

📝 4. Jak silný je sešit?


📝 🙋🏻 5. Jak vysoká je láhev?


📝 🙋🏻 6. Kolik 4x2 LEGO kostiček bychom potřebovali na sebe postavit, aby byly vysoké jako váš spolužák?

Každý senzor má svůj rozsah a přesnost.

📝 1. V jakém rozsahu se hodnoty zobrazují?


📝 2. Co se děje, pokud tyto hodnoty překročíme?


📝 3. Jaká je přibližná přesnost senzoru (mm, cm, dm, m)?


📝 4. Jak se senzor chová, pokud ho zcela zakryjeme dlaní?


📝 5. Jak se senzor chová, pokud měříme nerovné či malé předměty (např. prsty)?

8.2 Bezpečnostní pojistka – zastavení před překážkou

Už víte, jak ultrazvukový senzor funguje? Naučíme se tedy, jak ho použít k ovládání robota. Bude sloužit jako bezpečnostní pojistka, díky které robot zastaví, pokud se před ním objeví překážka, a předejde tak srážce.

Vytvořte program, díky kterému Váš robot pojede neustále rovně vpřed, a pokud se před ním objeví překážka, zastaví od ní v bezpečné vzdálenosti 15 cm.


💡 TIP: K řešení úlohy je vhodné využít blok podmíněného vykonávání Switch z oranžové sekce palety. Ten je možné řídit vzdáleností naměřenou ultrazvukovým senzorem.

❗ Nyní již máme program hotový. Naše řešení ale musí fungovat spolehlivě. Je třeba prozkoumat, zda funguje opravdu za všech situací.


📝 1. Které problémy by mohly nastat?


📝 2. Vymyslíte situace, při kterých by mohlo naše či řešení jiných selhat?


📝 3. Jak správné chování otestujeme?


📝 4. Funguje naše řešení? Co jste při testování zjistili?


📝 5. Šlo by něco zlepšit?

❗ Vytvořili jste v programu bezpečnostní pojistku? Nyní je potřeba ji otestovat.

Jak na to?

1. Vezměte si libovolnou pohyblivou překážku (postačí i vaše ruka či víko od stavebnice) a položte ji před robota. Zastaví robot před překážkou? V jaké vzdálenosti od ní robot zastaví? 

Abychom viděli, kde vzniká případný problém, je vhodné změřenou vzdálenost vypisovat na displeji.

2. Jak se robot chová, pokud zastaví a překážku:
a) od robota vzdalujete,
b) k robotovi přibližujete?

Jak plynulý je pohyb robota?

3. Vymyslete a ověřte, jaké překážky by robot nemusel správně zachytit a přejel by je? Jaký vliv na to má umístění senzoru?

8.3 Reakce na pohyblivou překážku – adaptivní tempomat

Náš robot již umí zastavit před překážkou. Jenže, co když tou překážkou budou např. auta v koloně? Jak se bude robot chovat, když se auta začnou pohybovat? Hodilo by se nám, aby robot na tuto situaci uměl plynule reagovat. 

Pojďme ho to naučit. Ať se překážka bude pohybovat směrem k němu, či od něj, bude si od ní udržovat stále stejnou vzdálenost 20 cm.

Vytvořte program, pomocí kterého si bude robot udržovat od překážky před ním (např. auta) odstup 20 cm. Pokud se bude vzdalovat, dojede ji, pokud se bude přibližovat, začne couvat.

Vyzkoušejte, jak funguje vaše řešení v různých situacích. 

✋ Kontrola našeho testování.
Následně si zkusíme zkontrolovat, zda jsme na něco nezapomněli.

1. Stavy: Ve kterých třech stavech se může fungující robot nacházet?
a)
b) 
c)

2. Hranice změny: V jaké vzdálenosti se mění stavy? Doplňte číslo (kritickou hodnotu): 
 cm

3. Testování: Nejprve robota testujeme ve všech běžných provozních stavech. Pokud něco nefunguje, opravíme to.
🏷️ Pozn.: V našem případě je běžným stavem jízda vpřed a další 2 stavy, které jsi vyplnil v 1. fázi kontroly: Stavy.

4. Změna stavů: Dále se zaměříme na to, zda se robot chová správně při přechodu mezi stavy, kdy se mění fungování programu.

5. Extrémy: Otestujte i chování v extrémních hodnotách (např. zcela volné místo, objekt velmi blízko).

Co jsi zjistili?



🚄 Také by vás zajímalo, jak se naši roboti chovají, když je dáme za sebe tak, aby vytvořili kolonu (vláček)?

Až budou mít spolužáci své roboty hotové, vezměte je a umístěte tak, aby jeli za sebou. Měňte rychlost prvního robota a sledujte, jak na něj ostatní reagují. Nebojte se je i zastavit. Pořadí robotů můžete měnit.

Co jste zjistili?

Jak se roboti chovali? Také některý z nich reagoval na každou změnu prudkým cuknutím či nedokázal stát na místě? Při testování se mohl dokonce i rozkmitat (cukat vpřed a vzad přesto, že se pozice překážky neměnila).

Pokud ano, roboti byli tzv. nestabilní. Nestabilní je např. i následující řešení. Zjistíte, proč u robota dochází k trhavému pohybu?



Za jeho nestabilitu může naše podmínka, která za jedinou správnou hodnotu považuje 20 cm.

Pokud je vzdálenost menší než 20 (např. jen 19,9 cm), robot prudce couvne.
Pokud je vzdálenost větší než 20 (např. jen 20,1 cm), prudce vyrazí vpřed.

Přitom je velká šance, že prudkým zrychlením při kterém urazíme např. jen 0,5 cm nastane druhý případ. Budeme tak opakovaně reagovat na hodnoty např.:
 19,5 cm [🔙 vzad],
 20,5 cm [➡️vpřed],
 19,5 cm [🔙 vzad],
 atd.

V další sekci se budeme věnovat stabilizaci pohybu robota.

✋ 8.4 Různé způsoby stabilizace

Stabilizaci lze provést různými způsoby, které přináší svá pozitiva i negativa. Která z níže uvedených voleb bude nejlepší?

Rozhodněte, které z dále uvedených řešení je nejvhodnější.
Svou volbu zdůvodněte.

🔗 Stáhněte si soubor s programy.

Stabilizace A
Stabilizace spočívá v: 
Hlavní výhody:
Hlavní nevýhody:



Stabilizace B
Stabilizace spočívá v: 
Hlavní výhody:
Hlavní nevýhody:



Stabilizace C
Stabilizace spočívá v:
Hlavní výhody:
Hlavní nevýhody:




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

📝Která volba stabilizace je nejlepší: (volby A, B, C)

📝Stručně zdůvodni proč:


🙋🏻 8.5 Rozšíření úlohy

🙋🏻 Zařiďte, aby robot při detekci překážky postupně zpomaloval a ve vzdálenosti 20 cm před ní úplně zastavil. Pokud se překážka začne vzdalovat, bude robot postupně zrychlovat a snažit se ji dojet. Ve chvíli, kdy bude mezera mezi překážkou a robotem dostatečně velká (např. 40 cm), robot pojede 100% rychlostí.

🙋🏻 Rozšiřte program tak, aby robot při couvání vydával varovný tón.

🙋🏻 Na displeji zobrazte kromě aktuální vzdálenosti i maximální a minimální změřenou vzdálenost.