Developer blog / 2015

hu Quake kulcstartó

December 28, 2015,Handicraft

QuakeA következő a legelső Quake videojátéknak a logója. Mivel ez semmilyen formájában nem értelmezhető jelvényként, ezért ezt most kulcstartónak csináltam meg. Hogy mennyire lesz strapabíró, az még kiderül. Akryl lakkal fújtam be 3 rétegben, így a festék valamelyeset védve van. Ragasztóból hogy jusson bőven, még festés előtt ragasztottam össze, így nem volt gond, ha kifolyt alóla. Hogy a jelkép felülete ne kapjon festéket a festés során, előtte azt üvegfestékkel festettem le (ez az a kék cucc a képen), aminek a sajátossága, hogy miután megszáradt, gumiszerű, és egyben letéphető.

Még karácsony előtt lőttünk pár új jelenetet a szakdolgozat projektben. Az egyik jobban sikerült jelenetből összeállítottam az alábbi kis videót. A helyszín az egyik egyetemi labor.

Ami a videón látszik: betölt fájlból egy korábban kimentett jelenetet, szeletenként, majd az egészet kitörli és a csúcspontokból generálja ki újra. A végén pedig végigrepül a csúcspotokon, ezzel követve azt az utat, amit eredetileg a kamera megtett.

Ha már úgyis ekkora Star Wars mánia van, a következő munkám a Galaktikus Birodalom jelképe lett. Ez az első megrendelésre készített munkám, úgyhogy nem sokáig fog nálam díszelegni. Hasonlóan a jelvényekhez, ennek is van mágnes a hátán, de ez nem viselésre lett tervezve, főleg hogy 7 cm az átmérője és komoly súlya van. Az elülső fele 2,5 mm vastag alumínium, a hátlap pedig feketére festett vas. A szálcsiszolási technikámat sikerült végre tökéletesre fejleszteni azzal, hogy a smirglit egy fadarabra ragasztom rá, és nem kézben fogom, így az éleket nem kerekíti le. Az élek lekerekedésével az volt a probléma, hogy amellett hogy nem kéne lekerekednie, ennek a mértékét is lehetetlen kézzel egyenletesre csinálni, ami miatt az egyes részein a fény máshogyan csillan meg, olyan hatást keltve, mintha görbe lenne a munkadarab, holott nem az.

Megkaptuk az első helyezést a projektünkre a 2015 őszi Tudományos Diákköri Konferencián.

TDK első díj

Mint azt már korábban is írtam, a projekten ketten dolgozunk, Takács Dániel kolléga Úrral, melynek címe:

Gráf-alapú Egyidejű Lokalizáció és Térképezés.

Projektünk alapvető célja egy olyan szoftverrendszer elkészítése, amely képes egy Microsoft Kinect szenzor jeleit feldolgozni és ezek alapján feltérképezni a környezetét. A feltérképezett munkatér ezek után virtuálisan bejárható, illetve a munkatérben lehet útvonalat keresni, és ez alapján dönt a rendszer arról, hogyan navigálhat az ismert területen. A rendszer érzékeli, ha egy már korábban feltérképezett térrészt újra azonosít, és javítja a térképet a régi és az új adatok segítségével. Figyelembe véve a szenzor által szolgáltatott adatokban fellépő zajokat, a modellel szemben elvárás, hogy minél pontosabban közelítse a környezetet, amelyből alkotja azt.

A projekt jelenlegi állapotában a kamerát kézben visszük, ez főleg tesztelésnél gyorsabb is. Az alábbi videóban a TDK előadás során is felhasznált videóanyagot szerkesztettem egybe (magyarázat a videó után).

Feltérképezés

Első lépésben történik a feltérképezés, ilyenkor a kamerát (világoskék nyíl) végigvezetjük a feltérképezendő térben, a program pedig igyekszik a képekből meghatározni a térbeli elmozdulást. Hogy spóroljunk az erőforrásokkal, a program csúcspontokkal dolgozik (a sötétkék nyilak), ahol nem az egymás után következő képkockákat veti össze, hanem mindig az aktuális képet az utolsó csúcspont képével. Új csúcspontot akkor rak le, ha az előző óta az elfordulás vagy elmozdulás egy bizonyos értéket meghaladott.

Az egyes képkockák közti relatív elmozdulást könnyedén ki tudjuk számolni, mivel a Kinect szenzor biztosít az egyes pixelek mellé mélység adatot is, így miután kinyertük a közös jellemzőket a két képen, lesz két pontfelhőnk, amik ugyanazokat a pontokat írják le, csak más orientációban és elhelyezésben.

A térképezés során minden csúcspont lementésekor a hozzátartozó kép képpontjait leképezzük a voxel térbe. Itt nagy voxelekkel dolgozunk, és nem minden pixelt számítunk be, így egy gyors, vázlatos képet kapunk arról, hogy milyen lesz. A csúcspontok ismeretében a voxel teret bármikor és bármilyen felbontásban újragenerálhatjuk.

Útvonalkeresés

Az útvonalkeresésnél a legfontosabb, hogy a padlót külön tudjuk választani a többi objektumtól. Noha a padló sík, a különféle zajok és pontatlanság miatt soha nem lesz tökéletesen sík, így a padló kiválasztásánál ezt figyelembe kell venni, hogy hol van az, ahol egy voxel ugrás még zaj, és hol számít már akadálynak. Ennek a végeredménye egy 2D térkép lesz, amiben gyorsan és könnyedén tudunk Dijkstra-féle hullámtovábbterjesztéses algoritmussal útvonalat keresni. Mivel ez az algoritmus nem számol fizikai kiterjedéssel, így magát az utat kell lesoványítani úgy, hogy az akadályokat hízlaljuk fel a robot méretével. A videón ezt jelzik a színek: a piros szín mutatja azt a padlórészt, ahol nem férne el a robot, a zöld pedig a járható utat.

3D megjelenítés

A videó utolsó része egy ilyen nagyfelbontású voxel tér körbejárását mutatja be. Itt a kamera a csúcspontokat járja végig időrendi sorrendben.

Megtartottuk a második előadásunkat is a Tudományos Diákköri Konferencián. A projekt ugyanaz mint tavaly, ami egyben a szakdolgozat projektünk is, amin Takács Dániel kollégával közösen dolgozunk. Tavaly óta gyarapodtak az eredmények és a cím is kicsit specifikusabb lett, mégpedig Gráf-alapú Egyidejű Lokalizáció és Térképezés.

Nem ragadok meg a Star Trek-nél, bármi jöhet, amiben klassz jelvények vannak. Következő kiszemelt a Rick-ek Tanácsa jelvény a Rick és Morty-ból. Ez az első olyan jelvényem, amiben nem csak lemezek vannak: a jelvény nyúlványainak a végén a félgömböket kettéfűrészelt műanyag gyöngyökből csináltam meg.