Hóesés szimuláció

Hóesés szimulációt tervezünk és valósítunk meg Java nyelven. A téma igazi örökzöld. Elvileg minden télen aktuális. 😉 A grafikus felülethez és az eseménykezeléshez a swing gyűjteményt használjuk. Adott egy téglalap alakú terület amelyen – méretéhez igazodva – több száz hópehely mocorog. A területet önállóan programoztuk le – azaz ez alkotja a teljes GUI-t –, de lehetne egy nagyobb kép része is. Többféleképpen is beépítünk véletlenszerűséget a szimulációba. Tervezünk is, hiszen az sosem árt. 😉

Többnyire beépített komponenseket, elemeket használunk, de van saját, örökítéssel testre szabott komponensünk is:

  • A szimuláció a Window osztályból példányosított felületen működik, amely JFrame utód. Nem átméretezhető és látható.
  • A területet JPanel típusú pnTransparentWindow alkotja. Mérete 300*200 pixel. Színe a szürke egyik árnyalata. Ezen mozognak a hópelyhek.
  • A hópehely Snowflake típusú JPanel utód. Mérete 2*2 pixel. Színe fehér. Saját swing-es Timer biztosítja az eseménykezelését. A szimulációban 600 hópehely szerepel.

Az elkészült szimuláció

A teljes forráskódból íme a hópehely megvalósítása

A hópehelynek „tudnia kell” hol van, azaz mekkora területen mozoghat, ez a rectangle. A hópehelynek van size mérete. A hópehely saját magát mozgatja a területen a timer segítségével. Az időzítés várakoztatására/késleltetésére vonatkozó delay értéke véletlenszerűen 50, 100, , 250 milliszekundum lehet. Másképpen: a szél által össze-vissza fújt hópelyhek között lehetnek lassabban és gyorsabban mozgók is. Az eseményobjektumhoz lambda kifejezés rendeli hozzá a reakciót jelentő, mozgást megvalósító move() metódus meghívását, amely így adott időközönként bekövetkezik.

A hópelyhet a konstruktora hozza létre. Átveszi azt a pnTransparentWindow területet, amelyre később rákerül a Window példányosítása során. A gyengébb setSize() metódus helyett az erősebb setPreferredSize() metódus állítja be a méretet. Véletlenszerű x és y pozícióba kerül ki/fel a területre. A setBounds() örökölt metódus beállítja a pozícióját és méretét. Erre épít a fogadó oldalon az abszolút helyzet, külön elrendezésmenedzser nélkül. Végül a hópehely átlátszó, fehér és elindítja saját időzítőjét a timer.start() metódushívással.

Az időzítés/várakoztatás véletlenszerűsége után íme a második véletlenszerűség a szimulációban. A hópehely mozgása során a szél által össze-vissza fújva eltérő eséllyel/valószínűséggel mozog 8 lehetséges irányba az alábbiak szerint:

  • 5-5% eséllyel felfelé, azon belül jobbra vagy balra (átlósan),
  • 10-10% eséllyel jobbra vagy balra,
  • 20-20% eséllyel lefelé, azon belül jobbra vagy balra (átlósan),
  • 30% eséllyel lefelé, függőlegesen,
  • felfelé, függőlegesen nem mozog.

Az esélyek összege 100%. Másképpen kulcsszavakban: 1 = biztos esemény (teljes eseménytér, nincs más lehetőség), egymást kizáró események, geometriai valószínűség. A képen középen lévő hópehely a 8 szomszédja közül a 7 szóba jöhető közül valamelyikre adott eséllyel mozog. A geometriai valószínűséget az ábra alapján az óramutató járásával megegyezően leképeztük az 1..100 intervallumra:

A move() metódus megvalósítja a fenti tervnek megfelelően a hópehely mozgatását. Első lépésben tudni kell a jelenlegi/kiinduló location helyét (a bal felső csúcs, elkérjük). Ezután véletlenszerű esély/ tip generálódik. Az első elágazásban a hópehely translate() metódusával eltoljuk az előbb elkért pontot. Az eltolás relatív. Az utolsó elágazásban kompenzálunk, ha a hópehely alul kilépne a területről. Ekkor felül újra belép a területre. Végül beállítjuk a hópelyhet megvalósító komponenst a manipulált location helyre.

Takarékosak vagyunk: ezzel a megoldással „újrahasznosítjuk” a hópelyheket. Csak annyi van belőlük, amennyi szükséges. Nem kell őket folyamatosan megszüntetni és újra létrehozni. Nem mozognak feleslegesen. Nem mozognak olyan területen, ahol nem láthatóak.

Ötletek továbbfejlesztésre

  • A hópelyhek színe lehetne véletlenszerű a fehér és a középszürke között. Ezzel a nézőtől való távolságot, esetleg a kép élességét lehetne modellezni.
  • A szél nem feltétlenül szimmetrikus, vagy a hópelyhek mozgatását meg lehetne oldani jobbra és balra eltérő eséllyel is.
  • A terület lehetne más alakú, például trapéz, íves, kör, ellipszis.
  • Másképpen is vezérelhetnénk a szimulációt. Ahelyett, hogy most minden hópehelynek van saját időzítője, lehetne csak 5 db (lassabbak és gyorsabbak), amelyek közül véletlenszerűen kiválaszthatnánk, hogy melyik hatására mozgatjuk az adott hópelyhet. Fordítva is mehetne: az 5 db időzítőhöz előre hozzárendelhetnénk a hópelyheket. Ez így más-más felelősség, kommunikáció, üzenetküldés, vezérlés lenne az objektumok között. Hasznos tapasztalat lehet megvalósítani bármelyiket.
  • A terület lehetne egy nagyobb kép része. Például meghatározhatnánk egy tetszőleges átlátszóságot (színt vagy arányt) és többrétegű felületet megvalósítani képes JLayeredPane komponens elé vagy mögé is elhelyezhető lehetne a terület a grafikus felületen.
  • Aki kihívást keres: illessze a területet az alábbi hangulatos képre úgy, hogy a középső ablakok téglalap alakúak, a két szélső trapéz alakú vagy perspektivikus nézetű és a kör/ellipszis alakú tükörben pedig tükröződik valahonnan a hóesés látványa.
  • Még bátrabbaknak: a kandallóban lévő tüzet is lehet hasonlóan szimulálni. Itt már többféle fizikai paraméter is figyelembe vehető, például fényerősség, tükröződés. Egy 3D modellezett térben a sugárkövetés (Ray Tracing) algoritmus is megvalósítható. A hópelyheknél lehetne az egyszerű mozgástól eltérő más fizikát is programozni: rugalmas ütközéssel összetapadhatnának vagy rugalmatlan ütközéssel lepattanhatnának egymásról és mindez hathatna a sebességükre is.

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.

