Ritka ponfelhő felvétele 3d felületmodellhez

avagy,
Szegény ember lézerszkennere

Dis barátom tett egy kis utalást arra a múltkor, hogy egy kis csapat Gáti Attila vezetésével fejleszt nálunk egy új, világszínvonalú térképezési módszert. Ennek a segítségével a hagyományos nézetrajzoknál nagyságrendekkel informatívabb 3D-s térképeket lehet alkotni lézerszkenner nélkül.
A DISTO-X térképező műszerre alapozva poligonpontonként ~ 200 megfelelően elhelyezett mérésből rekonstruálható a járat kiterjedése olyan helyeken is ahol a hagyományos lézerszkennert esélyünk sem lenne használni (szűk járatok, kötéltechnikás szakaszok, erős csepegés alatt, stb...)
Eddig több száz métert mértünk fel a módszerrel a Bányászban (https://www.youtube.com/watch?v=lif9-eer9qE) és más bükki barlangokban, aminek során kialakult egy viszonylag stabil algoritmus. Most azért fordulunk hozzátok, mert ahhoz hogy erre alapozva egy felhasználóbarát programot tudjunk alkotni egy nagyságrenddel több tesztadatra van szükségünk.
Olyan emberek, egyesületek jelentkezését várjuk, akik rendelkeznek saját DISTO-X1 vagy X2 műszerrel és hajlandóak tesztelőként segíteni a munkánkat!

Ez azt jelenti, hogy részt tudnak venni a felméréseinken, vagy 2 hónapon belül fel tudják mérni egy-egy jelentősebb ~100m-es nagyságrendű barlang, barlangszakasz pontfelhőjét, amit visszakapnának feldolgozva, mi pedig tesztelnénk rajta a programot.

Az Alapötlet leírása:

Disto x1 vagy x2 készülékkel mérjünk fel pontokat a barlag falán, majd illesszünk a felvett pontokra egy zárt felületet. Ezen manuális módszerrel igen kevés pontot tudunk felmérni a barlang felületének bonyolultságához képest. Tökéletes 3d modell készítése nem lehetséges, de még egy nagyvonalú felméréssel is látványos eredmény érhető el, ha sikerül a felvett pontokon a valóságos barlangfalnak megfelelően átvezetni egy felületet. A distoval olyan pontokból tudunk felületi pontokat felmérni, amelyek helye ismert. A felmérés ezért egy meglévő poligon pontjaira épül. Előfordulhat, hogy a poligonpontokból nem látunk rá fontos részletekre, ekkor pótlólagosan felvett vesztett pontokból kell mérnünk, ugyanakkor nem kötelző minden poligonpontból mérni. Azon poligonpontokat, melyekből mérünk és a pótlólag felvett vesztett pontokat együtt a továbbiakban alappontnak nevezzük.

A egyes alappontok körül az alappontból végzett mérések kifeszítenek egy térrészt. Képzeljünk egy kb. 30 cm sugarú gömböt, amelynek középpontja az aktuális mérési alappont. A gömb fala egy végtelenül nyújtható vékony hártya. Ezt a hártyát minden egyes mérés "felszögeli" a barlang falára, a mért pontra. A képzeletbeli hártya által körülzárt teret tekintjük az alappont körül kifeszített térrésznek. Méréseinkkel az alappontból belátott tényleges teret kell megközelítenünk az alappontból kifeszített képzeletbeli térrel.

1. A szomszédos alappontokból kifeszített térrészeknek mindenképpen átfedőknek kell lenni, mint halmazok metszeniük kell egymást. Valamelyest minden alappontból igyekezzünk az onnan belátott teljes teret kifeszíteni. Ugyanazt a felületet tipikusan több pontból is felmérjük. Ha egy pontból alaposan felmértünk egy falfelületet a többiből elegendő ritkábban, de valamennyit azért mérjünk.

2. Viszonylag sűrűn fel kell mérnünk a járatok legszűkebb keresztmetszeteit (szűkületek, átbújások, lebújások, ablakok), különösen akkor ha azok előtt vagy mögött hirtelen kitágul a tér. Ezeket mindkét oldalról lőjük körbe egyenletesen legalább 20-30 méréssel. A szűkületen túli barlangrészbe is lőjünk be 10-20 mérést a szűkületi keresztmetszet mentén. Gyakori, hogy a poligonpont a szűkületben van. Az alappont közvetlen környezete az adott alappontból soha nem mérhető fel, ezért, ha a poligonpont a szűkületben van a szomszédos alappontokból mindenképpen lőjünk a poligonpontba és köré néhányat.

3. Az aktuális alappont is a barlang falán van, az eljárás utolsó pontként azt is "rászögeli" a hártyára. Alapértelmezés szerint a hártya alapponthoz legközelebb eső pontjára. Sajnos ez nem mindig felel meg a valóságnak. Ezért hasznos szemből a falra merőlegesen, közvetlen közelről az alappontot meglőni. Ennek a lövésnek a hosszát nem veszem figyelembe, csak az irányát. Az irány kijelöli, hogy a hártyán hova tartozik maga az alappont. Nem kötelező ilyet mérni, de jól jöhet.

4. Részletgazdagabb felületeken sűrűbben mérünk, mint viszonylag egyszerű sík felületeken. Elvben egy sokszög által határolt sík lap esetén elegendő lenne a sokszög csúcsait felmérni. Pontszerű felületi elemeket (kiszögellés, sarok) mindenképpen érdemes bemérni. A vonalszerű elemek, élek mentén érdemes végig mérni. A mért pontok sűrűségét a felmérés célja, és a rendelkezésre álló idő is befolyásolja. Minden alappontból mérjünk legalább 30-at. Nem minden poligonpontból kell mérni, de ha már mérünk 30-nál kevesebbet ne mérjünk. Tipikusan 50-200 ponttot szoktunk felmérni alappontonként, de ha valahonnan egy terem jól belátható, és a pontból kényelmes a mérés 500-nál több pontot is felvehetünk.

5. Tapasztalataink szerint egy distoval 8 óra alatt 2000-8000 pontot lehet felvenni, és ezzel egy kb 50-100m-es barlangszakaszt felmérni.

6. Előfordulhat, hogy a 3d modell elkészítésekor derül ki, hogy elégedetlenek vagyunk néhány részlettel. Ekkor hasznos, ha a barlangba visszatérhetünk és újabb pontok felvételével korrigálhatunk.

7. Fémtárgyak közelében a mérés pontatlan, de nem reménytelen. Az adott poligonpontból lőjünk meg minél több szomszédos poligonpontot, ezen mérések alapján próbálok korrigálni.

Az eljárás inputja 3 file:

1. A poligon program által használt .cave az adott barlangszakaszról. (Ha az egész barlang rajta van nem baj.)

2. A TopoDroid program által készített .sqlite és .sqlite-journal fájl. (Ha .sqlite-journal-t nem készít nem gond, de ha ott van, küldjétek el). Ezeket a TopoDroid-ból nem exportálni kell, hanem kimásolni a TopoDroid install folderéből. (Az exportálás bug-os volt, ezért közvetlenül kellett használni a saját file-jait) Mivel az sqlite file mindent tartalmaz, amit a topodroid eddig letöltött, küldjétek el mely “survey”-t dolgozzam fel. Egyértelműen ki kell derüljön, hogy mely mérés mely alappontból történt. Ehhez elegendő az adott alappontból történt első méréshez "from station"-nek megadni az adott alappont azonosítóját, a "to station"-t pedig üresen hagyni. Az ezt követő méréseknél üresen hagyjuk mind a "from", mind a "to station" bejegyzést, ezeket úgy tekintem, hogy az adott alappontból történtek. Ha a poligont vesztett ponttal egészítjük ki, mind a "From station"-t mind a "To station"-t töltsük ki. Új alappontot felvehetünk a meglévőből az új pontba, és az újból a meglévőbe lőve egyaránt. Vesztett pontból is vehetünk fel újabb vesztett pontot. A vesztett pont azonosítójában utaljunk rá, hogy a poligont kiegészítő vesztett pontról van szó. Például, ha a 8A-1 poligonpontból veszünk fel vesztett pontott az azonosító legyen 8A-1v (remélhetően 8A-1v poligonpont nincs). Elvileg az azonosítóknál a kis és nagybetűket különbözőnek tekintem. Ha a "From station" és a "To station" ugyanazt az azonosítót kapja, akkor azt a mérést az előző szakasz 3. pontjának megfelelő nullás lövésnek tekintem. Ha a "From station" és a "To station" is poligonpont (szerepel a .cave file-ban), akkor a mérést a 7. pontban leírt korrekcióra akkor használom fel, ha a megjegyzésben is utaltok rá (vasletra, lezaras, femtargy), egyébként csak tájékoztató jellegűnek tekintem.
Jó, ha elkülditek mekkora deklinációval számoljak.
A topodroid megpróbálja kitalálni hogy honnan hova mértem (nekem nem világos mi alapján). Ezt a funkciót én kikapcsoltam, miután rákérdezés nélkül átírta az adatokat, és elvesztettem több, mint 500 mérést.
Javaslom ezért a "settings/Survey stations" No-ra, a "settings/Level of features"-t Basic-re állítani.

Ide várom a felméréseket:

Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.

A 3d modellt .stl formátumban küldöm vissza, amely a meshlab, paraview és blender programokkal is nézegethető.

Jó szerencsét!
Gáti Attila