Fibonacci-spirál

Fibonacci logó

Fibonacci logóA Fibonacci-spirál a népszerű Fibonacci-sorozat elemei által meghatározott oldalhosszúságú négyzetekbe rajzolt maximális sugarú negyedkörök megfelelően összeillesztett darabjaiból/sorozatából áll. Sokszor hasonlítják az arany spirálhoz (jól közelíti), amely az aranymetszéshez kötődik.

A Fibonacci-spirál

Vegyük a Fibonacci-sorozat első 10 elemét! Rajzoljuk egymás mellé az alábbi elrendezésben belülről kifelé haladva az 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 oldalhosszúságú négyzeteket (az alábbi ábrán vékony sárgával jelölve). Piros színnel rajzoljuk bele a négyzetekbe a négyzet oldalhosszával megegyező sugarú negyedköröket. A negyedkörök megfelelő elrendezésben folytonos görbét alkotnak, és ezt nevezzük Fibonacci-spirálnak (az alábbi ábrán vastag pirossal jelölve).

Fibonacci-spirál 1

A rajzolás bármeddig folytatható, mert a sorozat végtelen, a négyzetek illeszkednek és az ábra rekurzív, önhasonló. Az alábbi animáció mutatja, hogyan alakul a spirál a nézőpont közelítésével. A viselkedés távolítás során is azonos lenne.

Fibonacci-spirál 2

Korábban blogoltunk már a Fibonacci napról, amelyet minden évben november 23-án ünneplünk. A sorozat első néhány eleméből összeáll a 11.23. és értelmezhető dátumként. Most nem a sorozat elemeinek előállítására fókuszálunk, hanem arra, hogy ezekből felépítsük a Fibonacci-spirált.

Készítsünk Java programot!

Grafikus felületű Java programot készítünk, amely 21 animációs fázisban mutatja be a Fibonacci-sorozat első 10 eleméből álló Fibonacci-spirál felépítését. A rajzolás fázisai:

  • Az 1. fázis a kiindulópontként tekinthető fehér, üres rajzlap. A rajzlap fekvő, mérete 890*550 pixel, amelyre éppen elfér a 10 negyedkörből álló spirál.
  • A 2-11. fázisban megfelelő pozícióba/koordinátákra kerülnek fel az ábra vázát alkotó négyzetek, belülről kifelé haladva. A négyzetek oldalainak hosszúsága a sorozat elemeinek megfelelő. A szomszédos négyzetek különböző színekkel kitöltöttek és mindegyikben megjelenik a sorozat megfelelő eleme.
  • A 12-21. fázisban – szintén belülről kifelé haladva – a négyzetek törlődnek és helyükre a spirált alkotó negyedkörök kerülnek fekete színnel. A 21. fázist tekintjük végeredménynek.

A fázisok kézzel, nyilakkal jelölt (Első, Előző, Következő, Utolsó) vezérlő nyomógombokkal megjeleníthetők, illetve egyben, időzítve animációként is lejátszható a rajzolási folyamat. Az elkészült program működése megfigyelhető az ábrán:

Fibonacci-spirál Java program

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 Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni.

Szoftverfejlesztő mémek

IT mémek

IT mémekAz IT kockáknak speciális humorérzéke van. Nekünk külön kategóriákba sorolható mémek készülnek és persze magunk is gyártjuk időnként. Az alábbi összeállítást szabadon keresgélve a weben szedtem össze és csoportosítottam a szoftverfejlesztés, programozás ismert szakterületeihez, folyamataihoz kötődően. Nem fordítottam le angolról magyarra a szövegeket. Aki érti, úgyis érti. Aki nem, úgyis továbbgörget. Enjoy!

Alapelemek, ciklusok

Az algoritmusok alapvető építőelemeivel, egyben a strukturált programozás alapfogalmaival illik tisztában lenni. Ismerni kell ezek működését, egymásba ágyazásának lehetőségeit. Szekvencia, szelekció, iteráció. Időnként döntéseket is hozni kell. Néha úgy érezzük, hogy túl korán, néha pedig későn. Érezzünk rá, mikor jó. Sosem árt lezárni egy-egy blokkot és tudni jól egymásba ágyazni amit kell. Azért a metódusokkal csínján kell bánni.