Interjú Bobály Gáborral

Bobály Gábor

Bobály Gábor logisztikával foglalkozott korábban tíz évig, különböző munkahelyeken, különböző munkaköröket betöltve. Három éve tudatosan közelít az IT felé. Sikeresen elvégezte az alapozó Java SE szoftverfejlesztő, majd ezt követően a haladó Java EE szoftverfejlesztő tanfolyamunkat is. Az IT-ben ritka, hogy öt idegen nyelven is beszél és három középfokú nyelvvizsgával is rendelkezik. Az emberi nyelveken túl több programozási nyelvvel is megismerkedett a Javan kívül: Visual Basic, Python, fejlesztett Android platformra, valamint egy-egy SQL lekérdezés sem jelent számára gondot.

Bobály Gábor

Az interjút Kaczur Sándor – az it-tanfolyam.hu alapítója és oktatói csapatának szakmai vezetője – készítette 2019. december 3-án.

K. S.: Milyen IT-hez is köthető munkatapasztalattal rendelkezel?

B. G.: Logisztikai munkáim során lehetőségem nyílt nevesebb vállalatirányítási rendszerekben dolgoznom, mint amilyen az SAP vagy a Fenevision, melyekben különböző munkafázisokat könyvelhettem, szervezhettem, koordinálhattam, működtethettem. Most pedig, amikor 2G, 3G, 4G, 5G-s mobilantennákat működtetek, azokat beállítanom, konfigurálnom kell távoli szerverről.

K. S.: Ha a szakmai pályafutásod hossza 100 egység, akkor jelenlegi tapasztalataid alapján hol tartasz, és milyen mérföldköveket fogalmaznál meg ehhez kötődően?

B. G.: Ha a teljes szakmai pályafutásomat nézem, akkor körülbelül 20 egységnél lehetek. Kb. 10-nél érkeztem egy fordulóponthoz, egy mérföldkőhöz, ahol IT-ra tértem át és jelentkeztem hozzátok a Java SE-re, majd az EE-re. Aztán belekóstoltam a Pythonba, VBA-ba és Androidba, így közelítve a 20 egységhez. Ezek mind egy-egy kisebb mérföldkő.

K. S.: Hogyan zajlik egy tipikus munkanapod?

B. G.: Egy kb. 10 perces bejelentkezési folyamattal kezdődik, amelyben csatlakozunk a mobilantenna-irányító rendszerekhez, amelyeket német szervereken és távoli számítógépeken érünk el. Belépünk a jegyrendszerünkbe és általában egy Office-programban ahol adminisztrálunk magunknak és a cégnek. Bejelentkezünk a Cisco Jabber kommunikációs csatornára, majd a Cisco Finesse-en keresztül az ún. Abschalte-Hotline-ba (Antenna Lekapcsoló Telefonközpont), ahol várjuk többnyire a német antennatechnikusok hívásait, akik felmennek az adótornyokba és háztetőkre antennát szerelni. Mielőtt munkához látnak, aktiváljuk az erre a feladatra az ún. dispatchnél nekik létrehozott jegyüket, lekapcsoljuk az antennaállomást, hogy ne érje őket sugárzás, miután pedig végeztek a munkával vissza felkapcsoljuk és ellenőrizzük, hogy az állomásnak van-e valami hibajelzése. Ha van, megpróbáljuk megoldani a technikussal közösen. Amennyiben ez nem sikerül, akkor egy speciálisabb csoportnak tovább adjuk a probléma kezelést. Antennacsere vagy új állomás esetén többnyire mi konfiguráljuk az új antennákat. Ha minden rendben van, akkor zárjuk a jegyet és kész az adott feladat.

K. S.: Jelenleg munkád szakmai részében milyen szoftvereket használsz? Melyiket mire?

B. G.: Legalapvetőbb talán a Cisco Finesse ügyfélszolgálati Desktop, ami nálunk a hotline felület. Ez a Cisco Jabber kommunikációs szoftverre épül. Ez kell, hogy hívásokat tudjunk kezelni, koordinálni, monitorozni csoportszinten és egyénileg. Az antennaállomások üzemeltetéséhez használjuk a Huawei U2020 Topology Managert, az Ericsson Amos Object Scriptinget, valamint a Nokia Site Managert. Ezek eléréséhez a NoMachine távoli desktopot alkalmazzuk. Jegyrendszereink a belső fejlesztésű COMS és CASM.

K. S.: Mekkora része a projektmenedzsment a munkádnak? A munkád szervezéséhez kötődően (projektmenedzsment, időgazdálkodás, kommunikáció) milyen szoftverekkel találkoztál eddig?

B. G.: A munkám körülbelül 55%-ban adminisztráció és ahhoz kapcsolódó kommunikáció. A maradék 45% pedig az operatív munka. A hálózati meghajtónkon különböző Excel fájlokban adunk számot munkánkról. Például a lezáratlan jegyeket ellenőrizzük, vagy kiemelt ügyfelek munkáit kezeljük, ilyenek a német autógyárak, bankok vagy hivatalok. Illetve Outlookban értesítjük egymást appointment-meghívókkal, hogy leadva a műszakot, a többi kolléga mikor kapcsoljon fel egy-egy állomást.

K. S.: Nem gyakori, hogy IT munkakörben valaki német, angol, szerb nyelvekből középfokú nyelvvizsgával rendelkezik, illetve alapszinten spanyolul és olaszul is beszél. Hogyan szeretnéd ezt minél jobban hasznosítani a jövőben?

