Projekt Parkovací asistent
| Stránky: | Moodle ZČU |
| Kurz: | 2CZV010 - Popularizace vědy ve volnočasových aktivitách žáků SŠ - informatika |
| Kniha: | Projekt Parkovací asistent |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | neděle, 8. listopadu 2026, 17.46 |
Popis
Náměty dlouhodobých projektů pro popularizaci chemie
Projekt parkovací asistent
Parkování, ať již v podélné řadě stojících automobilů, nebo v příčném směru může činit mnohým z nás řadu obtíží. Musíme dbát na to, abychom nepoškodili vedle stojící automobily nebo další objekty, jako je osvětlení, obrubníky a další. Dále musí být parkování plynulé, abychom příliš nezdržovali provoz na frekventované ulici.
V dnešní době nám je značným pomocníkem pro tuto někdy zdánlivě obtížnou činnost parkovací asistent. Ten dokáže v okolí detekovat volný prostor a analyzovat, zda je dostatečně velký pro to, aby do něj mohlo vozidlo zaparkovat. Při parkování navíc detekuje předměty v okolí a snaží se předcházet kolizím.
Jak takový parkovací asistent funguje, si můžete prohlédnout na následujícím videu:
Parkovací asistent s využitím LEGO Mindstorms EV3
Vytvořit si vlastní automobil obsahující parkovacího asistenta není příliš složité. Využít k tomu můžeme také robotickou stavebnici LEGO Mindstorms EV3. Bude se jednat o automobil opatřený zařízením pro detekci volného prostoru pro podélné parkování v řadě automobilů. Princip funkce bude spočívat v detekci volného prostoru při projíždění kolem řady zaparkovaných vozidel a v hledání dostatečného prostoru pro zacouvání do řady.
Řešení této úlohy se může zdát složité, ovšem po splnění jednotlivých dílčích úkolu zjistíte, že vytvoření programu nebylo příliš náročné.
Vyžadované pomůcky:
Pro vytvoření modelu a následně také ovládacího programu budete potřebovat následující:
- základní sadu robotické stavebnice LEGO Mindstorms EV3,
- řídící jednotku EV3,
- ultrazvukový senzor,
- technické díly,
- programovací prostředí EV3.
Metodický list pro dlouhodobý badatelský projekt
|
Téma |
Automatický parkovací asistent |
|
|
Tematický celek |
LEGO ROBOTIKA |
|
|
Motivační rámec projektu |
Pro řadu lidí není parkování příjemnou činností. Automobilky proto vybavují auta různými automatickými či poloautomatickými systémy, které tuto činnost zpříjemňují či zcela vykonávají místo člověka. Udělat si vlastní model automaticky parkovacího auta není se stavebnicí LEGO EV3 nikterak složité. Pojďme se do toho pustit. |
|
|
Počet žáků |
Ideálním počtem pro řešení této úlohy jsou dva studenti na jednu stavebnici LEGO Mindstorms EV3. Práce ve dvojici umožní optimální využití žáků a poskytne možnost konzultace i konfrontace různých způsobů řešení v rámci skupiny. V případě potřeby je však možno upravit počet na 1 až 3 studenty na jednu stavebnici. U většího počtu studentů často dochází k nevytížení některého z žáků, který si jen velmi těžko hledá možné uplatnění. Při řešení úlohy je možno si práci na vyřešení úlohy rozdělit (1 student pracuje na konstrukci robota, další programují ovládací program). |
|
|
Věk žáků |
15 + | |
|
Pomůcky |
Pro komplexní realizaci úlohy je zapotřebí toto vybavení:
Kompletní projekt vytvořený v programovacím prostředí EV3 ke stažení. Pozn: Úloha je s omezením řešitelná i za pomoci infračerveného senzoru, kdy ultrazvukový senzor může detekovat překážky před autem. |
|
|
Vhodná místa realizace projektu |
Běžná učebna vybavená počítači s nainstalovaným programovacím prostředím EV3 (či alternativním) a dostatečným prostorem pro otestování automatického parkovacího systému. |
|
|
Cíle aktivit |
Dosažené cíle v rámci dlouhodobého badatelského projektu se značně liší dle způsobu vedení aktivity. Ta může být omezena na řešení dílčích úloh, zejména na programování zaměřených úloh či rozšířena o celkovou konstrukci robota a vysvětlení ultrazvukové detekce objektů. V případě řešení konstrukce by studenti měli dokázat:
Programováním robota by studenti zapojení do této činnosti měli zlepšit své dovedností v oblastech:
Řešení projektu je však do jisté míry závislé na návrhu studentů. Dá se však předpokládat, že po absolvování studenti dokáží:
|
|
|
Rozvíjené kompetence |
Kompetence k řešení problémů. |
|
|
Předchozí znalosti |
Projekt je vhodný i pro úplné začátečníky se systémem LEGO, kdy je však nejprve vhodné konstrukci autíčka využít k získání dovedností ohledně pojezdu. Následně ho můžeme rozšířit o detekci překážky a teprve až poté přejít na automatické parkování. Výhodou konstrukce auta je jednoduchá možnost předělání např. na model určený pro pohyb po čáře. |
|
|
Mezipředmětové vztahy |
Automatizace, fyzika, matematika |
|
|
Časový plán |
Fáze projektu |
Metody a formy, motivace |
|
|
Stanovovat přesný časový plán jednotlivých činností u projektu či badatelsky zaměřené činnosti učitelem není vhodné. Čas je velmi závislý na zkušenostech, znalostech a dovednosti jednotlivých skupin (jedinců) i na způsobu pomoci (či prozrazení podstaty problému) učitelem. Uvedeme proto jen seznam dílčích částí projektu s odhadovaným časovým rozsahem.
|
|
|
Hodnocení |
Hodnocení úlohy není vyžadováno. Podstatně větším přínosem je závěrečné představení hotového robota a jeho funkcí před ostatními skupinami. Tato forma více působí na vnitřní zpětnou vazbu a motivaci studentů. |
|
|
Návaznosti |
||
|
Poznámky |
|
|
Konstrukce automobilu s parkovacím asistentem
Pro vytvoření modelu automobilu s parkovacím asistentem máte dvě možnosti. Buďto můžete postupovat podle přiloženého návodu, který naleznete níže ke stažení, nebo se můžete pokusit vytvořit model vlastní, který vhodně opatříte potřebnými komponentami.