IT mém 1

Tisztázni kell bizonyos dolgokat

Nem érthetünk mindent és persze nem érthetünk mindenhez. A dolgokat különböző szemüvegen át látjuk, hiszen eltérő tapasztalatokkal rendelkezünk. Persze hasznos, ha egy csoportban értjük egymást, vagy legalább egy valaki tisztában van az ügyfél igényével. J Például a webfejlesztés során el kell fogadni, hogy vannak látványos, azonnali élményt nyújtó változtatások (pl.: design), és hosszú távon megtérülő háttérmunkák (pl.: technológiai SEO).

IT mém 2

Tervezni is tudni kell(ene valakinek)

Azért nem árt a precíz, pontos, konkrét feladatspecifikáció. Mindez akár több szinten is megfogalmazva: fokozatosan közeledve az ügyfél bölcsészmondataitól a kockaságig. Hasznos, ha nem csak a határidő motivál. Nyilván a pénz is. 😉 Érdekek mindig ütköznek, de ezt is meg kell tanulni elfogadni/kezelni. Néha csupán az erősebb kutya esete áll fenn, néha a hatáskörig is megy a történet.

IT mém 3

Ne feledjük: mindenki mást gondol

Mivel a különböző kapcsolódó szakterületeken tevékenykedő szakemberek szókincse eltérő, így ezekből gyakori és tipikus félreértések születhetnek. Ha a fejlesztés hosszabb ideig tart, akkor menet közben is változhatnak – és változnak is 😉 – az igények. Célszerű lenne folyamatokban gondolkodni és feltenni némi empátiával azt a kérdést, hogy igazából mit is akar az ügyfél? Vajon milyen problémát szeretne megoldani, milyen folyamatot tenne könnyebbé a fejlesztendő/karbantartandó szoftverrel? Egy bizonyos szint felett az interdiszciplináris megközelítés elengedhetetlen. Visszacsatolás során kiderül(het), hogy az ügyfél hogyan használja a szoftvert. Lehet, hogy teljesen másképpen, mint ahogyan gondolnánk. Örök bölcsesség: a tervezésre fordított idő később mindig többszörösen megtérül.

IT mém 4

IT mém 5

Módszertanok

Előbb-utóbb eljön az a szint, ahol már a különböző módszertanok is megjelennek. Ezekhez is alkalmazkodni kell. Minden fejben kerül helyre. Ezek többnyire a folyamatokhoz, a napi/heti munka szervezéséhez/ütemezéséhez is kapcsolódnak.

IT mém 6

Amikor már végre kódolunk…

Sokféleképpen mérhető/értékelhető egy fejlesztő munkája. Nyilván nem kilóra, például a megírt forráskód sorainak számával. Persze egy komplex szempontrendszernek lehetnek/vannak kvalitatív és kvantitatív mutatói.

IT mém 7

… kiderül, hogy persze semmi sem könnyű

Sosem az számít, hogy milyen hatások érnek bennünket. Az a fontos, hogyan reagálunk ezekre. Semmi sem könnyű, de természetesen erről is különbözőképpen gondolkodunk. Helyén kell tudni kezelni a dolgokat és akkor minden fenntartható hosszú távon. A programozást elkezdeni sosem késő, vagy másképpen: nem lehet túl korán kezdeni? Mindez nézőpont kérdése.

IT mém 8

A tesztelés sem árt…

Legyünk tisztában a tesztelés alapjaival és folyamatával is. Ha lefuttatjuk még egyszer az összes tesztesetet, azzal biztosan nem rontunk el semmit. 😉

IT mém 9

… ahogyan némi dokumentáció sem

Sokan és sokszor nem szeretünk dokumentálni. Bárki bármit mond és tapasztal, a dokumentálás szükséges és hasznos. Ugye senki sem gondolta, hogy ebből a mém gyűjteményből Chuck Norris kimaradhat? 😉

