10. Parkovací asistent

V této hodině navážeme na předchozí aktivity s ultrazvukovým senzorem. Využijeme tento senzor k vyhledání dostatečného místa na parkování a k následnému zajetí do řady vozidel. 

10.1 Než začneme

Dříve než začneme s tvorbou parkovacího asistenta, prozkoumáme nový blok se zajímavou funkcí, která se nám bude později velmi hodit.


Vysvětlete, k čemu slouží následující program a jeho sekce.

📝Sekce A: 

📝Sekce B: 

📝Sekce C: 

📝Sekce D:

📝Program slouží k:




📝Co by program po spuštění zobrazoval, pokud bychom v sekci A zadali místo 0 hodnotu 10?


📝 Vysvětlete, jak by program fungoval, pokud bychom blok ze sekce A vložili přímo před blok podmínky (SEKCE C)?

❓ Co musíme upravit, aby program počítal každý stisk za 10?  


Vysvětlete, jakou má program na obrázku funkci.


Otevřete si předchozí program 🔗.

Co bychom museli změnit, aby program zjišťoval minimální vzdálenost?

Změněný program vyzkoušejte.

10.2 Jak bude parkovací asistent fungovat?

Představte si, že je náš robot automobilem s funkcí automatického vyhledání volného místa a zaparkování. 

Vymyslete, jak by náš robot mohl automatizovaně vyhledat volné místo v řadě aut a na toto místo bezpečně zaparkovat. 

Možnosti budeme následně diskutovat.

⚙️💡 K řešení úlohy je vhodné využít ultrazvukový senzor umístěný na straně robota.

📝 Prostor pro naše poznámky k diskuzi:

Každý větší problém je vhodné rozdělit na několik menších částí.

📝 Které fáze bude mít řešení našeho problému? Co bude robot postupně řešit?

Programování parkovacího asistenta se bude skládat z několika dílčích kroků.
1. Nejprve musí robot dokázat nalézt volné místo v řadě automobilů.
2. Následně si musíme ověřit, zda je místo dostatečně velké pro zaparkování robota.
3. Nakonec robota naučíme zaparkovat na volné místo.

✋ 10.3 Nalezení začátku volného místa

Prvním krokem je nalezení začátku volného místa v řadě aut. Tu nám v učebně pomohou simulovat např. krabice LEGO stavebnice. 

Vytvořte program, díky kterému robot detekuje začátek volného místa pro zaparkování. Po nalezení místa zastaví a detekci oznámí výrazným dlouhým tónem.


❓ Jak senzory robota poznají, že nalezly volné místo pro zaparkování?

💡 TIP: Robot projíždí ulicí. Po celou dobu měří vzdálenost pomocí ultrazvukového senzoru. Jak se jeho měření bude lišit, když pojede podél řady zaparkovaných automobilů a když nalezne volné místo?

Už víte jak úlohu vyřešit?

✋ Může být tento program správným řešením aktivity? Pokud ne, proč?


📝Naše odpověď

10.4 Tvorba vlastního bloku

Program, který vytváříme, bude ve výsledku poměrně rozsáhlý. Pro jeho zpřehlednění si můžeme vytvořit vlastní bloky. Stačí si označit všechny bloky, které do něj chcete zahrnout, a v horním menu vybrat položku Tools a následně My Block Builder.

V okně, které se otevře si následně zvolíte název bloku, jeho volitelný popis a ikonku, která se bude na bloku zobrazovat. Vytvořený blok se následně přiřadí do poslední záložky palety programových bloků s názvem My Blocks.

💡 Vyzkoušejte si: Vytvořte si z programu pro detekci začátku volného parkovacího místa vlastní blok. Poté ho vložte na plochu programovacího prostředí a program spusťte. Našli jste nějaký rozdíl?

✋ 10.5 Měření potřebné vzdálenosti

Druhým krokem vytvoření programu je nalezení dostatečně velkého místa pro zaparkování. Robot už sice umí najít začátek volného parkovacího místa, ale neví, jestli je místo dostatečně velké.

Vytvořte program, pomocí kterého robot změří, zda je místo pro zaparkování dostatečně velké, a pokud ano, bude nás o tom informovat. Pokud ne, vydá chybové hlášení nebo tón.

🆘💡 TIP: Jak nejjednodušším způsobem zjistit, jestli je prostor pro zaparkování dostatečné velký?
Nejdříve musíte vědět, jakou délku má váš robot. Ten jakmile detekuje začátek parkovacího místa, popojede o vzdálenost své délky a znovu ověří, jestli je zde volno.

Otázky:

❓ Mohl by takovýto parkovací asistent fungovat v reálném životě?
❓ Jaké problémy by u něj mohly nastat?

📝 Diskutujte ve skupině a své postřehy si zapište.



🙋🏻 10.6 Rozšiřující aktivita pro rychlé žáky

Možná jste během diskuze zjistili, že předchozí řešení by nebylo příliš správné. Může totiž dojít k tomu, že na místě, které robot vyhodnotil jako volné, bude zaparkována motorka, umístěna popelnice nebo sloup veřejného osvětlení. V aktivitě níže se tedy naučíme, jak tento problém vyřešit.


Analyzujte následující program a zjistěte, k čemu slouží. Upozorňujeme, že pro vás bude velmi důležitý k řešení závěrečné funkce robota. Až zjistíte, co tento program dělá, použitejte předchozí získané znalosti a zkuste úlohu vyřešit.

Pokud si nebudete vědět rady, pomůcku najdete v záložce Nápověda.

💡 TIP: Nový blok, který v programu vidíte, se nazývá Motor Rotation a najdete ho ve žluté záložce palety bloků. Slouží k měření nebo porovnávání počtu otáček motoru ve stupních nebo otáčkách.

Zjistili jsme, že k úspěšnému vyřešení aktivity musíte nakonec vyřešit o něco více dílčích kroků.

Pojďme si je nyní shrnout. 
1) Nalézt volné místo pro parkování.
2) Změřit, zda je místo dostatečně velké.
3) Ověřit, zda se na parkovacím místě nenachází nějaká překážka.
4) Úspěšně zaparkovat.

10.7 Parkujeme

Pokud jste již našli volné parkovací místo a víte, že se do něj robot vejde, zkuste do něj zaparkovat.

Vytvořte program, pomocí kterého robot zaparkuje do volného parkovacího místa.

💡 TIP: Pro řešení této části programu můžete opět vytvořit svůj vlastní programový blok. 

🆘💡 TIP: Pro řešení můžete využít toho, že se robot chová pokaždé přibližně stejně. Nemusíte tedy provádět složitou navigaci pomocí senzorů. Do parkovacího místa můžete zajet obdobně, jako jsme s robotem jezdili při pohybu ve městě.

Otázky:
❓ Mohl by takovýto princip parkování fungovat v reálném životě?
❓ Které problémové situace by mohly nastat?

📝 Prostor pro naše poznámky