Námi vytvořený soubor konstrukce si můžete stáhnout <zde>. K prohlížení je zapotřebí mít nainstalovaný program LEGO Digital Designer. Pokud tuto možnost nemáte, můžete si vyexportovaný návod s omezenými funkcemi prohlédnout na této adrese.
Pozn.: Program LEGO Digital Designer potřebný k prohlížení a editaci souboru konstrukce je ke stažení na adrese http://ldd.lego.com/cs-cz/download.
Problémy řešené při vytváření konstrukce
Základní konstrukce automobilu
Základem vytvoření robustního a stabilního modelu je dobře vytvořená základní konstrukce. V úloze s parkovacím asistentem jsme propojení motorů a vytvoření základní nosné konstrukce realizovali pomocí plošných dílů EV3. Tyto díly nám umožnily vytvořit nosnou plochu pro další prvky konstrukce.

Umístění a možnosti připojení řídicí jednotky
Druhým problémem, který jsme museli řešit, bylo umístění řidicí jednotky na modelu robota. Musíme dbát na to, abychom mohli bezproblémově k jednotce připojit jak vodiče připojených motorů a senzorů, tak také USB vodič pro komunikaci řídicí jednotky s počítačem (pokud nepoužíváme Bluetooth komunikaci). Jelikož model využívá k pohonu dva vpředu umístěné servomotory, je dobré řídicí jednotku umístit do jeho přední částí, čímž docílíme zatížení přední nápravy modelu, a tedy jeho lepší pohyblivosti (eliminujeme možnost podklouznutí předních pneumatik).

Manévrovatelnost modelu
Jelikož automobil se musí během jízdy natáčet, aby co nejlépe zaparkoval na volné, detekované místo, musíme co nejvíce zlepšit jeho manévrovatelnost. K tomu nám napomůže ocelová rejdovací kulička, kterou umístíme na podvozek na zadní části auta.

Umístění a natáčení ultrazvukového senzoru
Nejsložitější částí robota je umístění ultrazvukového senzoru. Abychom zajistili variabilitu modelu, potřebujeme vytvořit konstrukci, která nám umožní parkovací senzor (ultrazvukový senzor) natáčet všemi směry. Vytvořili jsme proto za pomoci ozubených kol mechanismus, který tuto funkci umožňuje. Jeho podrobnější rozbor naleznete v přiloženém souboru s kompletní realizací modelu v LEGO Digital Designer.

Nalezení volného místa
Prvním krokem, který musíme při vytváření ovládacího programu pro parkovacího asistenta vykonat, je detekce volného místa na zaparkování. Jak jsme již předeslali v úvodu, bude se tak dít pomocí ultrazvukového senzoru umístěného na boku modelu.

Popis programu:
Představíme si programový zápis tohoto jednoduchého úkonu pro lepší pochopení. Robot se bude pohybovat podél pomyslné řady zaparkovaných automobilů a pomocí ultrazvukového senzoru bude detekovat, jak velká je naměřená vzdálenost od jeho boční strany. Pokud bude nižší než 25 cm, bude hodnota vyhodnocena tak, že se v řadě nachází automobil nebo jiná překážka, a není tak možné zastavit. Jakmile se ale vzdálenost zvětší nad 25 cm, robot okamžitě zastaví. Detekoval totiž místo, kde by mohl začínat prostor, který je potenciálně dostatečně velký pro zaparkování.
Pro lepší názornost jsme program ještě doplnili o zvukové a vizuální prvky signalizace. Před rozjetí robota se ozve signál Searching, který nás informuje o započetí snímání. Zároveň se na displeji zobrazuje informace VYHLEDÁVÁM MÍSTO. Jakmile je detekován prostor pro parkování, vypíše se na displej informace NALEZENO a zazní informační hláška Detected.
Doporučení:
Pro zpřehlednění programu si můžeme pro některé z částí programu vytvořit vlastní bloky, které obsahují část zdrojového kódu programu (několik programových bloků). Na obrázku můžete vidět tentýž program po vytvoření dvou nových bloků. První pro vyhledávání s informačním výpisem a druhý pro situaci, kdy je volné místo již nalezeno. V dalších částech projektu tak již můžeme využívat tento zjednodušený programový konstrukt.
Měření potřebné vzdálenosti
Jakmile náš automobil dokáže zjistit, kde začíná volný prostor, musíme ho naučit změřit, zda je prostor dostatečně velký pro zaparkování. Nejjednodušší metodou pro tento úkon je ta, že si změříme, jak dlouhé naše vozidlo je a necháme robota tuto vzdálenost urazit. Když ji ujede, znovu pomocí ultrazvukového senzoru zjistíme, zda se na místě, kde zastavil, nachází stále mezera vhodná pro zaparkování.