IT mém 10

Többnyire mindez csoportmunkában zajlik

Tisztában kell lennünk a helyünkkel a csoportban: feladatkör, pozíció, felelősség, szerep, kommunikáció. Három fontos kulcsszó: konfliktuskezelés, időmenedzsment, érdekérvényesítés. És persze a hatékony csoportmunkához szükséges soft skillek is előtérbe kerülnek. Kevesek működnek alapból/ösztönösen jól együtt csoportban, a többségnek ezzel tudatosan foglalkoznia kell. Ne éljünk a tipikus csoportmunka hozzáállással: „megcsináltam”, „elrontottuk”. Ezzel megvolt a kötelező cicás kép, már triplán is. 😉

IT mém 11

Tudni kell tanulni is a programozást

A programozási nyelvek csupán eszközei annak, hogy amit kigondoltunk, megterveztünk, modelleztünk, azt megvalósítsuk és működjön asztali gépen, böngészőben, telefonon. Elveket, koncepciókat is meg kell érteni. Kihagyhatatlanok az alapvető algoritmusok, adatszerkezetek. Meg kell ugrani az objektumorientált paradigmát is. A funkcionális paradigma is egyre népszerűbb. Hasznos, ha a tanulás során el tudjuk fogadni a tapasztaltabbak véleményét, javaslatait. Többnyire elsőre nem alkotunk tökéleteset, de minden hibából tanulunk. Tudomásul kell venni: nincsenek átugorható lépcsőfokok. Egyszerűen kell egy kritikus tömegű önálló gyakorlás és utána jön a sikerélmény.

IT mém 12

Ha elszántad magadat és szoftverfejlesztést/programozást tanulnál Java nyelven, akkor jó helyen jársz. A Jelentkezés lapon követheted, mikor indulnak csoportjaink.

Népesedési világnap

Népesedési világnap logó

Népesedési világnap logóAz ENSZ 1987-ben július 11-ét a népesedési világnappá (World Population Day) nyilvánította. Bolygónk lakossága aznap érte el az 5 milliárdot. További kerek számok voltak: 1999. október 12-én 6 milliárd, 2011. október 30-án 7 milliárd. További kerek számok várhatóak: 2023 – 8 milliárd, 2037 – 9 milliárd, 2057 – 10 milliárd. A KSH elemzése részletes elemzéseket közöl évről-évre a témában, például: 2019-ben, 2018-ban. A worldometer.info weboldalon folyamatosan frissülő kimutatások érhetők el a népességhez globálisan, valamint országonként is: például Magyarország aktuális népesedési adatai.

A népesedési világnap inspirált egy Java program megtervezésére és megírására. A swing GUI-s program megjeleníti a worldometer.info weboldalról kinyerhető adatok alapján régiónként (kontinensenként) az elérhető adatokat 1950-től 2020-ig az alábbiak szerint egy világtérképen.

Az elkészült program

Népesedési világnap Java program

Tervezés

Objektumorientált szemlélettel, MVC architekturális tervezési mintát követünk, angol nyelvű interfész, osztály, változó, objektum, metódus nevekkel. A projekt neve: WorldPopulation, a csomag neve: worldpopulation. Amit lehet, konstansként interfészbe (szeparálva) teszünk és az MVC rétegekhez kötődő osztályok implementálják. A modell minden évszámhoz tárolja a szükséges adatokat, mindezt egyetlen betöltéssel/letöltéssel éri el. A program kliensként hat régióra vonatkozó adatot gyűjt össze, alkalmazkodva a szerver adatforráshoz. A címsorban lévő összesített adat is elérhető közvetlenül a weboldalon, de a kisebb adatforgalom érdekében hasznos inkább a kliensben összesíteni. Mindössze egyetlen eseménykezelés szükséges: a csúszka beállításával megadott évszám alapján frissíteni kell a régiók címkéit és az ablak címsorát. Öröklődés hasznos a feladat megoldása során: egyrészt interfészek, másrészt osztályok között.

