Stejně jako minulý rok se i letos zúčastníme soutěže FIRST Lego League Challenge. Tentokrát už jsme si vyzkoušeli Pybricks. Nečekejte ode mě shrnutí nebo nějakou recenzi, ale děti se mě zeptaly na jednu úlohu, kterou jsem v tom mumraji neodbavil okamžitou radou na místě. Takže si plním za domácí úkol. Jak zastavit Lego robota na černé čáře pomocí Pybricks?

Pybricks

Již loni se nám Pybricks dostal do hledáčku, že bychom tím nahradili prostředí Lego Spike. Má nějaké zajímavé API jako například udržení rovného směru pomocí gyroskopu. Varianta s Python kódem je zdarma, ale tím děti zatím trápit nechci. Umožňuje používat i grafické bloky, na které jsou zvyklé, bohužel mi licence nepřijde zrovna levná. I když použijete bloky, projekt si vyexportujete do Pythonu, což může v učení pomoci.

Zastavení

Úloha „zastav se na čáře“ je velmi praktická. Ostatně na herní plánu je několik čar, které můžete (ale nemusíte) k orientaci využít. Lego má barevný senzor a k němu existuje Pybricks API.

Neuvědomil jsem si, že přesnost měření barvy bude záviset na okolním osvětlení a při použití hodnoty odrazivosti nebude černá nikdy nula (přece jen něco odrazí). Chvilku jsem debugoval, jaké hodnoty naměřím na různých površích. Nakonec jsem pro sebe použil hodnotu 20 (20 % odrazivosti).

A pak už se k výslednému programu dostaneme poměrně přímočaře. V blocích to může vypadat takto.

V Pythonu takto.

Všimněte si, že bloku pohybu lze v then nastavit, co dělat na konci bloku, což ovlivní, jak (ne)plynule pojede. Stejně tak na konci nastavuji způsob zastavení.

Závěr

Pybricks nabízí pokročilejší funkce oproti Lego Spike prostředí. Varianta psaní v Pythonu je zdarma, za grafické bloky si připlatíte. Spouštění programů ve fyzickém světě dokáže vždycky něčím překvapit, třeba zjištěním, že i černá barva odrazí nějaké světlo.

Související