B. G.: Mindenkori pozíciómat úgy szeretném a lehetőségekhez mérten kiválasztani, hogy a lehető legtöbb tudást tudjam kamatoztatni, fejleszteni. A német technikusok mellett szoktak angol nyelven beszélő technikusok is dolgozni, ők jórészt cseh, lengyel, szlovák, román nyelvterületről jött szakemberek. Időnként szoktak nyelvi nehézségek lenni, ilyenkor egy-egy plusz nyelvtudás általában segíti a dinamikusabb kommunikációt.

Bobály Gábor

K. S.: Kipróbálnád magadat külföldön?

B. G.: Mindenképpen nyitott lennék rá. Feleségemnek kutatómunka keretében többször volt lehetősége külföldi ösztöndíjakat igénybe venni, amelyek egyikébe nem tartjuk elképzelhetetlennek a becsatlakozásomat. Most is fut néhány közös számítógépes nyelvészeti „projektünk” házon belül ?.

K. S.: Egy vállalatirányítási rendszer testre szabása során adódhatnak egyedi szoftverfejlesztési lehetőségek? Részt vettél ilyen folyamatban?

B. G.: A vállalatirányítási rendszerünket német kollégák fejlesztik, bekapcsolódási lehetőség itt még nem adódott.

K. S.: Hogyan működsz csapatban? Hogyan illeszkedsz be egy új munkahelyen, új csapatban?

B. G.: Szakmai dolgokat tekintve, először megpróbálom megragadni a feladat gerincét, majd abból szerteágazóan kibontakozni. Próbálok időt adni magamnak a logikai értelmezésre. Ha ez sikerült, akkor általában találok saját új módokat az automatizálásra és a kreatív fejlesztésekre. Szeretek szakmai mélységekig menni és ilyenkor sok kérdést teszek fel. És ha ezek is mennek, akkor többnyire magabiztos leszek, és nem okoz gondot felvenni a csapat ütemét. Mindkét oldalról türelemre van szükség a kezdetekben.

K. S.: Tudom, hogy a csapatmunkát segítő kisebb szoftvereket fejlesztettél Java és Visual Basic nyelveken. Ismertetnéd ezeket? Hogyan merült fel rájuk az igény? Milyen folyamatokat tesznek könnyebbé? Milyen alapfunkciókat valósítanak meg?

B. G.: Először Java nyelven egy antennahibákat nyilvántartó programot készítettem. Amikor megjelenik egy hibajelzés az egyik antennán, akkor részletesebb leírása, útmutatása csak lassabb, körülményesebb úton érhető el. Ezt hivatott ez a program gyorsítani, valamint a leírást a lényegre törően leszűkíteni. Excellel szemben a kompaktivitás, könnyebb kezelhetőség, vizualitás került előtérbe.

A VBA-s programomra akkor láttam igényt, amikor láttam, hogy a többiek elég sok időt eltöltenek az Outlook-appointmentek kiküldésével. (Egy műszakot leadó kolléga sokszor több mint 10 ilyen időpontot küld ki a következő műszakban dolgozó kollégáknak antenna felkapcsolásra, adatokkal). Nekem nagyon tetszett, mikor VBA-val Excelből, miután kiválogattam CheckBoxokkal a kollégák neveit egy ListBoxba, egy gombbal elküldhetek akármennyi appointmentet. Így ez a kb. 40 perces munka lerövidül 5 percre.

K. S.: Az utóbbi 12 évben 4 munkahelyen dolgoztál 5 különböző munkakört betöltve, a logisztikától fokozatosan közeledve az IT felé. Mi motivált a váltásokra? Mennyire voltak tudatosak ezek? Hogyan kerestél új/más munkát?

B. G.: Nálam az Excelből indult minden. 2011-ben az első igazán komoly munkahelyemen a kecskeméti Mercedes-gyárban még kb. egy szum és egy átlag függvényt tudtam leírni. Utána 2016-ban családi okok miatt visszakerültem Szegedre. Ekkor a szegedi CE-Glass üveggyárban dolgoztam készletgazdálkodóként, amikor nagyon megerősödött az Excel-tudásom. Ekkor már 6-7 fajta függvény egymásba ágyazása sem okozott különösebb gondot. Ekkor kérdezte meg a feleségem, hogy miért nem tanulok programozni, mikor látta a függvény-rendszereimet. Ekkor döntöttem a programozás mellett és jelentkeztem hozzátok. A Java SE tanfolyamnak köszönhetően már tudatosan kerestem olyan munkát, ami közel áll az IT-hoz, így kerültem az ITSH-hoz.

K. S.: 2017-ben végezted el – még az IT Karrier programban nálunk – az alapozó Java SE szoftverfejlesztő tanfolyamot. Mi motivált arra, hogy jelentkezz? Miért éppen ezt választottad?

B. G.: Szegeden csak úgy tudsz programozni tanulni (nem autodidakta módon), ha beiratkozol az egyetemre, és akkor rengeteg járulékos tantárgy mellett esetleg programozást is tanulsz, továbbá azért az időtávlat is fontos (egyetemen minimum 3 év a képzés). Vagy keresel egy olyan tanfolyamot, ami csak programozásra fókuszál rövidebb időintervallumban. Ez utóbbira Szegeden akkoriban nem nyílt lehetőség. Így ár-érték arányban az IT Karrier volt a legkedvezőbb választás még úgy is, hogy fel kellett járni Pestre.

K. S.: 2018-ban végezted el – ismét nálunk – a haladó Java EE szoftverfejlesztő tanfolyamot. Mi motivált arra, hogy újra hozzánk jelentkezz, illetve arra, hogy továbbra is Java programozási nyelvvel foglalkozz?

B. G.: A Java SE képzés során szerzett kedvező tapasztalatoknak köszönhetően jelentkeztem ismét. A Java EE szerintem jobban illeszkedik egy multi cég mindennapjaiba, valamint korszerű ismeretekkel is fölruház.

K. S.: Milyen kihívást jelentett és mekkora erőfeszítést igényelt a Java EE szoftverfejlesztő tanfolyam online vizsgafeladatának csoportos megoldása?