Interfészek

Az ősinterfész a WorldPopulationConstants, benne az évszám intervallum MIN_YEAR és MAX_YEAR határaival, valamint a megjeleníthető régiók neveivel tömbben: REGION_NAME_ARRAY. Két utódinterfész épül az ősre: ModelConstants és ViewConstants. Előbbi interfész az adatforráshoz kapcsolódik: URL_COMMON az URL eleje, URL_ARRAY az URL végei régiónként tömbben. Utóbbi interfész a megjelenítéshez kapcsolódik: WORLD_MAP_IMAGE a háttérkép annak WORLD_MAP_RECT méretével együtt, valamint a régiónkénti REGION_RECT_ARRAY téglalapok tömbje a kezdeti pozíciókkal/méretekkel, TITLE a sablon a program címsorához (frissítendő az évszámmal és az összesített népességgel). A megfelelő utódinterfészt mindig implementálja az MVC szerint hozzá illeszkedő osztály.

Osztályok

A belépési pont a WorldPopulation.java fájlban található.

Három összetartozó elemi adatot fog össze egybe a RegionData POJO, ezek name, year, population nevű rendre String, int, long típusú adatok. Például: Európa, 2020, 747643253. Tartalmaz két függvényt: getPopulation(), valamint toString(). Utóbbi HTML formátumban adja vissza a megjelenítendő adatokat.

A JLabel-ből származik az igényekhez alakított RegionLabel osztály. Ennek van előre megadott pozíciója, mérete, betűtípusa, betűmérete, sárga háttérszíne, piros kerete. Ezenkívül a téglalap átlátszó, valamint a benne megjelenő HTML tartalom vízszintesen középre igazított. Némi extra funkció, hogy egérrel megfogva – drag and drop – áthelyezhető, ami a MouseMotionListener egérmozgást figyelő interfész mouseDragged() metódusának felülírásával válik lehetővé. A mozgathatóságáért saját maga felel. Példaként közöljük az osztály teljes forráskódját:

A webről adatokat szerez és tárolja a Model osztály, a java.io és java.net csomagokra építve. Egy példa: a https://www.worldometers.info/world-population/europe-population/ oldal forrásából nyeri ki az osztály az alábbi adatokat:

Ezek parszolását követően elkészül egy optimálisnak tekinthető, generikus listákból álló regionListArray tömb adatszerkezet. A parszolás történhet egyszerű szövegkezeléssel vagy JSON feldolgozással is. Erre épülnek a konstruktorral és vezérlővel összehangoltan működő getter metódusok: getHTML(), getRegionList(), getRegionData(), getPopulation(). A JSON adatforrás feldolgozását most nem részletezzük, de hasonlóról blogoltunk már: Időjárás Budapesten.

A grafikus felhasználói felületet adja a JFrame utód View osztály. Három GUI komponensből áll: pnWorldMap – háttérkép JPanel, lbYear – kiválasztott/aktuális év JLabel, slYear – kiválasztható/görgethető aktuális év JSlider. Izgalmas megoldani egymásra/egymáson elhelyezni a komponenseket. Egy JLayeredPane komponens  DEFAULT_LAYER rétegére kerül a térképet tartalmazó háttérkép, majd a  PALETTE_LAYER rétegére kerül dinamikusan a hat  RegionLabel osztályú/típusú objektum. A csúszka komponens slYearStateChanged() eseménykezelő metódusa vezérlőként megszólítja a modell réteget és a visszakapott adatokkal frissíti a nézet réteget (a címsorban lévő összesítéssel együtt, ezres szeparátorokkal).

Ötlet továbbfejlesztésre

