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

  • robotická stavebnice LEGO Mindstorms EV3 (45544 EV3 Základní souprava),
  • PC s programovacím prostředím LEGO EV3 (či alternativní),
  • překážky vytvářející nevyhovující a dostatečná parkovací místa (úspěšně lze použít krabice od stavebnic).

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:

  • vytvořit pevnou samonosnou konstrukci umožňující pohyb a zatáčení auta,
  • navrhnout umístění a konstrukci otočného ultrazvukového senzoru.

Programováním robota by studenti zapojení do této činnosti měli zlepšit své dovedností v oblastech:

  • využití a ovládání servomotorů,
  • získávání zpětné vazby ultrazvukovým senzorem,
  • ovlivnění programu na základě vstupů,
  • uchování výchozích hodnot (např. směru parkování).

Ř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áží:

  • na displeji vykreslit informační texty,
  • přehrát vybrané zvuky,
  • realizovat řízení robota na základě hodnot zjištěných ultrazvukovým senzorem,
  • v rámci zaměření úlohy předcházet možným chybám,
  • uložit stav získaných hodnot a ten dále zpracovávat,
  • navrhnout systém zatáčení robota pro zaparkování.

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.

  • Úvodní motivace - rozbor úlohy, rozdělení činností (15 min)
  • Tvorba konstrukce robota
    • podle vlastního návrhu (4 h);
    • podle schématu zapojení (7 - 25 minut)
  • Úlohy
    • přímočarý pojezd robota (2 - 10 min)
    • detekce začátku volného místa, výpisy na obrazovku (4 - 15 min)
    • pojezd, určení vzdálenosti a detekce konce volného místa (8 - 30 minut)
    • detekce problému, oprava na plynulou kontrolu volného místa (10 - 30 minut)
    • opakování režimu detekce při nedostatečné velikosti volného místa (10 - 25 minut)
    • provedení parkování (12 - 40 minut)
    • otestování celkové funkčnosti (3 - 10 min)
  • Prezentace úlohy a řešených problémů, reflexe projektu a činnosti skupiny
    (dle počtu skupin cca 5 - 10 minut na skupinu + čas na závěrečnou reflexi)

 

 

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.

Model auta s parkovacím asistentemFoto 1

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.

Konstrukce automobilu

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

Umístění jednotkyFoto 2

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.

Manévrovatelnost robotaFoto 3

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.

Umístění senzoruFoto 4

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.

Detekce volného místa

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.

Volné místo - program

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.

Volno s novými bloky

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

Měření vzdálenosti

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

Pojezd o délku auta

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.

Volno pro parkování

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.

Volno s chybou

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

Volno

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

Obsazeno - první část

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

Obsazeno - druhá část

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

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

Parkování

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.

Vlevo