B. G.: Hasonló csoportmunkában korábban nem vettem még részt, így érdekes kihívásnak bizonyult. Mivel egymásra épültek a feladatok, nehézséget jelentett, ha esetleg az egyik csoporttag nem készült el időre. Ugyanakkor pozitívum volt, hogy jobban tudtunk együttműködni a közös cél érdekében a csoporttársakkal és többféle megoldásra is ráláthattam.

Bobály Gábor

K. S.: Milyen soft skillek szükségesek jelenleg a programozás/szoftverfejlesztés területén?

B. G.: Szerintem elég sok. Talán a legfontosabb a logikus gondolkodás és a türelem. Fontos kitérni arra, hogy az informatika folyamatosan fejlődik, mindig keletkeznek új dolgok, ezért nyitottnak kell lenni az újra. Ahhoz, hogy a csoport is hatékonyan működjön, szükség van az együttműködésre való készségre.

K. S.: Hogyan gyűjtesz magadnak értelmes referenciát karrierváltóként?

B. G.: Egyrészt az utóbbi két munkahelyemen valamelyik munkafolyamat automatizálására vagy optimalizálására írtam programokat. Illetve munkán kívül programozgatok és ezeket mutatom fel. Végül felsorolom az önéletrajzomban azokat az IT képzéseket, amelyeken részt vettem.

K. S.: Mik a jelen és szerinted mik lesznek a jövő sikerszakmái?

B. G.: Szerintem amik a jelenben sikerszakmának tekinthetők, azok a meglehetősen nagy koncentrációt igénylő és felelősségteljes pozíciók, mint például a repülőtéri szoftverek programozása (a Lufthansa irodája hamarosan ezeket csinálja Szegeden), a légiirányítás vagy a gyógyászatban a műtőrobotok (például lézeres szemműtét) programozása.

Nekem eléggé futurisztikus a gondolkodásom ?. Nemhiába tértem át programozásra, hiszen ez kiállja majd az idő próbáját szerintem: robot és cyborg-programozás, DNS-programozások, plazmaerőmű programozások. Remélhetőleg az emberiség továbbra is egyre több felfedezést tesz, így a programozás előtt is sok új kihívás fog adódni.

K. S.: Követed a szakmai blogunkat? Ajánlanál belőle egy-egy bejegyzést?

B. G.: Ha van időm, rá szoktam nézni :). Utóbbi időben a programozási nyelvek népszerűségéről szóló cikket találtam különösen érdekesnek, de hasznosak az egyes programozási példafeladatokat szemléltető bejegyzések is.

K. S.: Van kedvenc IT-s idézeted, mémed?

B. G.: Ez egy tipikus:
– Van szilveszterre programod?
– Még nincs.
– Írjak egyet?


Blog bejegyzéseink IT karrier témakörben

Bobály Gábor

Interjú Bobály Gáborral

Bobály Gábor logisztikával foglalkozott korábban tíz évig, különböző munkahelyeken, különböző munkaköröket betöltve. Három éve tudatosan közelít az IT felé. Sikeresen elvégezte az alapozó Java SE szoftverfejlesztő, majd ezt követően a ...
Révész András

Interjú Révész Andrással

Révész András alapvégzettsége biológus, ökológia szakiránnyal. Szakmai pályafutását tájökológiával kezdte, azon belül is élőhely térképezéssel, amihez kötődik a térinformatika. Négy évig kutatás-fejlesztéssel foglalkozott az MTA Ökológiai és Botanikai Intézetében, majd ...
Schmidt Attila

Interjú Schmidt Attilával

Schmidt Attila három éves szoftverfejlesztői gyakorlattal (főként Android platformhoz kötődően) és két éves szoftvertesztelői tapasztalattal rendelkező mérnök-informatikus. Az interjút Kaczur Sándor – az it-tanfolyam.hu alapítója és oktatói csapatának szakmai vezetője ...
Takács Roland

Interjú Takács Rolanddal

Takács Roland egyéves automatizálási teszt mérnöki és ötéves professzionális adatbázis-kezelés (MSSQL, Oracle) tapasztalattal rendelkező mérnök-informatikus. Jól érzi magát multikulturális környezetben. 2017 nyara óta külföldön él és dolgozik. 2018 őszétől PL ...
Lovas Bertalan

Interjú Lovas Bertalannal

Lovas Bertalan 22 éves pályakezdő szoftverfejlesztő. A kütyük mindig érdekelték. Hivatásként és hobbiként is gondol a programozásra. Sportos, korábban dzsúdózott, tornázott és a műugrást is kipróbálta. Korábban részt vett a ...

Interjú Görög Ibolyával

Görög Ibolya protokollszakértőt mindenki ismeri, bemutatni nem szükséges. De mégis illik, legalább röviden: 1987-től 1999-ig a Miniszterelnöki Hivatal protokollosa, majd protokollfőnöke volt, illetve 1999-től felnőttképzésben oktat. Érdeklődési körébe tartoznak: viselkedéstörténet, ...
Nádai Gábor

Interjú Nádai Gáborral

„Nádai Gábor vagyok, de sokan leginkább Mefiként ismernek, a legtöbb felületen a @mefiblogger nicknév alatt vagyok elérhető. Eredetileg mérnökinformatikusként végeztem, a kétezres évek közepén a fősuli mellett saját vállalkozásba kezdtünk ...
Szűcs Tibor

Interjú Szűcs Tiborral

Szűcs Tibor mérnök-informatikus. Jelenleg a Corvinus Egyetem Koordinációs Irodáján dolgozik órarendszerkesztőként. Ez a feladat a létesítménygazdálkodáshoz kötődik és ő osztja be – sok-sok szempont alapján – az előadásokat, szemináriumokat, számítógépes ...
Markovics Győző

Interjú Markovics Győzővel

Markovics Győző nem­zet­kö­zi kap­cso­la­tok sza­kos köz­gaz­dász, va­la­mint po­li­to­ló­gi­át is ta­nult a Bu­da­pes­ti Cor­vi­nus Egye­te­men. Az egye­tem­től fő­ként időt ka­pott – fel­nő­ni a kép­zés alatt. Gya­kor­la­ti is­me­re­te­it min­dig mun­ká­val sze­rez­te. Csa­lá­di ...