Hat különböző weboldal forráskódjából kell összegyűjteni a megjelenítendő adatokat. Ez 2020-ban régiónként 71 számot jelent és hat régió van. Érdemes lehet olyan adattárolást megvalósítani, amely csökkenti a szerverhez fordulások számát, illetve a letöltendő adatok mennyiségét. Hiszen a múltbeli évekhez kötődő historikus adatok nem változnak. Ha ezekre valamilyen formában a program emlékszik, akkor elegendő az utolsó tárolt évből kiindulva az aktuális évig évenként, régiónként lekérni mindössze 6, 12, 18… számot, a program utolsó futtatásának évéből kiindulva. Ez lényegesen kevesebb lenne, mint a jelenlegi 6*71 lekért szám. A koncepció kulcsszava: inkrementális adatfrissítés. Ha megvalósítjuk az ötletet, akkor figyelni kell arra, hogy az aktuális/utolsó évben az adatok akár másodpercenként is változhatnak.

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 tematikájához kötődik (ha a swing GUI-ra koncentrálunk és az adatok helyi fájlrendszerből elérhetők), és a Java EE szoftverfejlesztő tanfolyam tematikájához kapcsolódik (ha az adatokat közvetlenül a webről olvassuk).

HWSW – Appmenedzsment és marketing meetup

HWSW logó

HWSW logó2020. február 26-án este a HWSW szervezésében részt vettem az Appmenedzsment és marketing meetup-on az EPAM Rendezvényközpontban. Így hirdették meg az eseményt: „laza hangvételű délutáni rendezvény olyan szakembereknek, marketingeseknek és fejlesztőknek, akik az élesítés után is gondoznák és mérnék mobilalkalmazásukat, hiszen azok sikere elsősorban nem a fejlesztőkön, hanem a megfelelő appmenedzsmenten múlik”. Az utógondozás, karbantartás, továbbfejlesztés gyakorlatilag rövidebb-hosszabb ideig minden fejlesztő, fejlesztői csapat tevékenységeire igaz. Az eseményen négy darab 15 perces előadás hangzott el.

Az első előadó Szuhai Viktor volt, aki a Planet of the Apps-nál Mobile Product & Marketing Manager. A Letöltések bűvöletében: hogyan tereljünk forgalmat az alkalmazásunkba? című előadás annak a 3 fő oknak a kifejtésével kezdődött, amiért a cégek alkalmazásait nem használják az emberek:

  • van alkalmazás, de maga a cég sem tudja, hogy miért készült el a termék,
  • van jó alkalmazás, de elkészülését követően a cég nem követi, hogy mire és hogyan használják azt a felhasználók és a cég nem reagál a felhasználók visszajelzéseire,
  • hatástalan marketing aktivitások (úgy hirdetik a cégek az alkalmazásaikat, hogy a megtekintések számát vagy a kattintások számát mérik, pedig hasznosabb lenne a valós letöltések számát illetve a letöltést követő aktivitások számát mérni).

Elhangzott, hogy egy mobil alkalmazást használó értékesebb egy weboldal látogatójához viszonyítva, hiszen több ideig velünk marad. Ha sokáig használja az alkalmazást, követhető a tevékenysége. Ha kihasználjuk a push üzenetek lehetőségeit, akkor a termékünkből egy „sales gépezetet” készíthetünk. A legtöbb cégnél nincs mobil marketinges. Az előadó ezt követően saját külföldi – céges környezetben szerzett – tapasztalatairól számolt be. Alapvetően háromféle ügyfélszerzési csatornáról hallhattunk:

  • ingyenes csatornák: ASO, saját webes felületek,
  • fizetős tradícionális csatornák: Facebook, Google, Instagram,
  • alternatív csatornák: SearchAds, Appnetwork-ök, ösztönzött letöltések.

HWSW - Appmenedzsment és marketing meetup

