FIRST® LEGO® League robot verseny 2018

First Lego League

First Lego LeagueA Nemzetközi LEGO® Robot versenyek azért jöttek létre, hogy a segítsék/erősítsék a műszaki, természettudományos és informatikai kompetenciák fejlesztésén túl a kooperatív csoportmunkát, a problémamegoldásra orientáló komplex gondolkodásmódot. A hazai oktatási rendszerben ezek az összetevők is egyre hangsúlyosabban jelennek meg. A Magyarországon is „játszható” nemzetközi versenyek közül kiemelkedik két verseny: a FIRST® LEGO® League (FLL) és a World Robot Olympiad™ (WRO).

2018. december 15-én FLL bíróként részt vettem az Edutus Egyetem által – már sokadik alkalommal – megrendezett FLL robotika verseny tatabányai regionális fordulóján. 3 fős zsűri tagjaként a feladatom a versenyre elkészült kutatási projektek értékelése volt.

FIRST® LEGO® League robot verseny 2018

Az FLL verseny 1998-ban indult, melyen 70 országból, mintegy 30 000 csapat vesz részt évente. Magyarország a Central Europe régióban vesz részt, ahol kb. 800-900 csapat mérkőzik meg egymással. Egy csapat 3-10 főből áll, választott csapatvezetőjük van és mindannyian 9-16 év közötti tanulók.

FIRST® LEGO® League robot verseny 2018

Minden évben van egy központi témája a versenynek, ami két szálon fut:

  • Kutatási projekt: a kutatási feladat témáját megismerve a csapatok egy problémát keresnek, amelyre az életkoruknak megfelelő megoldást kell adniuk és tevékenységükről 5 perces prezentációban számolnak be a versenyen. A zsűri értékeli a kutatási projekt megvalósítása során a probléma azonosítását, elemzését, a meglévő megoldások áttekintését, a csapat megoldását, a megjelenő innovációt, a prototípust, a prezentáció felépítését, hatékonyságát, eredetiségét, a csoportmunkát. Letölthető a 2018-as kutatási feladat leírása.
  • Robotika: egy kb. 3 m2-es akadálypályán tűznek ki 10-15 megoldandó feladatot, amelyre a csapatnak robotot kell tervezni, építeni és programozni. A robotnak 2,5 perc alatt kell önállóan, a programja által vezérelve megoldania a feladatokat. Az akadálypálya egységes, minden évben központilag készítik el. A feladatok teljesen probléma centrikusak, a csapat találja ki, hogyan oldja meg, nincs abszolút jó megoldás. A verseny során a robotot át lehet építeni, és csak a pálya kijelölt területén lehet kézzel hozzáérni. A zsűri értékeli a robot dizájnt, amely a megépített konstrukció ötletességét, hatékonyságát, valamint a programok forráskódjainak működését jelenti. Külön feladat alapján értékelik a csapatmunkát is. A nemzeti fordulókból a legjobbak jutnak tovább a nemzetközi fordulókba. Letölthető a 2018-as robotverseny feladat leírása.

A 2018-as verseny során az INTO ORBIT nevű projektet kellett megvalósítani, amelyben a csapatnak azonosítania kellett egy olyan fizikai vagy társadalmi problémát, amellyel szembe kell néznie az embereknek egy hosszú távú űrutazás során a naprendszerünkön belül, és javaslato(ka)t kellett tenniük a megoldására. A korábbi évek projekt témakörei is, illetve korábbi események hírei is elérhetők: Edutus 2017, Debrecen 2018, valamint nemzetközi és hazai robotversenyek általában.

FIRST® LEGO® League robot verseny 2018

FIRST® LEGO® League robot verseny 2018

A verseny teljes dokumentációja, specifikációja több száz oldal angol nyelven és részben nonverbálisan elérhető anyagból áll és évről-évre változnak a konkrétumok, de a koncepció (alapértékek: discovery, innovation, impact, inclusion, teamwork, fun) állandó. A 2018-as robotverseny akadálypálya megépítve így nézett ki:

FIRST® LEGO® League robot verseny 2018

FIRST® LEGO® League robot verseny 2018

5 csapat mérkőzött meg egymással: Refisek, RoboGo_5vos, Maros Robo Team, legÓÁG, FrankaRobotics. A kutatási projektben többféle megközelítést alkalmaztak. Volt, ahol a technológiai, informatikai eszközorientált, kommunikációs problémák, fiziológiai szükségletek domináltak, máshol inkább perspektivikusabb társadalmi, szociológiai aspektusok és a fenntarthatóság kerültek előtérbe. Három csapat igazán kiemelkedett a délelőtti zsűri előtti fordulóban prezentációjukkal és kaptak sok-sok ötletet, javaslatot. Ők délután még egyszer megtartották előadásaikat, immár a teljes – kb. 120 fős tanulókból, felkészítő tanáraikból, szülőkből, testvérekből álló – közönség előtt. Szeretném kiemelni, hogy – miközben több szálon is futottak az egész napos rendezvényen az események – a TOP 3 csapat tagjai kiegészítették, átdolgozták délutánra a délelőtti prezentációikat és figyelembe vették a kapott ötleteket, javaslatokat. Egy markáns példa: a Plútóra küldött expedíció vezetője délelőtt még erősen autokratikus diktátor politikusként jelent meg, de délutánra már inkább emberközpontú spirituális vezetővé szelídült.