Fejlesztők délutánja – látogatás a KUKA Hungária Kft. R&D központjában

2019. november 7-én délután látogatást tettem a KUKA Hungária Kft. telephelyén, ami Budapesten, a XI. kerület Dorottya udvarban található. A rendezvényre elsősorban programozáshoz értő fejlesztőket vártak, az már a jelentkezési lapról kiderült, amikor meg kellett adni, hogy milyen programnyelvekhez értek.

Az ott töltött időt három nagyobb részre lehetett osztani. Először a prezentációs bemutatkozások zajlottak, azután a robotok megtekintése, végül pedig egy pizzázással egybekötött kötetlen beszélgetés az előadókkal.

Prezentációk

Először Grósz László R&D vezető bemutatta a céget, és a KUKA cég történelmét. Régóta fennálló céget ismertem meg, melyet 1898-ban alapítottak. Abban az időben acetiléngázt állítottak elő, amivel világítótesteket lehetett működtetni. Nem sokkal később az elektromos világítás megjelenésével és terjedésével a hegesztéstechnikai szektorba helyezték át tevékenységüket, ahol úttörőnek számítottak. Látták az igényt és a lehetőséget a hegesztőgépek automatizálására, így 1956-ban első automata hegesztő gépeik a Volkswagen AG-nál kerültek üzembe. A fejlesztés tovább folytatódott és az első ipari robotjuk, a 6 elektromechanikus meghajtású tengellyel rendelkező Famulus 1973-ban készült el. 1996-ban a KUKA a robotjainak vezérlését PC alapúra cserélte, elsőként az iparágban.

Az ezredforduló után a cég számos további területen jelent meg robotjaival, például az egészségügyben. Az utóbbi évtizedben pedig azon dolgozik, hogy olyan robotokat fejlesszen ki és gyártson (LBR iiwa), amelyek képesek az emberrel együttműködve dolgozni.

Collaborative Roboter

Második előadó Komlósi István vezető fejlesztő volt, aki a mobil robotok fejlődéséről beszélt. Napjainkban fontos hívószavak az ipar 4.0 és az okos gyár. Ebbe a paradigmába illeszkedik bele a KUKA a földön mozogni képes, kerekeken mozgó robotjaival. István bemutatott nekünk egy rövidfilmet, ahol a robotok a Boeing gyárban teljesítenek szolgálatot, feladatuk pedig különböző méretű és nagyságú alkatrészek, vagy akár egy fél repülőgéptest szállítása volt.

Mindegyik robot képes volt a saját környezetét érzékelni, mozgás közben előállítani a terület térképét, és elkerülni az útjukba kerülő akadályokat. Ilyen akadályokból többféle is előfordulhatott. Átmeneti akadály, például egy ember vagy másik robot akadályozza a továbbhaladást, ekkor elegendő várakozni amíg az akadály el nem hárul. Állandó akadály, ami olyan új utat elzáró tárgy, ami korábban nem volt jelen, és nem lehet arra számítani, hogy rövid időn belül úja szabaddá válik az út. Ekkor a robotnak ki kell kerülnie az akadályt, ami azt jelenti, hogy az éppen aktuális térképet figyelembe véve új haladási útvonalat kell tervezzen a céljához, majd ezt végre kell hajtania.

A felhő alapú információfeldolgozás a robotikában is utat talált magának: a fejlesztők arra törekszenek, hogy minél inkább felhő alapú legyen a robotok információinak a feldolgozása, ahelyett, hogy magára a robotra kelljen bonyolult és drága információfeldolgozó számítógépeket telepítsenek, így csökkenthető az egyes termékek – amúgy sem csekély – ára. Ahhoz, hogy megvalósulhasson a felhő alapú információfeldolgozás, nagyon alacsony hálózati késleltetésre van szükség, például a napjainkban szárnyait bontogató 5G mobilhálózatra. Itt hangzott el a mesterséges intelligencia szerepe is, amely ipari alkalmazásokat tekintve, csak teljesen biztonságos formában, népszerű hívószóval AI-Safe módon kerülhet alkalmazásra.

Harmadik előadónk Laboda Krisztián volt, csapatvezető és Software Architect. Az ő előadása robotprogramozásról, azon belül is útvonaltervezésről szólt, természetesen csak áttekintő jelleggel. Kezdetben az ipari robotoknak saját, dedikált térre volt szükségük, amelyben mozogni tudtak. Nem voltak képesek érzékelni a környezetüket, de a rájuk bízott és előre megtervezett mozdulatsorokat tetszőleges számban megismételve precízen tudtak dolgozni. A mozgás leírása spline polinomokkal történhet.

Ha mobil robotokban gondolkodunk – ráadásul az emberrel is együttműködni képes robotokban – a probléma az, hogy nem mindig írható le a mozgás teljes pályája, hiszen váratlan események is bekövetkezhetnek a mozgás közben. Ebben az esetben pedig újra kell tervezni a mozgást, amit nyílt hurkú szabályozók használatával érnek el. Így a teljes mozgást kis időszeletekre elosztva, mindig csak a következő időszeletet megtervezve lehetőség van észlelni és reagálni a külvilág felől érkező információkra. A külvilág érzékelése bonyolult művelet, a jelenlegi tudásunk alapján már nem egy gép szenzorjaival dolgoznak az algoritmusok, hanem több gép szenzoradatát összesítve, úgynevezett szenzorfúzióval állítják elő a külvilág modelljét, és ebben a modellben tervezik meg a következő mozdulatot.

Krisztián másik megvilágításból is bemutatta a robotprogramozást. A közönséggel közösen megállapodtunk, hogy a földön élő emberek kb. 0,3%-a tud programozni, és egy-egy robot felprogramozása egy konkrét feladatra – természetesen csak nagy átlagot tekintve – kb. 200 munkaóra. A KUKA-nál azt szeretnék elérni, hogy ennél sokkal többen tudjanak robotot programozni, akár programozói tudás nélkül is, ezért létrehozták az LBR iisy kísérleti platformot.

LBR iisy Product Image