A második előadást – Tervezéstől a riportolásig: mire figyelj a sikeres mobil app mérés érdekében? címmel – a Mito képviseletében Horváth Ádám és Gyöngyösi Balázs tartotta. Egy app életciklusához igazodóan áttekintették, hogy mit, mivel és hogyan érdemes mérni annak érdekében, hogy az alkalmazásunkat, illetve annak használatát megérthessük. A mobil alkalmazáspiacon lévő nagy verseny miatt szükséges, hogy a felhasználók érdeklődését folyamatosan fenntartsuk a mért adatok alapján. A webes analitika bevett gyakorlat (cookie és session alapon), a mobil appok esetén ez – még – kisebb szerepet kap (User ID alapon és itt a session azt jelenti, hogy előtérben van a telefonon a mobil app legalább 10 másodpercig és 30 másodperc után jár le a session). A főbb szempontok ezek voltak:

  • ügyfélszerzés (új és aktív user-ek száma, hogyan találják meg az appunkat),
  • elkötelezettség (tartós használat és/vagy lemorzsolódás),
  • eredmények/konverziók (mennyire sikerült elérnünk az üzleti céljainkat),
  • mérési tervezési folyamat lépései (üzleti célok egyértelmű definiálása, KPI és eszközök meghatározása, mérési stratégia kialakítása, implementáció és fenntartás).

Mindkét előadó hangsúlyosan kiemelte a különböző szoftverfejlesztéshez kötődő munkakörökben, beosztásokban, pozíciókban, szakterületeken dolgozó minden alkalmazott komplex, szerteágazó és hatékony együttműködésének fontosságát.

HWSW - Appmenedzsment és marketing meetup

A harmadik előadást Álmos Balázs tartotta a Planet of the Apps-tól Adatokból valóság, avagy hogyan hoznak nekem üzleti előnyt az adatok, hol térül meg az app-analitika? címmel. Kérdések felvetésével indult az előadás. Hogyan tartsuk meg azokat a felhasználókat, akik már letöltötték az appot? Mi az adatvagyon és az adathalom közötti markáns különbség? Miért szükségesek üzleti döntéseket támogató üzleti intelligencia alkalmazások? Vannak kérdéseink, amikre választ várunk az adatok elemzésekor? Mire lehet célozni az analitikát? Lehet termékfejlesztési indikátor, alkalmas marketing optimalizálásra, UX-es viselkedés optimalizálásra, stabilitás vizsgálatára, marketing kommunikáció hatékonyságának növelésére. Az egésznek csak akkor van értelme, ha mindenkinek érthető és átlátható a teljes folyamat/rendszer. Mitől függhet az app sikeressége? Alapvető cél az aktív felhasználók megszerzése, számuk növelése és megkötése/megtartása. Hasznos tippeket kaptunk az analitika felkészültségétől függően a felhasználói élmény fokozására, és az automatizálási stratégia (push kommunikációs stratégia) kialakítására.

HWSW - Appmenedzsment és marketing meetup

A negyedik előadó Dombi Soma volt a Product Factory képviseletében, aki Analitika sokoldalú felhasználása hiba detektálásra, rollout tervezésre, ux javításra, bevétel becslésre címmel gyakorlati megközelítésű prezentációt tartott. Egy esettanulmányt ismertetett, amiből kiderült, hogyan javítottak az egyik alkalmazásuk felhasználói élményén az általuk mért adatok alapján. A korábbi elméleti és összefoglaló jellegű előadás zárásaként kifejezetten hasznos volt látni a konkrét mérési eredményeket, illetve hallani a megvalósítások technológiai trükkjeit (például PDF fájlok oldalainak képként való kezelése, pufferelése, sebesség optimalizálása…).

HWSW - Appmenedzsment és marketing meetup

A szervezők utólag publikálták a rendezvény prezentációit, fényképgalériát és két előadásról videót.

RobonAUT – Autonóm robotok versenye 2020

RobonAUT kiemelt kép

RobonAUT logó2020. február 15-én 11. alkalommal került megrendezésre a 2019/2020-as tanév őszi félévében a BME Villamosmérnöki és Informatikai Kar Automatizálási és Alkalmazott Informatikai Tanszékének a gondozásában a RobonAUT – Autonóm robotok versenye.

Kaló Péter és Török Barbara szoftverfejlesztő OKJ képzésben résztvevő végzős hallgatók szakmai- és élménybeszámolója következik. Mindketten nagyon jól érezték magukat a versenyen. Beszámolójukat köszönjük.