Örülök, hogy részt vehettem az FLL 2018 versenyen. Tartalmasnak bizonyult ez a nap. A szervezés nagyon profi volt. Legközelebb is szívesen csatlakozom.

ASCII művészet Java-ban

ASCII Art 4

ASCII Art 1Átte­kint­jük a ka­rak­ter­a­la­pú raj­zo­lás le­he­tő­sé­ge­it Java 2D gra­fi­ká­val, illetve a ka­rak­ter­fü­zé­rek kép­ként va­ló ke­ze­lé­sé­nek újabb le­he­tő­sé­ge­it is.

Az ASCII művészet jelentése és kezdete

Az ábécék betűiből/szövegeiből kialakított ábrák egyidősek lehetnek az írásbeliséggel. A technológiától függetlenül a karakterekből kialakított kép megjeleníthető: papír és penna vagy írógép, illetve számítógép és nyomtató vagy monitor segítségével.
Az ASCII művészet (ASCII art) tágabb értelemben a szövegalapú vizuális művészetre vonatkozik. Szűkebb értelemben véve a számítógépes grafika részterületének tekinthető. Az ASCII művészet számítógépet használ nyomtatható standard ASCII kompatibilis karakterekből álló képek készítéséhez és megjelenítéséhez. A képeken a képi elemek a nyomtatható karakterek, amelyek a pointilizmushoz hasonló optikai effektust mutatnak.
A művészeti ág indulása arra vezethető vissza, hogy a korai nyomtatókkal nem lehetett grafikát nyomtatni, a monitorokon nem lehetett grafikát megjeleníteni. Cégek, programok bannerjeinek, logóinak készítésére pedig akkor is volt igény. Ezek mellett például prezentációkhoz, kapcsolási rajzokhoz is használták az ASCII művészetet, valamint természetesen a korai e-mailekben is. A grafikus kártyák megjelenése előtti időkben pedig a videójátékok „grafikája” is ezzel a technikával készült.
Most nézzünk meg néhány lehetőséget saját programmal való képkészítésre.

ASCII képek rajzolása programozási alapismeretek tanulásakor

Saját programmal már az alapok tanulásakor készíthetők ASCII képek a vezérlő szerkezetek megismerése kapcsán. Az alábbi képek bemutatják a lehetőségeket.

ASCII Art 2

További sok-sok kép található az alábbi weboldalakon:

A 2D grafikával való szövegrajzoláshoz használható BufferedImage osztály

A BufferedImage osztály a java.awt.image csomag része. Az Image osztály utódja. Hozzáférhető képadat-puffert tartalmaz, colorModel-ből és képadatok raster-éből áll. A raster sampleModel-jében a sávok számának és típusainak illeszkedniük kell a színt és átlátszó (alpha) komponenseket megadó colorModel által megkívánt számhoz és típusokhoz. A BufferedImage típusú objektumnak van bal felső koordinátája (0, 0), ezért a létrehozásához használt raster-nek kell legyen minX=0 és minY=0 értéke. A BufferedImage osztály a raster fetch és set metódusaira, valamint a colorModel színmódosítási módszereire támaszkodik.

Szöveg képként megjelenítése karakterekkel a konzolon

A kép méretét beállítjuk. A Graphics2D osztály drawString() metódusával String-et képként jeleníthetünk meg. Bár elég „munkás”, de Java-ban gyakran BufferedImage példány létrehozásával oldjuk ezt meg, és a Graphics példányt attól kérjük el. A Graphics2D osztály karakterfüzérek rajzolásakor egyszerű mátrixszerű technikát használ. A String-et kirajzoló mátrixrészek nullától különböző értéket kapnak. A megjelenítendő terület értékét egyszerű adatként, például int-ként kell megadnunk, nem RGB színértékekkel. Ehhez a képtípust int-módba állítottuk: BufferedImage.TYPE_INT_RGB. Az ASCII képek alapötlete az, hogy a képmátrix nem nulla indexeihez hozzárendelt értékeket a kívánt művészi karakterrel helyettesítjük. A nulla értékű mátrixindexeknek szóközt adunk. A nulla integer-módban -16777216-tal egyenlő. Ezután a Java 2D grafika haladó renderelő beállításainak használatához kasztoljuk a Graphics objektumot Graphics2D példánnyá. Majd beállítjuk a kívánt renderelési paramétereket, végül meghívjuk a drawString() metódust egy karakterlánccal.

Íme az elkészült szöveg/képernyőkép:

ASCII Art 3

A karakterek cserélgetésével a pozitív képből könnyen kaphatunk inverz/negatív képet is. A generált/renderelt képet fájlban is tárolhatjuk, például a javax.imageio.ImageIO osztállyal és adott a lehetőség a kép méretének megadására, a rajta megjelenő szöveg betűtípusának beállítására, háttérszín és szövegszín alkalmazására is.

A Java BufferedImage osztály néhány lehetőségének áttekintése után jó szórakozást kívánunk az ASCII képek létrehozásához, a lehetőségek további tanulmányozásához. Aki nem programból szeretne karakterekből/szövegekből felépülő képeket készíteni, használhat online alkalmazásokat is, például az Image to HTML/ASCII-t.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 21-24. óra: Objektumorientált programozás, 2. rész alkalmához kötődik.