Ez a robotkar érzékeny az emberi mozdulatokra, ezért képes az együttműködésre, és a Scratch-re megszólalásig hasonlító programozási felületet kapott. A gyártó cég fejlesztői elkészítik az egyes utasítások mögött álló bonyolult kódot, így a felhasználónak már csak az egyes magasszintű utasításokat kell grafikusan összeállítania a kívánt hatás elérésére. Ezt a rendszert nyílttá szeretnék tenni a külső cégek számára, akik eszközöket szeretnének gyártani a robothoz. (Eszköz alatt itt azt értem, hogy a robot „keze” cserélhető, így több feladatra is alkalmas lehet). A külső cégek elkészíthetik az általuk kifejlesztett eszközhöz tartozó programozói könyvtárakat, amit a felhasználó egy fogd és vidd művelettel a robotjához tud rendelni. Az így elkészített programkönyvtárak pedig letölthetőek lesznek egy erre a célra épített alkalmazásboltból.

Utolsó vendég előadónk Dr. Kiss Bálint, a BME Irányítástechnika és Informatika Tanszékének vezetője volt. Ő a mobil robotok fejlesztésének jövőjébe engedett bepillantást. A fejlesztők számára megoldandó feladatok összességét egy mocsárként jellemezte, amelyben vannak könnyű, nehéz és szinte megoldhatatlan feladatok. Ha a fejlesztők meg is oldanak egy-egy feladatot, a következő lépésük a mocsárban egy újabb problémához fogja vezetni őket. Így tekintve nagyon nehéz megmondani, hogy a vágyott végkifejlet mikor is fog elérkezni. Amit mondani lehet, hogy egyes részproblémák megoldásával milyen új alkalmazási lehetőségeink lesznek a közeljövőben.

Kétféle fejlődési irányt lehet megkülönböztetni, ahogyan el lehet jutni a teljesen önállóan működő mobil robothoz. Az első irányzat sokunk számára ismert, gondoljunk csak a mai autóinkra. Egyre többféle vezetést támogató rendszert építenek be a járművekbe, ezzel egyre több feladatot vállal át az autó a vezetőtől. Az ideális állapot az lesz, ha a vezetőnek egyáltalán nem marad majd vezetési teendője. Az ipari robotok esete pont ellentéte ennek. Az ipari robot az első pillanattól kezdve önállóan és biztonságosan kell végrehajtsa a rábízott feladatot, és idővel a robot környezete válik egyre bonyolultabbá, ahogyan egyre nő az igény az alkalmazásának sokféleségére. Először még csak egy elkerített privát térben tevékenykedett, ma már emberek és folyamatosan változó környezetben kell helyt állnia. Probléma, hogy nincs egy egységes szabvány a robotok biztonságos működésére. További probléma, hogy sokféle kihívással találkozhatunk egy mobilis robot fejlesztése kapcsán, ám ezek a kihívások már évtizedek óta léteznek, mint ahogyan a rájuk adott válaszok is.

A különbség a válaszokban az eltelt idő, ugyanis egyre jobb, pontosabb, korszerűbb válaszokat tudunk adni egy-egy kihívásra. Shakey volt az első robot, amely válaszolni kívánt a kihívásokra. 1966-tól 1972-ig fejlesztették és a maga korában egyedülálló volt. Az adott válaszok minőségének javulását többek között ilyen technológiák tették lehetővé: Li-Ion akkumulátor, Lidar, szenzorfúziós becslések, Kálmán-szűrő eljárás, GPU hardver, deep learning.

Végezetül megismerkedhettünk két, a mai kor tudása szerinti válasszal a mobil robot építés kihívásaira. Egy űrben használható robottal, Robonaut 2-vel, ami éppen a nemzetközi űrállomáson tartózkodik, és egy víz alatt használható változattal, Aquanaut-tal.

Robotok megtekintése

Először a robotkarokkal dolgozó fejlesztők laborjában megismerkedtünk az LBR iiwa robotok programozásával, működésével. Placskó András fejlesztő és Schieder Gábor csapatvezető mutatta meg nekünk, milyen egyszerű is egy robotot Scratch-szerű felületen programozni. Tíz-tizenöt parancsból álló kis programmal a robotkar képes volt egy golflabdát megfogni, és egy másik pozícióba áthelyezni. Ehhez természetesen az kellett, hogy ezeket a magasszintű utasításokat előtte a mérnökök elkészítsék. Egy másik robotkaron pedig azt tudtuk kipróbálni, hogy milyen az, amikor az ember együttműködik a robotkarral. Az első bemutató program mozgatta a kart, közben pedig valaki a kezét a kar útjába tette. Alig érintette meg a kar az akadályt, azonnal megállt. Számomra meglepően kis erőket is pontosan tudott érzékelni a robotkar. Másodjára pedig kézzel szabadon mozgathattuk a robotkart és követte az iránymutatásunkat. Így lehetővé vált a „megmutatom a pozíciót”-szerű betanítás, nem csak a vezérlőn keresztüli „addig léptetem, amíg jó helyre nem kerül” fajta.

A robotkarok után továbbmentünk a mobilis robotok laborjába. Itt is két bemutatót nézhettünk meg Baji Bence csapatvezető és Fehér Ágoston csapatvezetők jóvoltából. Ezek a robotok kerekekkel rendelkeztek, így tudtak helyet változtatni. Az első robotra felszereltek egy LBR iiwa kart is, melynek kezében egy kartonlap volt. A kartonlap két felén pedig David Hasselhoff, amint egyszer boldog, egyszer pedig mérges. A robot programja szerint: ha David Hasselhoff jókedvű, akkor a robothoz legközelebbi személy elől megpróbál elmenekülni, ha pedig mérges, akkor a legközelebbi személyt üldözőbe veszi. A két állapot között pedig a robotkart ért külső nyomás váltott. David Hasselhoff mindig a célszemély felé nézett. A fejlesztők elmondták, hogy szerencsénk van, mert ezt a projektet eddig csak a KUKA-s fejlesztőcsapat látta, még nem mutatták be sehol a közönségnek. A program célja pedig az, hogy legyenek olyan látványos és egyszerű alkalmazások, melyeket kiállítások alkalmával be tudnak mutatni, így szemléltetve a robotok képességeit.