Mi is az a RobonAUT?

A 2010 óta évente megrendezett programon egy műegyetemi tárgy keretében a résztvevőknek egy autonóm robotot és vezérlését kell elkészíteniük. A feladat, hogy a robotjárművek emberi beavatkozás nélkül, minél rövidebb idő alatt teljesítsék az akadálypályákat, egy előre nem ismert ügyességi pályán, útjuk során teljesítve a legtöbb részfeladatot. Az a csapat lesz a győztes, aki gyors és pontos irányítással szereli fel robotját, így szerezve a legtöbb pontot a futamokon.

A verseny sikerét egyértelműen jelzi a hallgatók aktivitása, valamint a külvilág érdeklődése a RobonAUT iránt. A versenyen villamosmérnökök, mérnökinformatikusok és mechatronikai mérnök mesterhallgatók vehetnek részt. Csapatonként egy robotot kell készíteni. A csapatok létszáma 3 fő (indokolt esetben 2 fő).

2020-ban a csapatok között volt 7 junior és 4 senior csapat, összesen 32 versenyző indult neki a kihívásnak. A jelentkező csapatok között fellelhető a 2019-es év junior győztese, az Override, és újra jelen van az összesítettben első helyezett Faketelen Taxi, és az összesített második, a Tesla Monsters is.

A tanszék biztosít eszközöket, illetve anyagi támogatást a robot megépítéséhez:

  • 1 db autómodell,
  • 1 db processzorkártya,
  • 2 db rádiós modul,
  • 75000 Ft szabadon felhasználható költségkeret,
  • egyéb alkatrészek (vonalszenzor, motorvezérlő, Bluetooth modul).

A csapatokat tematikus szemináriumokkal készítették fel a versenyre. Ezen alkalmakon egy-egy, a verseny szempontjából fontos tématerületeket érintettek és tekintettek meg. Négy szeminárium (Hardver, Altium Designer, Szoftver, Szabályozástechnika) támogatta a csapatokat a felkészülésben.

Versenyfeladat

A robotjárműveknek két akadálypályán kell végig haladniuk, és ennek során különböző feladatokat kell teljesíteniük. Egyik pályán az ügyesség, a másik pályán a gyorsaság számít.

A gyorsasági pályán enyhe lejtők és emelkedők nehezítik a robot haladását, illetve magát az útvonalat egy vezetővonal jelöli. A gyorsasági pályán minél jobb köridő elérése a cél.

Az ügyességi pálya egy labirintusnak felel meg, ahol a robotjárműnek fel kell térképeznie a területet, és ezt követően tud tovább haladni a gyorsasági pályára.

RobonAUT 1. kép

Ügyességi pálya elemei

A gyorsasági és ügyességi pálya előre definiált elemekből épül fel, ezek:

  • a pályaelemeket összekötő egyszerű vezetővonal,
  • start és cél,
  • elágazás és becsatlakozás,
  • zsákutca,
  • pályaszakasz kapu (18 db),
  • sávváltás.

RobonAUT 2. kép

Kvalifikációk

  • Előzetes kvalifikáció: az autók vonalkövetését és safety car (tanszék által készített autó) követését hivatott ellenőrizni.
  • Ügyességi kvalifikáció: az autóknak sikeresen kell teljesíteniük az ügyességi pályaelemeket egy versenybíró jelenlétében.
  • Gyorsasági kvalifikáció: az autóknak, egy előre felépített pályán kell végig haladniuk, egy megadott időn belül.

Az induló csapatok nevei és logói elérhetők a verseny weboldalán.

A Tesla Monsters csapat autójának terve és fényképe:

Élménybeszámoló

Már kezdés előtt fél órával nagy tömeg várta a verseny kezdetét a BME Q épület aulájában. Dr. Tevesz Gábor egyetemi docens, a fő szervező, a verseny megálmodója kezdte beszéddel ezt a fantasztikus napot. Népes csapat munkálkodott a versenyen, kb. 40-50 ember. Kiss Domokos versenykoordinátor és versenybíró folytatta a beszédet, a nézőközönséggel ismertette a verseny szabályait.