Na obrázku vidíte program z úlohy Nalezení volného místa rozšířený o pojezd o určitou délku. Pro svůj model jsme jako vhodnou délku zvolili dvě otáčky motoru. Čítač otáček musíme nejprve vynulovat a až následně dvě otáčky provést. Po ujetí vzdálenosti se robot zastaví.
Robot sice od okamžiku, kdy detekoval volné místo pro zaparkování, urazil vzdálenost potřebnou pro zaparkování, neví ovšem, zda i na tomto místě je stále volné parkovací místo. Opět tedy musí změřit, zda se zde nachází dostatečně velká mezera (hodnota > 25). Pokud zde prostor pro zaparkování je, na displej se vypíše informace NALEZENO a zazní informační hláška Detected. Pokud zde ale již prostor není, což znamená, že od místa, kde jsme detekovali začátek mezery, až na toto místo není dostatečně velký prostor pro zaparkování, vypíše se displej informace MALO MISTA a zazní informační signál Error představující chybu.
Fungoval by parkovací asistent bez problémů tímto způsobem v reálném světě?
Když parkovací asistent detekuje volné místo pro parkování, měří vzdálenost také pouze na začátku a na konci? Musíme počítat se situací, že mezi zaparkovanými vozidly sice volné místo bude, ale může se zde nacházet lampa veřejného osvětlení, popelnice, sloupek nebo zaparkovaný motocykl. Naučíme se proto ještě program rozšířit tak, aby parkovací asistent detekoval volné místo v celé jeho délce a ověřoval, že se zde žádná překážka nenachází. Více v kapitole Měření s překážkou.

Měření s překážkou

Při realizaci programu, který ověřuje, zda se v detekované mezeře mezi zaparkovanými automobily nenachází překážka, opět rozšíříme náš vytvářený program. Vytvoříme si proměnnou, která je logického datového typu (Logic). Na základě hodnoty, kterou si do ní budeme ukládat, budeme rozlišovat, zda je v detekovaném místě obsazeno, či nikoliv.
Na prvním obrázku můžete vidět cyklus, který nejprve ověří, zda je na daném místě dostatečný prostor pro zaparkování, nebo zda se v něm nenachází překážka. Pokud některá z těchto situací nastane, cyklus skončí.

Dostaneme se v programu dále, kde znovu ověřujeme, zda je na měřeném místě obsazeno, či nikoliv. Pokud ano, je zahlášena chyba a vypsána informace, že se zde nachází málo místa. Pokud není obsazeno, je vypsáno na displej, že je zde volno pro zaparkování. Tyto kroky ověřování volného místa se provádí tak dlouho, dokud parkovací asistent nenalezne vhodné místo na zaparkování.

Volba strany pro parkování a parkování

Když náš robot úspěšně nalezne místo, do kterého může bezpečně zaparkovat, musíme ho tuto činnost naučit. Při couvání využijeme bloky pro synchronní řízení dvou motorů. Na obrázku můžete vidět část programového kódu, kterou je nutné přidat na závěr programu, aby robot do řady stojících vozidel zacouval. Hodnoty natočení motorů se mohou samozřejmě lišit případ od případu. Vše záleží na tom, jak máte připravenou dráhu, na které robot mezi dvě vozidla nebo jiné překážky couvá.
S naším programovým zápisem bychom ovšem dokázali parkovat pouze na jednu stranu. Konstrukci robota jsme ovšem opatřili otáčivým ultrazvukovým senzorem pro možnost parkovat jak vlevo, tak i vpravo. Ukážeme si proto, jak zrealizovat tento otáčivý pohyb senzoru. Navigaci můžeme řídit například tlačítky řídicí jednotky. Po stisku levého tlačítka se senzor natočí vlevo, při stisku pravého vpravo. Na obrázku můžete vidět příklad natáčení. Proměnná vlevo je logického datového typu. Jakmile její hodnota bude true, pomocí vestavěného motoru se ultrazvukový senzor natočí vlevo. Kompletní program s natáčením senzoru naleznete ke stažení v části Metodický list pro dlouhodobý badatelský projekt.