A második elkerített részben három „raktáros” robot dolgozott, alágurultak az áruval megrakott polcoknak, kicsit megemelték, és a hátukon vitték a kijelölt új pozícióba. A három robot mozgását egy központi raktár menedzser program koordinálta. A robotok önmaguktól csak arra voltak képesek, hogy a négyzetrácsosan felosztott térben egy téglalappal odébb menjenek, és annak pontosan a közepén megálljanak. A több robot ütközésmentes mozgatását a menedzser program irányította, ami teljesen a budapesti központ fejlesztése.

Számomra az volt a meglepetés, hogy több százszor, vagy ezerszer megemelt, mozgatott és letett polcok pontosan három centiméter távolságban voltak egymáshoz képest. Ilyen pontos pozícionáláshoz elegendő volt mindössze a robotok alján található egy darab kamera, és a padló virtuálisan téglalapokra osztott területén, minden téglalap közepén elhelyezkedő QR-kód-szerű matrica.

Pizza és kötetlen beszélgetés

Az utolsó napirendi pont, a pizza és a beszélgetés következett. Laboda Krisztián mellett találtam helyet, néhány további érdeklődővel együtt. Arról kérdeztük Krisztiánt, hogy milyen feltételei vannak, ha valaki a KUKA-hoz szeretne jönni dolgozni, milyen programozási nyelvet érdemes tudni, milyen tapasztalati szint elegendő egy sikeres felvételihez, hogyan zajlik náluk a felvételi eljárás. Ő azt válaszolta, hogy sokféle programnyelvvel dolgoznak, a C, C++, C#, Java nyelveket biztosan használják, de előfordul náluk a JavaScript, TypeScript is, sőt, néha a Python-ra is szükségük van. Tapasztalati szint szerint a juniortól egészen a csapatvezetőig keresnek munkatársakat, természetesen nem egyszerre mindenfélét, inkább szükség szerint. Egykörös interjúkat szoktak tartani.

Nagyon érdekes délutánt töltöttem el a KUKA Hungary Kft. rendezvényén, ahol látszott, hogy sok vendéget megfogott a téma és az ipari robotos világ. Ha valaki érdeklődne hasonló nyílt napok után, érdemes a KUKA Global oldalt követnie a facebookon, mert várható, hogy a cég félévente újabb fejlesztői délutánokat fog szervezni.

A rendezvény szervezői nem engedélyezték a fényképezést.

SzámOkt 2019

EMT SzámOkt logóAz Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Számítástechnika Szakosztálya által – évente – szervezett XXIX. Számítástechnika és Oktatás Konferencia – SzámOkt 2019 Temesváron került megrendezésre 2019. október 10-13-ig. Társszervező volt a Sapientia Erdélyi Magyar Tudományegyetem Marosvásárhelyi Kar. Párhuzamos rendezvény volt a XX. Energetika-Elektrotechnika Konferencia – ENELKO 2019 az Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Energetika-Elektrotechnika Szakosztálya és a Magyar Energetikai Társaság (MET) társszervezésében.

A konferencia célja:

  • lehetőséget teremteni az erdélyi és külföldi magyar szakembereknek tudományos eredményeik bemutatására, illetve szakmai kapcsolatteremtésre és tapasztalatcserére,
  • az erdélyi magyar számítástechnikusok – középiskolai és egyetemi tanárok, rendszergazdák, egyetemi hallgatók, vállalkozók, felhasználók – számára találkozási lehetőséget biztosítani egy olyan rendezvényen, melynek keretében beszámolhatnak legújabb tapasztalataikról az oktatás, kutatás terén,
  • hogy egy átfogóbb képet nyújtson a magyar kutatók munkásságáról és eredményeikről, mint az informatika területén dolgozó magyar kutatók/fejlesztők fóruma.

8 témakörben hirdették meg az előadóknak a jelentkezési lehetőséget:

  • Számítástechnika és oktatás,
  • Algoritmika és programozás,
  • Informatikai alkalmazások,
  • Irányítástechnika, automatika, méréstechnika,
  • Képfeldolgozás és mesterséges intelligencia,
  • Elosztott és párhuzamos rendszerek, cloud rendszerek,
  • Hálózati kommunikáció és Internet, IoT, Industry.4.0,
  • Gazdasági informatika.

Letölthető a konferencia programja.

Már 2015-ben és 2018-ban is részt vettem előadóként ezen a konferencián szakmai előadással és magyar nyelvű cikkel. Ezek a publikációs listámban megtalálhatók.

2019-ben két előadást tartottam Térképek dinamikus ábrázolása Google Charts, Java és JavaScript eszközökkel, valamint Kik vettek részt projektmunkában? – Java esettanulmány az Oracle HR sémára építvecímmel 2*15 percben, amelyek a konferencia „Számítástechnika és oktatás” című szekciójába kerültek. Az előadásokra sok-sok ábrával, képernyőképpel, technológiai apróságokkal/részletekkel/érdekességekkel készültem. A cikkeim is megjelentek a konferencia kiadványában. Négy párhuzamos szekció volt és sokan vándoroltak közöttük érdeklődési körüknek megfelelően, de kb. 30-an megfordultak a „Számítástechnika és oktatás” szekcióban. Nagyon tetszett Kádek Tamás kolléga (DE) előadása a ProgCont API-ról és a több évnyi tapasztalat összegzése az online programozó versenyek automatizált értékelési rendszeréről. Izgalmas kitekintést jelentett számomra a hardver architektúrákról (és ezek programozásáról) szóló két előadás, amelyeket Bakó László és Drótos Dániel kollégák tartottak. A Budapest-Temesvár és vissza utazás is valódi élményt jelentett. Ritkán töltünk kollégákkal együtt annyi időt, amennyit most autóztunk. Közben tartalmasakat beszélgettünk.

SzámOkt 2019

Az előadásaim prezentációját ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Az első előadásom témája a Java EE szoftverfejlesztő tanfolyam 13-16. óra: JSON feldolgozás alkalmához, a második előadásom témája a Java adatbázis-kezelő tanfolyam 29-32. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalmához kapcsolódik.

Programozási Hét 2019 – CodeWeek.eu