Aznap reggelig nem volt ismert a pálya felépítése a csapatok számára. A döntőig 6 junior és 4 senior csapat jutott el, hogy hősiesen megküzdhessenek egymással. A versenyen vegyesen mérték össze az erejüket. A csapatoknak fél év felkészülési idejük volt, hogy egy jól működő robot autót készítsenek el. Sokat számított a találékonyság, az ötletelés és a robot autók design-ja.

A csapatok plusz 10 pontot tudtak gyűjteni a nézőközönség által. A közönség szavazhatott arra a csapatra, amelyik a legjobban tetszett nekik. Figyelembe vették ki milyen jól vette az akadályokat, vagy éppen kinek milyen design került az autójára. A közönség szavazásnál a Faketelen Taxi kapta a 10 pontot.

  • A versenyt elsőként az ABS nevű csapat kezdte. Az akadályokat jól vették.
  • A második csapat volt a Led Bull, akiknél egy ütközést követően megsérült az egyik szenzor, így az ügyességi pályát nem tudták befejezni. A gyorsasági pályát így is megpróbálták, de végül az autójuk kiment a pályáról.
  • Az Override nevű senior csapat folytatta harmadikként a mérkőzést.
  • Negyedikként a FalnakMegyek csapatnak csak 4 kaput sikerült teljesíteniük, majd a programjuk végtelen ciklusba került. Próbáltak javítani a helyzeten egy rögtönzött szereléssel, mert mint kiderült: kiégett az egyik biztosítékuk. A felkészülés alatt már történt ilyen velük, így tartalék biztosítékkal hamar megoldották a problémát.
  • A Stranger Gears volt az ötödik csapat, akik két kapu kivételével teljesítették az ügyességi pályát. Ők voltak az első csapat a verseny alatt, akik a gyorsasági pályán az autójukkal előzést hajtottak végre.
  • Az Unemployed & Single volt az első olyan csapat, akik minden kaput érintettek és sikeresen ki tudtak állni a safety car mögé. A gyorsaságin az első előzést sikeresen teljesítették, a másodikat sajnos nem.
  • A hetedik csapat a GITegylet volt, akik az autójukon díszként Nemecsek Ernő „kalapját” használták kabalaként. Az ügyességi pályán minden kaput érintettek, a gyorsasági pályán mindkét előzést sikeresen végrehajtották.
  • Nyolcadik csapatként következett a Riders of the ST ARM, akik az ügyességi pályán csak 3 kaput hagytak ki. A gyorsasági pályán már nem tudtak elindulni, mert az autójukban hiba keletkezett.
  • A Tesla Monsters kilencedikként vett részt a versenyen. Senior csapatként teljesen új autót készítettek, melyben két ventilátor helyezkedett el, hogy jobban le tudja szorítani az autót. Az összes kaput sikeresen teljesítették az ügyességi pályán.
  • Az utolsó induló csapat a Faketelen Taxi volt. Ők is egy teljesen új autót építettek, melynek összsúlya 8 kg lett. Az ügyességi pályán az összes kaput hibátlanul bejárták, a kiállást egy új manőverrel oldották meg, melytől a nézőközönség tapsviharban tört ki. A gyorsasági pályán mindkét előzést sikeresen teljesítették, és az idei legjobb kört futották.

Ezután fél órás szünet következett az eredményhirdetés előtt. A Faketelen Taxi egyik tagját, Sárközy Balázst kérdeztük meg arról, hogy milyen nyelven programoztak. Az autó alapját egy Raspberry Pi adta, amelyen Linux futott. Programozás terén az autót több részre osztották, egyes részek Python-ban, más részek C-ben és C++-ban voltak megírva. Az autójukba 14 szenzort építettek be, ezek segítségével navigált a robot autó a pályán. A pálya feltérképezésénél és követésénél Descartes koordináta-rendszerrel dolgoztak.

A verseny részletes eredményei megtalálhatóak a verseny weboldalán.