Adaptivní tempomat

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 je nyní prozkoumat.

Vytvořte digitální měřič, pomocí kterého můžeme měřit vzdálenosti objektů (např. stěn či výšku vašeho spolužáka). Hodnotu vzdálenosti vypište na displej ve tvaru XY cm (např. 153 cm).


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


Na obrázku můžete vidět fragment programu, který na displej vypíše text „BAR: “ poté uvede číslo rozpoznané barvy a přidá text „ !“, např. „BAR: 5 !“

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, metry)?


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


5. Jak se senzor chová, pokud měřím 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 se bude robot neustále pohybovat vpřed a zastaví 15 cm před případnou překážkou.


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

❗ Otestování bezpečnostní pojistky
Vytvořili jste bezpečnostní pojistku? Nyní ji musíme otestovat.

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

Aktuální vzdálenost pro kontrolu vypisujte na displeji.

2. Jak se robot chová, pokud zastaví a s překážkou se
a) přibližujete,
b) vzdalujete?

Je pohyb plynulý?

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 umí zastavit před překážkou. Jeho pohyb však není plynulý a nehodí se příliš pro sledování pohyblivé překážky. Právě tou jsou např. auta jedoucí v koloně. Zde by se nám plynulý pohyb velmi hodil. Zběsilá jízda by způsobovala řadu komplikací. Robota bychom také mohli vybavit dovedností couvat.

Couvání

V této aktivitě naučíme robota reagovat na pohyblivou překážku. Ať se překážku bude pohybovat směrem k němu či od něj, bude si od ní stále udržovat stejnou vzdálenost.

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

💡 Tip: Rozšiřte vaše řešení o reakci na detekovanou vzdálenost menší než 20 cm. 

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

1. Stavy: V jaký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ň číslo (kritickou hodnotu). 
 cm

3. Testování: Nejprve vyzkoušejte běžný režimpřechody mezi stavy, kde se mění fungování programu.
Pozn.: V našem případě je běžným stavem jízda vpřed a další 2 stavy, které jsi vyplnil v 1. Stavy.

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

Co jsi zjistil?



Pokud jste zvolili níže uvedené řešení, byl robot velmi nestabilní. Na každou změnu reagoval prudkým cuknutím a nedokázal stát na místě. Při testování se mohl i rozkmitat (cukat vpřed a vzad přesto, že se pozice překážky neměnila).


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

Pokud je vzdálenost menší < 20 (např. jen 19,9 cm), prudce couvneme.
Pokud je vzdálenost větší > 20 (např. jen 20,1 cm), prudce vyrazíme 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 reagovat opakovaně na hodnoty např.:
 19,5 cm [🔙 vzad],
 20,5 cm [➡️vpřed],
 19,5 cm [🔙 vzad],
 ...

V další sekci se budem 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. 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""b" se přivádí (zadávají) hodnoty, se kterými se počítá.

📝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 jí 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 kromě aktuální vzdálenosti zobrazte i maximální a minimální změřenou vzdálenost.