Programozási hét CodeWeek.eu

Programozási hét CodeWeek.euAz Európai Programozási Hét idén 2019. október 5-20-ig került megrendezésre. Ez egy önkéntesek által működtetett, alulról szerveződő kezdeményezés. Az önkéntesek saját országukban a Programozási Hét nagyköveteként népszerűsítik a programozást. Ehhez nyílt és ingyenes eseményeket hirdetnek meg a CodeWeek.eu weboldalon.

A Programozási Hét célja

  • a programozással való alkotás megünneplése,
  • az emberek felvértezése képességekkel,
  • az emberek összekapcsolása,
  • még több ember érdeklődésének felkeltése a tudomány, a technológia, a mérnöki ismeretek és a matematika iránt.

Miért jó ez az érdeklődőknek/résztvevőknek?

  • A programozás szórakoztató!
  • Programozni kreatív tevékenység! Az emberiség a kezdetektől fogva alkot: agyagból, kőből, téglából, papírból vagy fából. Manapság programozással is alkotunk.
  • A programozás felvértez! Sokkal többre is képesek vagyunk annál, hogy csak fogyasszuk a digitális tartalmat; programozással sokféle dolgot alkothatunk, és azokat milliók számára elérhetővé tehetjük. Létrehozhatunk weboldalakat, játékokat, irányíthatunk egy számítógépet vagy egy robotot.
  • Értsük meg a világot! Manapság egyre több minden össze van kapcsolva. Ha némi rálátásunk van arra, hogy mi történik a színfalak mögött, akkor a világot is jobban megérthetjük.
  • A programozás megtanítja nekünk a számítógépes gondolkodást, fejleszti a problémamegoldást, kreativitást, kritikus érvelést, analitikus gondolkodást, valamint csapatmunkára késztet.
  • Manapság a munkahelyek 90%-a digitális készségeket, köztük programozási ismereteket követel a munkavállalóktól.

2015-től veszünk részt az esemény szervezésében, programozást népszerűsítő előadások, laborgyakorlatok meghirdetésével és megtartásával. 2017-ben 50+ országban 1,2 millió érdeklődő résztvevő csatlakozott.

Meghirdetett eseményeink

2019-ban három it-tanfolyam.hu-s eseményt hirdettünk meg Programozási Hét 2019 rendezvényen.
Helyszín: 1056 Budapest, Váci utca 47., 3. emelet 309-es terem, megközelítés
Dátum és időpont: 2019. október 8. 10:00-13:00-ig
Az események ingyenesek voltak, de a részvétel előzetes regisztrációhoz kötött.

Rendezvényünk plakátja

it-tanfolyam.hu - Programozási Hét 2019 CodeWeek.eu plakát

A rendezvény jó hangulatban telt, 47-en látogattak el hozzánk. Idén is volt közöttük emelt szintű informatika érettségire készülő középiskolás csoport informatikatanárával együtt, tanfolyamaink iránt érdeklődő és jelentkezést fontolgató, Java SE szoftverfejlesztő tanfolyamunkat korábban sikeresen teljesítő hallgatók és olyan is, aki tavaly járt nálunk először a Kutatók éjszakája 2018 rendezvényünkön. Az egyszerűbb lottószelvényes előadásnál most is elhangzott számos kérdés és ötlet, az absztraktabb témákhoz már lényegesen kevesebb hozzászólás/kérdés érkezett, de azért előfordult néhány. Igazán tartalmasan telt el idén is ez a három óra. Köszönjük mindenkinek, aki részt vett a Programozási hét 2019 – CodeWeek.eu rendezvényünkön. Az előadások prezentációit tanfolyamaink hallgatói számára – a témához kapcsolódó témakörökhöz, ILIAS-ra feltöltve – tesszük elérhetővé.

10:00-11:00 – Kaczur Sándor: Generáljunk lottószelvényeket és hasonlítsuk össze megoldásainkat!
Véletlenszám-generátorral lottószelvényeket állítunk elő. Többféle ötletet, módszert, algoritmust, adatszerkezetet, tesztelési módszert összehasonlítva vizsgáljuk, hogy melyik a hatékonyabb lépésszámot, memóriaigényt, bonyolultságot tekintve. Java nyelven implementálunk és az érdeklődők javaslatait is azonnal beépíthetjük a forráskódba. A program a Java SE szoftverfejlesztő tanfolyamunk tematikájához kapcsolódik. Előismeretként feltételezünk némi jártasságot programozási alapismeretek, programozási tételek, ciklusok, metódusok, tömbök témakörökből.

11:00-12:00 – Kaczur Sándor: Írjunk hatékony adatbázis-lekérdezéseket!
Az Oracle HR sémában, először tipikus, hétköznapi szavakkal megfogalmazunk néhány lekérdezést, majd SQL nyelven megvalósítjuk és elemezzük, hogy helyesek-e, hatékonyak-e, mit adnak vissza. Szükség esetén optimalizáljuk, testre szabjuk ezeket. Kategóriák: egyszerű, összetett, aggregáló, soktáblás, hierarchikus/rekurzív lekérdezések. Ha lehet, grafikusan is megjelenítjük a lekérdezések eredményeit Java swing felületen, beépített JTable és  JTree komponensekkel, illetve  JFreeChart grafikonnal is. A Java adatbázis-kezelő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot adatbázis-kezelés, SQL, Java swing felhasználói felület témakörökből.

12:00-13:00 – Kaczur Sándor: Építsünk látványos weboldalt XML fájlból megszerzett adatokból!
XML adatforrásban kapjuk egy cég alkalmazottainak adatait, amelyeket Java programmal feldolgozva, látványosan, animálhatóan megjelenítjük böngészőben az eredményt. Például: ki melyik részlegben dolgozik, kik dolgoznak az egyes részlegekben. Az érdeklődők igénye szerint a feladatot megoldhatjuk a következő technológiák közül választva: JavaScript, Bootstrap, jQuery. A Java EE szoftverfejlesztő tanfolyamunk tematikájához kötődik a program. Előismeretként feltételezünk némi jártasságot Java fájlkezelés, kivételkezelés, adatfeldolgozás, HTML, JavaScript témakörökből.