File size: 41,692 Bytes
ceea884 9a28212 ceea884 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 | # ๋ก๋๋งต
๊ฐ ๋จ๊ณ๋ **๊ฒ์ฆ ๊ฐ๋ฅํ ์ฐ์ถ๋ฌผ** ๋ก ๋๋๋ค. "๋๋ค" ๋ฅผ ๋์ผ๋ก ํ์ธํ ์ ์์ผ๋ฉด
๊ทธ ๋จ๊ณ๋ ๋๋ ๊ฒ ์๋๋ค.
---
## 0๋จ๊ณ โ ๊ฐ๋ฐ ํ๊ฒฝ ยท ๋ฐ์ดํฐ ๊ณ์ธต โ
์๋ฃ
| | |
|---|---|
| ์ฐ์ถ๋ฌผ | `vkgs-doctor` ๊ฐ ์ ๋ถ ์ด๋ก, `nusim scene show` ๊ฐ ์ฌ์ ์ถ๋ ฅ |
| ์ํ | **์๋ฃ.** Docker ๋์ ๋ก์ปฌ micromamba ํ๊ฒฝ (`scripts/local_setup.sh`) |
- [x] ์ฌ ์ธ๋ฑ์ค โ 383 ์ฑ๊ฐํฌ๋ฅด ์ฌ / 532,157 ์ฅ / ํผํฌ 0.5 GB
- [x] ์ธ๋ฑ์ค v2 โ LIDAR_TOP ํคํ๋ ์ ์ถ๊ฐ (์ฌ๋น ์ฝ 40์ฅ)
- [x] ์คํธ๋ฆฌ๋ฐ JSON ํ์ โ 1.35 GB ๋ฅผ ํผํฌ 30 MB ๋ก ์ํ
- [x] ์นด๋ฉ๋ผ ๋ฆฌ๊ทธ ์ํ โ 6์บ ๋ฐฐ์น๋ฅผ ์ค์ธก์ผ๋ก ํ์ธ. Vulkan ํฌ์ํ๋ ฌ y/์ฃผ์ ๋ถํธ ๋ฒ๊ทธ ์์
- [x] ๋ก์ปฌ ํ๊ฒฝ (CUDA 12.1 + PyTorch 2.4.1 + gsplat 1.4.0 + Vulkan 1.4 ๋ก๋, sudo ๋ถํ์)
- [x] `vkgs-doctor` ์ ํญ๋ชฉ ํต๊ณผ
- [x] `vkgs_probe` ๋ฅผ ์ค์ GPU ์์ ์คํ โ ์ปดํจํธ ๋์คํจ์น ๊ฒ์ฆ ํต๊ณผ
---
## 1๋จ๊ณ โ 3DGS ์ฌ๊ตฌ์ฑ ๐ง ์งํ ์ค
| | |
|---|---|
| ์ฐ์ถ๋ฌผ | ์ฌ ํ๋์ `.ply` + ์๋ณธ ๋๋น PSNR/SSIM ๋ฆฌํฌํธ |
| ๊ธฐ์ค์ | ์ ์ ์ฌ(์ฃผ์ฐจ์ฅ ๋ฑ)์์ hold-out ๋ทฐ PSNR โฅ 25 dB |
- [x] `recon/init.py` โ LIDAR_TOP ๋์ โ ์ด๊ธฐ ๊ฐ์ฐ์์. ์์ฐจ ์ /๋ฐ์ฌ ํ์ ์ ๊ฑฐ,
์ฌ ์์ ์ด๋(float32 ์ ๋ฐ๋), ํ๋ ๊ตฌ, ์นด๋ฉ๋ผ ํฌ์์ผ๋ก ์ ์ด๊ธฐํ. **COLMAP ์์.**
- [x] `recon/dataset.py` โ 800ร450, ์ฌ ์ ์ฒด RAM ์ ์ฌ(1.4 GB, 5์ด), ์นด๋ฉ๋ผ๋ณ hold-out 1/8.
- [x] `recon/train.py` โ gsplat + DefaultStrategy, ๊ฐ์ฐ์์ ์ํ, ์นด๋ฉ๋ผ๋ณ ์ํ + ํ๋ ์๋ณ ๊ฒ์ธ ์ ๋ณด์ .
- [x] `io/ply.py` โ ํ์ค 3DGS ply (์์ ์ ํค๋ comment ์ float64).
- [x] ์ธ๋ฑ์ค v3 โ 3D ๋ฐ์ค ์ด๋
ธํ
์ด์
(์ฑ๊ฐํฌ๋ฅด 364,833๊ฐ)
- [x] `recon/dynamic.py` โ ์์ง์ด๋ ๊ฐ์ฒด ํ์ (์ฌ๋ ์ ๋ถ + ๋์ ๋ณ์ > 2 m + moving ์์ฑ ๊ณผ๋ฐ),
ํคํ๋ ์ ๊ฐ ๋ฐ์ค ๋ณด๊ฐ, ๊ทผํ๋ฉด ํด๋ฆฌํ ํฌ์ ๋ง์คํฌ. ๋ผ์ด๋ค ์ด๊ธฐํ์ ํ์ต ์์ค์์ ์ ์ธ.
- [x] ์ ๊ตฝ๊ธฐ โ ํ๊ท ์นด๋ฉ๋ผ ์ ๋ณํ์ SH ์ ๊ตฌ์ ply ๋ง์ผ๋ก nuScenes ์์ด ๋์ค๊ฒ.
- [x] ์ ์ PSNR 25 dB ๋ฌ์ฑ โ 60k ์คํ
25.26 dB
- [x] ์นด๋ฉ๋ผ๋ณ ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ (camera_adjust.json)
- [x] ์ ๋ณด์ ์ค์ฌํ (SH ๊ตฝ๊ธฐ ๋์ฒด) + ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ L2 ์ฌ์ ๋ถํฌ
- [x] ์ฌ 3๊ฐ๋ก ๊ฒ์ฆ โ ์๋ ํ. **์ฃผ๊ฐยทํฉํผ์ ํต๊ณผ, ์ผ๊ฐ+์ฐ์ฒ์ ์คํจ** (์ฑ๊ฐํฌ๋ฅด ์ฐ์ฒ ์ฌ์ ์ ๋ถ ์ผ๊ฐ)
- [ ] ์ผ๊ฐ+์ฐ์ฒ ์ฌ๊ตฌ์ฑ โ ์ ์ 3DGS ๊ฐ์ ์ด ๊นจ์ง๋ ์กฐ๊ฑด์ด๋ผ ๋ณ๋ ์ ๊ทผ ํ์ (์๋ ์ฐธ๊ณ )
- [ ] ์ฐจ๋๋ณ ๊ณ ์ ์บ๋ฆฌ๋ธ โ ์ฃผ๊ฐ ์ฌ ์ฌ๋ฟ์ ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ ์ ํ๊ท ๋ด n015 ๋ฑ ์ฐจ๋๋ณ๋ก ๊ณ ์
**์ฌ 3๊ฐ ๊ฒ์ฆ (60k ์คํ
, ์ต์ข
์ฝ๋, 2026-10-01):**
| ์ฌ | ์กฐ๊ฑด | ํ๊ท ๋ฐ๊ธฐ | ์ ์ PSNR | SSIM | ply ๊ทธ๋๋ก | ๊ฐ์ฐ์์ | ์๊ฐ | ํ์ |
|---|---|---:|---:|---:|---:|---:|---:|---|
| scene-0003 | ์ฃผ๊ฐ ์ฃผ์ฐจ์ฅ | 0.41 | **25.62** | 0.804 | 19.5 | 200๋ง | 64๋ถ | ํต๊ณผ |
| scene-0992 | ํฉํผ ("Night") | 0.14 | **25.64** | 0.582 | 24.0 | 27๋ง | 20๋ถ | ํต๊ณผ (๋๋ฌด๊ฐ ํ๋ฆผ) |
| scene-1060 | ์ผ๊ฐ + ์ฐ์ฒ | 0.05 | 29.29 | 0.646 | 27.8 | 5.6๋ง | 15๋ถ | **์คํจ** โ ์์น๋ง ๋๋ค |
**์ด๋์ด ์ฌ์์ PSNR ์ ๋ฏฟ์ ์ ์๋ค.** scene-1060 ์ ์ด๋ฏธ์ง๊ฐ ๊ฑฐ์ ๊ฒ์ด์(ํ๊ท 0.05)
๋ญ๊ฐ์ง ๋ ๋๋ 29 dB ๊ฐ ๋์จ๋ค. ์ค์ ๋ ๋๋ ๊ฐ๋ก๋ฑยท์ฐจ์ ยทํค๋๋ผ์ดํธ๋ง ํ๋ฆฟํ๊ฒ ๋จ๋๋ค.
์ผ๊ฐ ํ์ ์ SSIM ๊ณผ ์ก์์ผ๋ก ํ๋ค. (LPIPS ๋ฅผ ์งํ์ ๋ฃ๋ ๊ฒ๋ ๊ณ ๋ ค.)
์ผ๊ฐ+์ฐ์ฒ์ด ์ด๋ ค์ด ์ด์ : ์ผ์ ๋
ธ์ด์ฆ, ์ ์ ๋
ธ๋ฉด์ ์์ ์์กด ๋ฐ์ฌ, ํค๋๋ผ์ดํธ ๊ธ๋ ์ด,
๋ ์ฆ์ ๋น๋ฐฉ์ธ โ ์ ๋ถ '์ ์ ์ฅ๋ฉด + ์์ ๋ฌด๊ด ์' ๊ฐ์ ์ ๊นฌ๋ค. ์์ค์ ๋ฐ๊ธฐ๋ก ์ ๊ทํํด
densify ๋ฅผ ์ด๋ ค ๋ดค์ง๋ง(๊ฐ์ฐ์์ 5.6๋งโ48๋ง) ๋
ธ์ด์ฆ๋ฅผ ๋ฐ๋ผ๊ฐ๋ ์ค๋ฌด๋ฌ๋ง ๋์๋ค
(PSNR 24.9, SSIM 0.50). ๊ธฐ๋ณธ์ ๋๊ณ `max_loss_scale` ์ต์
์ผ๋ก๋ง ๋จ๊ฒผ๋ค.
**scene-0003 (์ฃผ์ฐจ์ฅ ์ถ๊ตฌ) ์คํ ์ด๋ ฅ:**
| ๋ฒ์ | ์คํ
| ์ ์ PSNR | ์ ์ฒด PSNR | ply ๊ทธ๋๋ก | ๋น๊ณ |
|---|---:|---:|---:|---:|---|
| v1 ๊ธฐ๋ณธ | 30k | 24.54 | 23.98 | 18.05 | ์์ง์ด๋ ์ฐจ๊ฐ ํ๋ฆฐ ์์์ผ๋ก ๊ตฌ์์ง |
| v2 ๋์ ๋ง์คํน + ์ ๊ตฝ๊ธฐ | 30k | 24.63 | 22.84 | 19.07 | ์์ ์ ๊ฑฐ |
| v2 + ๊ฐ์ฐ์์ ์ํ 350๋ง | 30k | 24.64 | 22.86 | โ | ์ํ์ด ๋ณ๋ชฉ ์๋ (์์ฐ ์ฆ๊ฐ 213๋ง์์ ๋ฉ์ถค) |
| v2 + absgrad | 30k | 24.36 | 22.73 | โ | ์คํ๋ ค ๋์จ (๊ฐ์ฐ์์ 119๋ง) |
| v2 + ์นด๋ฉ๋ผ ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ | 30k | 24.72 | 23.01 | โ | ์บ ๋ง๋ค 0.3~0.44ยฐ / 2~8 cm ๋ณด์ ๋จ |
| v2 | **60k** | **25.26** | 23.33 | โ | **๋ ํ์ต์ด ์ฃผ์์ธ.** ๊ธฐ์ค์ ํต๊ณผ |
| **์ต์ข
** v2 + ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ | 60k | **25.42** | 23.49 | โ | SSIM 0.803. ๋ณด์ ๊ฐ์ด ๋ฐ๋ณต ์คํ์์ ์ฌํ๋จ (0.29~0.44ยฐ) |
'์ ์ PSNR' ์ ๋์ ๋ง์คํฌ ๋ฐ ํฝ์
๋ง (๋ฐฐ๊ฒฝ ๋ชจ๋ธ์ ํ์ง, 1๋จ๊ณ ๊ธฐ์ค์ ).
'์ ์ฒด' ๊ฐ v2 ์์ ๋ด๋ ค๊ฐ ๊ฒ์ ์๋๋ ๊ฒ์ด๋ค โ ์์ง์ด๋ ์ฐจ ์๋ฆฌ์ ์ด์ ๋ฐฐ๊ฒฝ์ ๊ทธ๋ฆฐ๋ค.
์ง๋จ์์ ์๊ฒ ๋ ๊ฒ:
- ํ์ต ๋ทฐ PSNR ๋ 25.2 ์์ ๋ฉ์ถฐ ์์๋ค โ ๊ณผ์ ํฉ์ด ์๋๋ผ **๋ฏธ์ ํฉ**. ์ฌ๋น ๋ทฐ 1,200์ฅ์
3๋ง ์คํ
์ ๋ทฐ๋น 25ํ๋ฟ์ด๋ค (์๋ณธ 3DGS ๋ 200์ฅ ร 3๋ง = 150ํ).
- ํ๊ฐ ๋ทฐ ๋
ธ์ถ ๊ฒ์ธ์ ์ด์ ํ๋ ์์์ ๋น๋ฆฌ๋ ์์ค์ 0.13 dB ๋ฟ (oracle ๋น๊ต).
- ํ๋ ๊ตฌ๋ง ๋ณด์ด๋ ํฝ์
์ ์ค์ฐจ์ 2%. ๋ฐ์ ํฝ์
(๋๋ญ์ ์ฌ์ด ํ๋)์ด ํฝ์
9% ๋ก ์ค์ฐจ 29%.
- ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ ์ view ํ๋ ฌ gradient ๋ gsplat ์ด 4x4 ํ๋๋ก atomic ํฉ์ฐํด ์คํ
์ด
2.2๋ฐฐ ๋๋ ค์ง๋ค. 4์คํ
์ ํ ๋ฒ, 3๋ง ์คํ
๊น์ง๋ง ์ผ ๋ค (`camera_every`, `camera_until`).
- ์ ๊ตฝ๊ธฐ๊ฐ ์ฝ 0.1 dB ์๋๋ค โ gsplat ์ด SH ์์ `clamp_min(0)` ์ ๊ฑธ์ด ์์ ํ ์ ํ์ด ์๋๋ค.
**์ฃผ์ํ ์ .** ๋
ธ์ถ/ํ์ดํธ๋ฐธ๋ฐ์ค๊ฐ ์นด๋ฉ๋ผ๋ง๋ค ๋ค๋ฅด๋ค. ๋ณด์ ์์ด ํ์ตํ๋ฉด
์นด๋ฉ๋ผ ๊ฒฝ๊ณ์ ์ด์๋งค๊ฐ ์๊ธด๋ค. ์นด๋ฉ๋ผ๋ณ ์ ๋ณด์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ด ์ต์ ํํ๋ค.
---
### 1๋จ๊ณ ๋ณด๊ฐ โ ์ ์์ ํ์ง (์นด๋ฉ๋ผ-๋ผ์ด๋ค ์ตํฉ, Difix) ยท 2026-10-01
closed-loop ์์ ์ฐจ์ ์ ๋ฐ๊พธ๋ฉด(์๋ ๊ฒฝ๋ก์์ ์์ผ๋ก 1.5~3 m) ๋
ธ๋ฉด์ด ํํธ์ฒ๋ผ ๋ญ๊ฐ์ก๋ค.
์์ธ์ ์์ด ์๋๋ผ ๊ธฐํ โ ๊ธฐ๋ณธ ๋ชจ๋ธ์ ๋ ๋ ๊น์ด๊ฐ ๋ผ์ด๋ค์ 20% ์ด๊ธ๋ ์์๋ค.
| ๋ชจ๋ธ (scene-0003) | ์๋ ๊ถค์ ์ ์ PSNR | ๊น์ด ์ค์ฐจ (๋ผ์ด๋ค ๋๋น) | ์ฐจ์ ๋ณ๊ฒฝ ์์ |
|---|---:|---:|---|
| ๊ธฐ๋ณธ (๋ผ์ด๋ค๋ ์ด๊ธฐํ๋ง) | **25.62** | 22.0% | ๋
ธ๋ฉด ๋ญ๊ฐ์ง |
| + Difix ์์ฌ ์ ๋ต ๋ฏธ์ธ์กฐ์ | 24.80 | 23.8% | ๋งค๋ํ์ง๋ง ํ๋ฆผ |
| **+ ๋ผ์ด๋ค ๊น์ด ๊ฐ๋
** (`--depth-lambda 0.1`) | 24.83 | 2.3% | **์ฐ์ยท์ฐจ์ ยท๋
ธ๋ฉด ํ์ ์ ์ง** โ ์๋ฎฌ๋ ์ดํฐ ๊ธฐ๋ณธ |
| ๊น์ด ๊ฐ๋
+ Difix | 24.18 | 2.4% | 3 m ์์ ์ฝ๊ฐ ๋ ๊นจ๋, ๋์ โ0.65 dB |
| ๊น์ด ๊ฐ๋
+ sweep ์ตํฉ (20 Hz ๋ผ์ด๋ค 384์ฅ) | 24.69 | **2.0%** | ๊น์ด ๊ฐ๋
๊ณผ ๋น์ท, ํ๋์ ์ค๋ฌด๋ฌ |
- ๋ผ์ด๋ค ๊น์ด ๊ฐ๋
= ์ ์ ๋ผ์ด๋ค ๋์ ์ (๋์ ๊ฐ์ฒด ์ ๊ฑฐ)์ ๋ทฐ๋ง๋ค z-buffer ๊น์ด ์ง๋๋ก ๋ง๋ค์ด
๋ ๋ ๊ธฐ๋ ๊น์ด์ ์๋ L1 (`nusim/recon/depth.py`). ๊ธฐํ ์ค์ฐจ๊ฐ 10๋ฐฐ ์ค๋ค.
- sweep ์ ๊น์ด ์ง๋๋ฅผ ์ด์ดํ๊ฒ ํ์ง๋ง(1/2 ํด์๋ ์ฑ์ 51% โ 79%) ๊ฒฐ๊ณผ ์ฐจ์ด๋ ์์๋ค.
๋ผ์ด๋ค ์์ง ์์ผ ์(ํ๋)๋ ์ฌ์ ํ ๊ตฌ์์ด ์์ด floater ๊ฐ ๋จ๋๋ค.
- Difix(NVIDIA, SD-Turbo ๋จ์ผ ์คํ
ํ์ฐ, ์ฐ๊ตฌ์ฉ ๋ผ์ด์ ์ค)๋ ๋ ๋ ํ์ฒ๋ฆฌ๋ก๋ ๊ฐ์ฅ ์ข์ง๋ง
์ฅ๋น 1์ด๋ผ closed-loop ์ ๋ชป ์ฐ๊ณ , ์ฐธ์กฐ ์ฌ์ง์ ์์ง์ด๋ ์ฐจ๋ฅผ ๋์ด๋ฆฌ๋ ํ๊ฐ์ด ์๋ค.
OneFixer(arXiv 2609.32175) ๋ ์ฝ๋ ๋ฏธ๊ณต๊ฐ, NVIDIA Fixer ๋ cosmos ์ปจํ
์ด๋ ์คํ์ด ํ์ํด ๋ณด๋ฅ.
- ๋จ์ ํ๊ณ: ์๋ ์นด๋ฉ๋ผ๊ฐ ํ ๋ฒ๋ ๋ชป ๋ณธ ๋ฉด(์ฐจ๋จ๊ธฐยท์ฝ์ ์๋ฉด)์ 3 m ์ด๋์์ ์ฌ์ ํ ๊นจ์ง๋ค.
### ํ๊ฒฝ ์ ์ฉ ์ฌ๊ตฌ์ฑ (2026-10-02 ๊ฒฐ์ )
๋ ๋๋ง์ **์ฃผํ ๋งต(ํ๊ฒฝ)๋ง** ๊ตฌ์ฑํ๋ค. ์ฐจ๋ยท์ฌ๋ ๊ฐ์ ๊ตํต ์ฐธ๊ฐ์๋ 3๋จ๊ณ์์ ์๋ฎฌ๋ ์ดํฐ๊ฐ ๋ฐ๋ก ๋ฃ๋๋ค.
- `nusim recon train --objects agents`: ์์ง์ด๋ ๊ฐ์ฒด๋ฟ ์๋๋ผ **์ฃผ์ฐจ ์ฐจ๋ยท์ ์๋ ์ฌ๋ยท์์ ๊ฑฐ๊น์ง**
ํ์ต ๋ง์คํฌ์ ๋ผ์ด๋ค ๋์ ์์ ๋บ๋ค (`nusim.recon.dynamic.masked_instances`). ์ฝยท๋ฐฉํธ๋ฒฝ(movable_object)์ ๋งต์ผ๋ก ๋จ๊ธด๋ค.
scene-0003: ๊ธฐ๋ณธ 24๊ฐ โ 54๊ฐ (์น์ฉ์ฐจ 35, ๋ณดํ์ 15, ์์ ๊ฑฐ 4).
- ์ฐจ๊ฐ ์ ์๋ ๋
ธ๋ฉด์ ๋ค๋ฅธ ์๊ฐยท๋ค๋ฅธ ์นด๋ฉ๋ผ์์ ๋ณธ ํฝ์
๊ณผ ๋ผ์ด๋ค ๊น์ด ๊ฐ๋
์ผ๋ก ์ฑ์ด๋ค.
- ๊ฒฐ๊ณผ๋ `outputs/gs/<scene>_env`. `render view` ๋ ์ด ๋ชจ๋ธ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ์ผ๋ก ์ด๋ค.
๋ค๋ฅธ ์ฐจ๋(glTF)์ ๊ธฐ๋ณธ์ผ๋ก ๊ทธ๋ฆฌ์ง ์๊ณ `--agents` ๋ก๋ง ์ผ ๋ค. ์์ฐจ๋ ๊ณ์ ํ์ํ๋ค.
## 2๋จ๊ณ โ Vulkan ๋ ๋๋ฌ ๐ง 2a ์๋ฃ
| | |
|---|---|
| ์ฐ์ถ๋ฌผ | ๊ฐ์ ์นด๋ฉ๋ผ ์์ธ์์ ํ์ต๊ธฐ ๋ ๋์ Vulkan ๋ ๋์ ํฝ์
์ฐจ์ด < 2% |
### 2a. ๋น๋ณด๋ ๊ฒฝ๋ก โ
(2026-10-01)
- [x] `.ply` ๋ก๋, ๊ฐ์ฐ์์ SSBO ์
๋ก๋ (3D ๊ณต๋ถ์ฐ์ CPU ์์ ๋ฏธ๋ฆฌ, 240 B/๊ฐ์ฐ์์)
- [x] ๊น์ด ์ ๋ ฌ (GPU bitonic โ 2026-10-05 ๋ณด์ด๋ ๊ฒ๋ง GPU radix, ์์ง ๊ฒฝ๋ํ ์ฐธ๊ณ )
- [x] ํ๋ฉด์ ๋ ฌ ์ฟผ๋ + ์ํ ๋ธ๋ ๋ฉ (RGBA32F ๋์ , gsplat ๊ณผ ๊ฐ์ ์์ยท์์)
- [x] GLFW ์ฐฝ, ์์ ์นด๋ฉ๋ผ / 6์บ ์ถ์ข
/ ๊ถค์ ์ฌ์ / BEV(๋์ด ํด๋ฆฝ) โ **ํ๋ฉด์ ๋ฌ๋ค**
- [x] nuScenes map expansion ์ค๋ฒ๋ ์ด (์ฃผํ๊ฐ๋ฅ์์ญ, ์ฐจ์ ์ค์ฌ์ , ๊ตฌ๋ถ์ , ์ ์ง์ , ๋ณด๋, ์์ฐจ ๊ถค์ ยท๋ฐ์ค)
- [x] `nusim render compare` โ **Vulkan vs gsplat PSNR 55.95 dB, ํ๊ท ์ฐจ์ด 0.10%** (๊ธฐ์ค < 2%, ํฉ๊ฒฉ)
- [x] `nusim render video` โ 6์บ + BEV ์ฌ์ ์์
์ฑ๋ฅ (scene-0003, ๊ฐ์ฐ์์ 200๋ง / ๋ณด์ด๋ 33๋ง, 800x450): ์ ์ฒ๋ฆฌ 0.5 + ์ ๋ ฌ 10.8 + ๋์คํฐ 5.0 = **16.3 ms/์ฅ**.
์ ๋ ฌ์ด 2/3 โ bitonic 231 ํจ์ค. 6์บ ร 1600x900 ์ 100 ms ์์ ๋ฃ์ผ๋ ค๋ฉด 2b ์ radix ์ ๋ ฌยทํ์ผ ๋์คํฐ๊ฐ ํ์ํ๋ค.
BEV ์ ํ๊ณ: ํ์ต ์นด๋ฉ๋ผ๊ฐ 1.5 m ๋์ด์์ ์ํ์ผ๋ก๋ง ๋ด์, ์์์ ๋ณด๋ฉด ๋๋ฌด ์บ๋
ธํผ๊ฐ ์ง๋ฉด์
๋ฎ๊ณ ์ง๋ฉด ๊ฐ์ฐ์์์ด ๋ฐ๋์ฒ๋ผ ๋ณด์ธ๋ค. ๋์ด ํด๋ฆฝ(๊ธฐ๋ณธ ์ง๋ฉด +2.5 m)์ผ๋ก ์บ๋
ธํผ๋ ๊ฑท์ด ๋ด์ง๋ง
๋ฐ๋์ ๋จ๋๋ค โ 3DGS ์ ๋ณธ์ง์ ํ๊ณ์ด๊ณ BEV ๋ ๋งตยท๊ถค์ ํ์ธ์ฉ์ผ๋ก ๋ณธ๋ค.
### 2a+. IBL ํ๊ฒฝ ์กฐ๋ช
โ
(2026-10-02)
- [x] 6์บ ํ๋
ธ๋ผ๋ง (์ ๋ณด์ ์ญ์ ์ฉ, 3DGS ์ํ ํฉ์ฑ + ์ธ์ฝ ์ฑ์)
- [x] HDR ๊ทผ์ฌ โ ํ๋ธ๋งต โ prefiltered specular (GGX) / irradiance (SH9) / BRDF LUT
- [x] BC6H ์์ถ + KTX2 (Khronos `ktx validate` ํต๊ณผ)
- [x] Vulkan: KTX2 ๋ก๋, ํ๊ฒฝ ๋ฐฐ๊ฒฝ, PBR ๊ตฌ ๊ฒ์ฆ, ๋ฉ์โ์คํ๋ซ ๊น์ด ํฉ์ฑ
- [x] glTF ์ฐจ๋ ๋ก๋ + PBR (IBL ์กฐ๋ช
, clearcoat, ์ ๋ฆฌ ๊ทผ์ฌ, texture_transform) โ nuScenes ์ ์์ง์ด๋ ์น์ฉ์ฐจ ๋ฐ์ค
๊ถค์ ๋ง๋ค CarConcept(CC-BY 4.0)๋ฅผ ๋๋๋ค. ์ฌ์ยท์ด์ ยท6์บ ๊ด์ธก ๋ชจ๋์ ๋์จ๋ค (์ด์ ์ค์ ๋ก๊ทธ ์๊ณ๋ก, ์์ง ๋ฐ์ ์์)
- [x] ์ฐจ๋ ์ ์ง ๊ทธ๋ฆผ์ โ ์ฐจ์ฒด ํญ(๋ชจ๋ธ ํญ ร0.85)ยท๊ธธ์ด์ ๋ถ๋๋ฌ์ด ๋ฅ๊ทผ ์ฌ๊ฐํ, ์ฐจ์ฒด ๊น์ด์ ๊ฐ๋ ค์ง๋ค
- [x] ์์ฐจ๋ glTF ๋ฉ์ (`assets/gltf/ego_car.glb` โ ์ง๊ธ์ CarConcept, Renault Zoe ๊ธธ์ด 4.1 m ๋ก).
nuScenes ์ฃผ์ฐจ ์ฐจ๋ 3DGS ์์
์ ๋ท๋ฉด์ด ํ๋ ค ๋์ฒด. ์์ฐจ ์นด๋ฉ๋ผ ์์ ยท๊ด์ธก์์๋ ์จ๊ธด๋ค
- [ ] ์์ง์ด๋ ์ฐจ๊ฐ ์ง์์ง ์๋ฆฌ์ 3DGS ํ์ง (ํ์ต ๋ ๊ฐ๋ ค์ ธ ํฐ ์๊ฐ์ฒ๋ผ ๋จ๋๋ค)
- [ ] ์์ฐจ ์์น์ ๋ฐ๋ฅธ ํ๊ฒฝ๋งต ๊ฐฑ์ (์ฌ๋ฌ ์ง์ ๊ตฝ๊ธฐ, ๋ณด๊ฐ)
### 2b. ์ปดํจํธ ํ์ผ ๊ฒฝ๋ก
- [x] GPU radix ์ ๋ ฌ (๋ณด์ด๋ ๊ฒ๋ง, 2026-10-05 โ ์์ง ๊ฒฝ๋ํ ์ฐธ๊ณ )
- [ ] ๊ฐ์ฐ์์ ํฌ์ + ํ๋ฉด๊ณต๊ฐ ๊ณต๋ถ์ฐ (์ปดํจํธ)
- [ ] 16ร16 ํ์ผ binning, ํ์ผ๋ณ ํค ์์ฑ
- [ ] ํ์ผ๋ณ ์ ๋ ฌ + ์ ํ ๋ธ๋ ๋ฉ
- [ ] ๋น๋ณด๋ ๊ฒฝ๋ก์ ์์น ๋น๊ต
### 2c. ๋ฉํฐ๋ทฐ
- [ ] 6๊ฐ ์นด๋ฉ๋ผ ๋์ ๋ ๋๋ง (๋ทฐ๋ณ ๋ทฐํฌํธ, ํ ์ค๋ฒ๋ฉ)
- [ ] ์คํ์คํฌ๋ฆฐ โ PNG/JPEG ๋คํ
- [ ] `nusim render` โ ego ๊ถค์ ์
๋ ฅ โ nuScenes ๋๋ ํฐ๋ฆฌ ํฌ๋งท ์ถ๋ ฅ
**์ฑ๋ฅ ๋ชฉํ.** 6 ร 1600ร900 = 8.6 Mpixel/ํ๋ ์. closed-loop 10 Hz ๋ฅผ ์ํด
ํ๋ ์๋น 100 ms ์์ ๋ค์ด์์ผ ํ๋ค.
---
## ํ์ง ๊ฐ์ ๋ค์ ๋จ๊ณ โ ์กฐ์ฌ ๊ฒฐ๊ณผ (docs/research_gs_2026-10.md)
1. MCMCStrategy + opacity/scale ์ ๊ทํ 2. ํ๋ ๋ถ๋ฆฌ (ํ๋ธ๋งต + ํ๋ ๋ง์คํฌ) 3. antialiased ๋ชจ๋
4. ๋ฐ๋ ์ต์ ์ ๊ทํ + ๋จ์ ๋ฒ์ 5. gsplat ์
๊ทธ๋ ์ด๋ 6. PPISP ์ ๋ณด์
## ์ ์ฒด ๋งต + ํฉ์ฑ ๋ ์จ (2026-10-02 ๊ฒฐ์ )
- ์ฑ๊ฐํฌ๋ฅด **์ฃผ๊ฐ ์ฌ๋ง**(383์ฌ ์ค ์ผ๊ฐ ์ฝ 99ยท์ฐ์ฒ ์ฝ 16 ์ ์ธ)์ผ๋ก ์ ์ฒด ๋งต์ ์ฌ๊ตฌ์ฑํ๋ค. ์ผ๊ฐยท์ฐ์ฒ ์ฌ๊ตฌ์ฑ์
ํ์ง์ด ๋ฎ๋ค (scene-1060 ์คํจ).
- ๋ ์จยท์กฐ๋๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ **ํฉ์ฑ**ํ๋ค: ํ๋ฆผ, ๋น(๋น์ค๊ธฐยท์ ์ ๋
ธ๋ฉดยท๋ ์ฆ ๋ฌผ๋ฐฉ์ธ), ์๊ฐ, ์ด๋์(์ ๋
ยท๋ฐค, ์ ์กฐ๋ฑ).
๋ทฐ์ด ์ **์ฌ๋ผ์ด๋ UI** ๋ก ์ค์๊ฐ ์กฐ์ ํ๊ณ , ๊ฐ์ ๊ฐ์ ๋ช
๋ น์คยท์คํฌ๋ฆฝํธ๋ก๋ ์ค์ VLA ์ํ์ ์ฌํ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
6์บ ๊ด์ธก์๋ ๊ฐ์ ๋ ์จ๊ฐ ๋ค์ด๊ฐ๋ค.
- ์์: ์ผ๊ด ํ์ต ์ ๋ฒ๊ทธ ์์ โ ์ฃผ๊ฐ ์ฌ ์ผ๊ด ํ์ต(GPU) โ ๊ทธ๋์ ๋ ์จ ๋ ๋๋งยทUI ๊ฐ๋ฐ โ ๋งต ๋จ์ ๋ก๋.
### ๊ตฌํ (2026-10-05)
- **์ผ๊ด ์ฌ๊ตฌ์ฑ** `nusim recon batch` โ `outputs/gs_day/<scene>` (์ฌ๋ง๋ค ๋ณ๋ ํ๋ก์ธ์ค, `batch_status.json` ์ผ๋ก
์ด์ด ํ๊ธฐ). ์ฃผ๊ฐ ์ฌ 284๊ฐ(์ค๋ช
์ night/rain ๋ฑ๋ง์ด ์๋ ์ฌ โ ์ฑ๊ฐํฌ๋ฅด ์ฐ์ฒ ์ฌ์ ์ ๋ถ ์ผ๊ฐ), ์ง์ญ ์.
์ค์ : 15k ์คํ
, MCMC, ๋ผ์ด๋ค ๊น์ด 0.1, ํ๊ฒฝ ์ ์ฉ, **ํ๋ ๋ถ๋ฆฌ**. ํ๋์ ๋ถ๋ฆฌํ์ง ์์ผ๋ฉด ํ๋ ์ผ๋ถ๊ฐ ๊ฐ๊น์ด
๋ถํฌ๋ช
๊ฐ์ฐ์์์ผ๋ก ๊ตฌ์์ ธ(scene-0003: 9 m ๊ฑฐ๋ฆฌ์ ๋ฐ์ ๋ฉ์ด๋ฆฌ) ํฉ์ฑ ๋ ์จ์์ ํ๋์ ๋ฐ๊ฟ ์ ์๋ค.
- **ํฉ์ฑ ๋ ์จ** `shaders/weather.comp` โ ๋ ๋ ํจ์ค์ ๊ฑฐ๋ฆฌ ๋์ ์ฒจ๋ถ(์ง๊ธ์ RG32F (ฮฃzฮฑ, ฮฃฮฑ), docs/architecture.md)๋ฅผ ๋ํ๊ณ ,
์ + ๊ฑฐ๋ฆฌ๋ก ํ์ฒ๋ฆฌ: ์๊ฐ๋(๋
ธ์ถยท์์จ๋ยท๋ฐคํ๋), ๊ตฌ๋ฆ(์ฑ๋ยท๋๋นยทํ์ ํ๋), ์ ์กฐ๋ฑ(์์ฐจ ์ ์๋ฟ, ๋ฐ์ฌ์จ = ๋ฎ ์),
๋น(์ ์ ๋
ธ๋ฉด ์ด๋ก๊ฒ + ํ๋ฉด ๊ณต๊ฐ ๋ฐ์ฌ + ๋น์ค๊ธฐ + ๋ฌผ์๊ฐ), ์๊ฐ(๊ฑฐ๋ฆฌ ์ง์ ๊ฐ์ ). ๋๋ฉด ์
๋ ฅ์ ๊ทธ๋๋ก ๋ณต์ฌ โ
์ด์ ๋ ๋์ ๋นํธ ๋จ์๋ก ๊ฐ๋ค. `--weather night` ๊ฐ์ ํ๋ฆฌ์
๋๋ `daylight=,cloud=,rain=,fog=,wet=,headlights=`.
- **์ฌ๋ผ์ด๋ UI** Dear ImGui 1.91.9 (MIT, third_party/imgui) โ ์ฐฝ ์ผ์ชฝ ์ ํจ๋(F1 ์จ๊ธฐ๊ธฐ), ํ๋ฆฌ์
8๊ฐ,
์ฌ๋ผ์ด๋ 5๊ฐ, ์ ์กฐ๋ฑ ์๋/๋/์ผฌ. ํจ๋์ ํ๋ฉด์๋ง ๊ทธ๋ฆฌ๊ณ , 6์บ ๊ด์ธกยทPNG ์๋ ๋ ์จ๋ง ๋ค์ด๊ฐ๋ค.
- ํ๊ณ: 3DGS ์์ ๋ฎ์ ์กฐ๋ช
์ด ๊ตฌ์์ง ์์ด๋ผ ๋ฐคยท์ ์กฐ๋ฑ์ ๊ทธ ์์ ๋ฐ์ฌ์จ ๋์ ์ด๋ค. ๊ตฌ์์ง ๊ทธ๋ฆผ์๋ ํ๋ฆผ์์๋
๋จ๋๋ค. ์ ์ ๋
ธ๋ฉด ๋ฐ์ฌ๋ ํ๋ฉด ๊ณต๊ฐ์ด๋ผ ํ๋ฉด ๋ฐยท๊ฐ๋ ค์ง ๊ฒ์ ๋น์น์ง ์๋๋ค. ๊ฐ๋ก๋ฑ ๊ฐ์ ๋ฐค ๊ด์์ ์์ง ์๋ค.
### ์๋ฒ ์ฌ ์คํจ ์์ธ: ๋น ๋ฅธ ์ฃผํ (2026-10-05)
| ์ฌ | ํ๊ท ์๋ | ๊ฒฝ๋ก | 15k PSNR |
|---|---|---|---|
| scene-0003 | 1.5 m/s | 29 m | 23.66 |
| scene-0184 | 5.6 m/s | 108 m | 17.54 |
| scene-0402 | 11.9 m/s | 235 m | 16.23 |
scene-0402 ๋ฅผ `--time-window` ๋ก ์๋ผ 2k ์คํ
ํ์ต: 2.5์ด 21.75 dB, 5์ด 20.88 dB (default ์ ๋ต 20.45), ์ ์ฒด 20์ด๋ 15.5~16.3 dB.
์ ๋ต(MCMC/default)ยท๊น์ด ๊ฐ๋
ยท์นด๋ฉ๋ผ ๋ณด์ ์ ์์ธ์ด ์๋๊ณ , ์ฅ๋ฉด ๊ธธ์ด๊ฐ ์์ธ์ด๋ค. ํ์ต ์์ค๋ถํฐ ๋์ผ๋(L1 0.135 vs 0.05)
์ผ๋ฐํ๊ฐ ์๋๋ผ ์ ํฉ ์คํจ๋ค. **๋์: ๋น ๋ฅธ ์ฌ์ ์๊ฐ ๊ตฌ๊ฐ(์ฝ 5์ด, 60 m)๋ณ๋ก ๋๋ ์ฌ๊ตฌ์ฑํ๋ค.** ๋งต ๋จ์ ๋ก๋๊ฐ
๊ตฌ๊ฐ์ ์ด์ด ๋ถ์ธ๋ค. ์ผ๊ด ํ์ต(`recon batch`)์ ๊ตฌ๊ฐ ๋ถํ ์ ๋ฃ์ ๋ค ๋ณธ ๋ฐฐ์น๋ฅผ ๋๋ฆฐ๋ค.
### ์ฐจ๋ ๋์ ํ์ต + ์ฅ๋ฉด ๊ฐ์ฒด ์์
(2026-10-06)
๋ฐฉํฅ ์ ํ: ์ฐจ๋์ ์ง์ฐ์ง ์๊ณ **๊ฐ์ฒด ๊ฐ์ฐ์์์ผ๋ก ๋ฐฐ๊ฒฝ๊ณผ ํจ๊ป ํ์ต**ํ๋ค (`nusim recon train --objects vehicles`,
`nusim/recon/objects.py`). ์ฐจ๋ instance ๋ง๋ค ๋ฐ์ค ๋ก์ปฌ ๊ฐ์ฐ์์, ๋ทฐ ์๊ฐ์ ๋ฐ์ค ์์ธ(์ฃผ์ฐจ = ๋ํ ์์ธ, ์์ง์ = ํคํ๋ ์ ๋ณด๊ฐ)๋ก
์ฎ๊ฒจ ๋ฐฐ๊ฒฝ๊ณผ ํ ๋ฒ์ ๋์คํฐํ. ๊ฐ์ฐ์์์ ๊ฐ์ฒด ๋ฒํธ๋ ํ์ต๋ฅ 0 ํ๋ผ๋ฏธํฐ๋ผ gsplat ์ ๋ต(๋ณต์ ยท๋ถํ ยท์ฌ๋ฐฐ์น)์ด ๊ฐ์ด ์ฎ๊ธด๋ค.
์ฌ๋ยท์์ ๊ฑฐ๋ ์์ง ๊ฐ๋ฆฐ๋ค. ์ฐจ๋ ํฝ์
์ ๊น์ด ์์ค์์ ๋บ๋ค (์ ์ ๋ผ์ด๋ค ๊น์ด๋ ์ฐจ ๋ค ๋ฐฐ๊ฒฝ).
| scene-0003, 15k, MCMC + ๊น์ด | ์ ์ฒด ์์ PSNR | ์ ์ PSNR | SSIM |
|---|---|---|---|
| ํ๊ฒฝ ์ ์ฉ (์ฐจ๋ ์ง์) | 21.82 | 23.66 (์ฐจ๋ ๊ฐ๋ฆผ) | 0.764 |
| **์ฐจ๋ ๋์ ํ์ต** | **23.51** | 23.62 (์ฐจ๋ ํฌํจ, ์ฌ๋๋ง ๊ฐ๋ฆผ) | 0.763 |
60k (`_env` ์ ๊ฐ์ ๋ ์ํผ, `outputs/gs/scene-0003_veh60`, 93๋ถ): ์ ์ฒด ์์ **24.78** / ์ ์ 24.97 / SSIM 0.789 โ `_env` 60k ๋ ์ ์ฒด
22.81 / ์ ์ (์ฐจ๋ ๊ฐ๋ฆผ) 25.03. ์ฐจ๋์ ๋ฃ๊ณ ๋ ๋ฐฐ๊ฒฝ ํ์ง์ ๊ฐ๊ณ ์ ์ฒด ์์์ +2.0 dB. (`recon eval` ์ด ๋ฐฐ๊ฒฝ ply ๋ง ๊ทธ๋ ค 21.99 ๋ก
๋์ค๋ ๋ฒ๊ทธ๋ฅผ ๊ณ ์นจ โ `recon.objects.load_objects` ๋ก ์์
์ ๋ค์ ๋ถ์ธ๋ค.)
๋จ, ์ด 60k ๋ชจ๋ธ์ ์ฐจ๋ 35๋ ์ค 17๋๋ง ๋จ์๋ค โ MCMC ์ฌ๋ฐฐ์น๊ฐ ๋ถํฌ๋ช
๋ โค 0.005 ์ธ ๊ฐ์ฐ์์์ ๋ค๋ฅธ ์๋ฆฌ๋ก ์ฎ๊ธฐ๋ฉฐ ๊ฐ์ฒด ๋ฒํธ๋
๊ฐ์ด ์ฎ๊ฒจ, ์ ๊น ๋ณด์ธ ์ฐจ๊ฐ ๊ฐ์ฐ์์์ ๋ค ์์๋ค. ๊ฐ์ฒด ๊ฐ์ฐ์์์ ์ ๋ถ ์งํค๋ฉด(v2, `_veh60p`) ๋ฐ๋๋ก ์ฐจ๋์ด 200๋ง ์ค 178๋ง ๊ฐ
(๋๋ถ๋ถ ฮฑ<0.01)๋ฅผ ๋นจ์๋ค์ด๊ณ ๋ฐฐ๊ฒฝ์ด 22๋ง ๊ฐ๋ก ์ค์๋ค โ ๋ฒ๋ฆฐ๋ค. ๊ทธ๋์ (1) ์ด์ ์๋ ์๊ฐ ์ต์์น(์ด๊ธฐ์ ์ ๋ฐ, ์ต์ 200) ์๋์ธ
์ฐจ๋๋ง ์ฌ๋ฐฐ์น์์ ์งํค๊ณ , (2) ๊ฐ์ฒด ๊ฐ์ฐ์์์ ๋ฐ์ค(+0.15 m) ์์ ๋ฌถ๋๋ค (MCMC ์ก์ยท์ฌ๋ฐฐ์น ๋ค). 3k ์ ๊ฒ: 35๋, ํฉ๊ณ 4.5๋ง,
๋ฐ์ค ๋ฐ ์ต๋ 0.15 m. ์ฌํ์ต `nusim run veh_60k_v3` โ `outputs/gs/scene-0003_veh60c`.
์์ฐจ โ ์ฅ๋ฉด ๊ฐ์ฒด ์ถฉ๋: `drive.hpp` `vehicle_contact(..., others)` โ ๊ฐ์ฒด ๋ฐ์ค์ ๋ฐ๋ฅ ์ฌ๊ฐํ(`Footprint`)์ ์ฐจ์ฒด ์ํ๋ก ๋ณธ๋ค
(์ฅ์ ๋ฌผ ์ง๋๋ ์ฐจ๋์ ์ง์ด ๋ฐฐ๊ฒฝ์ด๋ผ ๋ฐ๋ก). ๊ธฐ๋ก ๊ถค์ ์ ์ฌ์ํ๋ ์ฐจ๋ ํ๋ ์๋ง๋ค ์๋ฆฌ๋ฅผ ๊ฐฑ์ . ์ง์ด ๊ฐ์ฒด๋ ๋น ์ง๋ค. ์์ง ์๋ ์ฐจ๋
๋ฐ์ํ์ง ์๋๋ค (์์ฐจ๊ฐ ๋ฉ์ถ ๋ฟ, ๋ฐ๊ฑฐ๋ ํผํ์ง ์์).
์ฐจ๋ ์์ญ๋ ๋ฐฐ๊ฒฝ๋งํผ ํ์ต๋๋ค (์ ์ PSNR ์ด ์ฐจ๋์ ํฌํจํด๋ ๊ฐ๋ค). ๊ฒฐ๊ณผ: ๋ฐฐ๊ฒฝ `point_cloud.ply` + `objects/<instance>_<์ข
๋ฅ>.ply`
(๋ฐ์ค ๋ก์ปฌ, ๋ฐ๋ฅ ์ค์ ์์ ) + `objects/objects.json` (๋ฒ์ฃผยทํฌ๊ธฐยท๊ถค์ ) โ 31๋.
๋ทฐ์ด `--objects DIR`: ๊ฐ์ฒด ๊ฐ์ฐ์์์ ๋ฐฐ๊ฒฝ๊ณผ ๋ค๋ฅธ ๋ฒํผ, ๊ฐ์ฒด ํ(SSBO)๋ก ํ๋ ์๋ง๋ค ์์ธ โ ์ถ๊ฐยท์ญ์ ๋ ๋ฐฐ๊ฒฝ์ ๋ค์ ์ฌ๋ฆฌ์ง ์๋๋ค
(`src/vkgs/src/scene_objects.hpp`). **K** ๊ฐ์ฒด ์ฐฝ โ ํธ์ง ๋ชจ๋: ํด๋ฆญ ์ ํ(๋
ธ๋ ๋ฐ์ค), ๋๋๊ทธ ์ด๋, ํ ํ์ , Delete ์ญ์ ,
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์
์ถ๊ฐ(ํด๋ฆญํ ์ง๋ฉด), ์ ์ฅ(`objects.json`, ์๋ณธ์ `objects.orig.json`). `render view`ยท`aug rig` ๋ ๋ชจ๋ธ์ `objects/`
๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก ๋๊ธด๋ค. ์์ ์ฆ๊ฐ(`outputs/aug/rig_veh`)์ ์ฐจ๋์ด ์ ์๋ฆฌ์ ๋์จ๋ค.
๋จ์ ๊ฒ: ์์ฐจ์ ๊ฐ์ฒด ๋ฐ์ค ์ถฉ๋, ๊ฐ์ฒด๋ฅผ ์ฐจ์ ๋ฐ๋ผ ์์ง์ด๊ธฐ(์ง๊ธ์ ๊ธฐ๋ก ๊ถค์ ยท๊ณ ์ ), ์ฌ๋(๋น๊ฐ์ฒด), ๊ฐ์ฒด ํฌ์ฆ ๋ณด์ ํ์ต.
### ๋ฉํฐ ์ฃผํ ํ์ผ (2026-10-06)
๊ฐ์ ๊ณณ์ ์ฌ๋ฌ ๋ ์ฌ๋ฌ ์ฐจ์ ์ผ๋ก ์ง๋๊ฐ ์ฃผํ์ ํ ๋ชจ๋ธ๋ก ํ์ตํ๋ค (`nusim recon train <anchor> --tile <์ด๋ฆ>`,
`nusim/recon/tile.py`, ํ์ผ ์ ์ `configs/tiles/*.json`). ์์ฐจ๊ฐ 80 m ์ ์ฌ๊ฐํ ์์ ์๋ ์๊ฐ ๊ตฌ๊ฐ๋ง ์ฐ๊ณ , ์์ ์ anchor ์ฌ
๊ฒ์ด๋ผ ๋จ์ผ ์ฌ ๋ชจ๋ธ๊ณผ ๊ฐ์ ์ขํ๋ค. ๊ธฐํ๋ ๊ณต์ , ์ ๋ณด์ ยท์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ณด์ ์ ์ฃผํ๋ณ (cam_id = ์ฃผํ ร 6 + ์นด๋ฉ๋ผ;
`camera_adjust.pt` ๋ ๊ธฐ์ค ์ฃผํ 6๋๋ง โ ๋ทฐ์ด ํธํ, ์ ์ฒด๋ `camera_adjust_tile.pt`). ๋ค๋ฅธ ๋ ์ ์ฃผ์ฐจ ์ฐจ๋์ด ๋ฌ๋ผ `--objects agents`
๋ง ์ง์ํ๋ค.
ํ๊ฐ `nusim recon tile-eval <ํ์ผ> --dir A --dir B`: ํ์ต์์ ํต์งธ๋ก ๋บ ์ฃผํ์ ์ค์ ์ฌ์ง = ์ค์ ์ฐจ์ ๋ณ๊ฒฝ ์์ ์ ์ ๋ต.
์ธ๊ด(๋ ยท์๊ฐ)์ด ๋ค๋ฅด๋ฏ๋ก ์ด๋ฏธ์ง๋ง๋ค 3ร4 ์ ์ํ์ ๋ง์ถ ๋ค PSNRยทSSIM (์ฌ๋ยท์ฐจ๋ ๊ฐ๋ฆผ, 30% ๋ฏธ๋ง๋ง ๋จ์ ๋ทฐ๋ ์ ์ธ โ ์ 2~4 m ์
์ฃผ์ฐจ ์นํฉ์ฐจ๊ฐ ์ธก๋ฉด ์นด๋ฉ๋ผ๋ฅผ ๋ค ๊ฐ๋ฆฐ๋ค). ํ์ต ์นด๋ฉ๋ผ์์์ ๊ฑฐ๋ฆฌ๋ณ๋ก๋ ๋๋๋ค.
scene-0003 ํ์ผ (`onenorth_0003`): ๋ฎ ์ฃผํ 17๊ฐ๊ฐ ์ง๋๊ฐ๋ค. ํ์ต 6๊ฐ(0003ยท0120ยท0045ยท0134ยท0968ยท0133, 6,551๋ทฐ), ํ๊ฐ 2๊ฐ
(0127 3.9 m ์, 0969 4.1 m ์). ์ ๊ฒ(2์ฃผํ 300์คํ
, 0127): ํ์ผ 16.79 dB vs ๋จ์ผ ์ฌ `_env` 60k 15.95 dB โ ์ฝ๋ ์ ๊ฒ์ผ ๋ฟ.
๋ณธ ์คํ `nusim run tile_0003` (150k).
**๊ฒฐ๊ณผ (2026-10-07): ์คํจ, ์์ธ ๋ฏธํ์ โ ๋ณด๋ฅ.** 150k ํ์ผ ๋ชจ๋ธ์ ์๊ธฐ ์ฃผํ ํ๊ฐ ๋ทฐ์์๋ 16.9 dB (์ ๋ณด์ ์์ด 6.9 dB โ
์ ๋ณด์ ์ด ๊ธฐํ ๋์ ๋ง์ถ๊ณ ์์๋ค), ์ฐจ์ ๋ณ๊ฒฝ ์์ 376๋ทฐ์์ 15.86 dB ๋ก ๋จ์ผ ์ฌ(`_env` 16.46, `_veh60c` 16.52)๋ณด๋ค ๋ฎ๋ค.
๋ ๋๋ ๋จ์ ๋ง์ด๋ ์ฌํ ๋ฒ์ง. ํ์ธํ ๊ฒ:
- ๊ธฐ์ค ์ฌ 0003 ์์ธ๊ฐ ๋ค๋ฅธ ์ฃผํ ๋๋น yaw 1.3ยฐยทroll 1ยฐ ์ด๊ธ๋จ โ ์ฃผํ๋ณ ๋ผ์ด๋ค ICP ์ ํฉ(`align.json`, 17โ27 cm โ 9โ12 cm)์ผ๋ก ๊ณ ์นจ. ๊ฒฐ๊ณผ๋ ๊ทธ๋๋ก.
- ์ฃผํ 1๊ฐ ํ์ผ = ์ผ๋ฐ ํ์ต (3k: 19.8 vs 19.6), ์ฃผํ 2๊ฐ ์ ์ (18.2/18.9). 6๊ฐ๋ฉด 3k ์คํ
์ดํ ๊ณ์ ๋ฌด๋์ง๋ค.
- 10 m ๋๋ ๊ฑฐ๋ ๊ฐ์ฐ์์์ด ํ๋์ ํก์ โ ํ๋ ๋ถ๋ฆฌ๋ฅผ ํ์ผ์ ์ฐ๊ฒฐ. ์ฌ์ ํ ๋ฌด๋์ง.
- ์ ๊ทํ ๋ฒ์ ์ ๋ชจ๋ ๊ฐ์ฐ์์์ ๊ฑธ๋ฉด ๋์ ํ์ผ์์ 63% ๊ฐ ์ฃฝ๋๋ค โ ๋ณด์ด๋ ๊ฒ๋ง ๋ฒ์ (2k 19.2 dB ๋ก ๊ฐ์ ). ๊ทธ๋๋ 3k ์ดํ ํ๋ฝ.
- ์ฅ๋ฉด ํฌ๊ธฐยทSH ์ฐจ์ยท์นด๋ฉ๋ผ ๋ณด์ ยท๊น์ด ์ฌํฌ์์ ์์ธ ์๋. ๋จ์ ์์ฌ: ์ ๋ณด์ ์ ๋ทฐ๋ณ ๋ฐ๊ธฐ ํญ, ๊น์ด ๊ฐ๋
.
### ๋งต ์ ์ฒด ์์ ๋ณํ ์ฆ๊ฐ (2026-10-08)
๋ฐฉํฅ: ํ์ผ์ ๋ณด๋ฅํ๊ณ ๋ฎ 284์ฌ ์ ์ฒด๋ฅผ ์์ ๋ณํ์ผ๋ก ์ฆ๊ฐํด ์ฑ๊ฐํฌ๋ฅด ๋ฎ ๋งต ์ ์ฒด๋ฅผ ๋ฎ๋๋ค. `nusim run day_map`:
1. `recon batch` โ ์ด๋ ๊ฑฐ๋ฆฌ 60 m ๋๋ ์ฌ์ ๊ฐ์ ๊ธธ์ด ๊ตฌ๊ฐ(๊ฒน์นจ 10 m)์ผ๋ก ๋๋ `--time-window` ํ์ต
(`plan_segments`, ๊ฒฐ๊ณผ `outputs/gs_day/<scene>/seg<k>/` + `segment.json`). 284์ฌ โ 696 ํ์ต ๋จ์. init.ply ๋ ํ์ต ๋ค ์ง์ด๋ค.
2. ์ฌ์ ๊ตฌ๊ฐ์ด ๋ค ๋๋๋ฉด `aug map <scene>` โ CAM_FRONT ํ๋ ์๋ง๋ค ๊ทธ ์๊ฐ์ '๋งก๋' ๊ตฌ๊ฐ(๊ฒน์นจ ๊ฐ์ด๋ฐ์์ ์๋ฅธ, ๊ฒน์น์ง ์๋
๊ตฌ๊ฐ)์ ๋ชจ๋ธ๋ก ๋ ๋. ๋ ์จ ์๋ ๋ณํ 9์ข
, ํคํ๋ ์ 2 Hz, ์ง์ด ์ฐจ๋์ glTF ๋ก ๋ค์ (IBL ์์ผ๋ฉด ๊ตฝ๋๋ค) โ `outputs/aug/map/<scene>/<variant>/`.
๋ณํ 1๊ฐ = ์ฝ 6.8๋ง ์ฅ, 9์ข
์ฝ 135 GB. scene-0003 ๋ณํ ํ๋ 20์ด.
- ์๋ฒ scene-0402 (11.9 m/s, 235 m โ 5๊ตฌ๊ฐ): ์ ์ PSNR 23.78 / 22.76 / 23.04 / 23.02 / 22.70 dB (์ฌ ํต์งธ 16.23), ๊ตฌ๊ฐ๋น ์ฝ 20๋ถ.
์ฆ๊ฐ left_1m ์ ๊ตฌ๊ฐ ๊ฒฝ๊ณ ํ๋ ์ 4์์ ์ยท๊ธฐํ ์ด์๋งค๊ฐ ๋ณด์ด์ง ์๋๋ค. ๊ตฌ๊ฐ ๋ชจ๋ธ์ IBL ์ ๊ทธ ํ์ต ๊ตฌ๊ฐ์ผ๋ก ์๋ฅธ ์ฌ์ผ๋ก ๊ตฝ๋๋ค
(์ ๋ณด์ ํฌ๊ธฐ๊ฐ ๊ตฌ๊ฐ ๋ทฐ ์).
- 2026-10-09 23:19 ์์๋ฅผ ๋๋ก ์ปค๋ฒ๋ฆฌ์ง ์ฐ์ ์ผ๋ก ๋ฐ๊ฟ ๋ค์ ์์ (`--order coverage`, `coverage_order`): ๊ทธ๋๊น์ง ํ์ต ๋จ์ 83/696,
๋๋ก 10 m ์นธ 2,432๊ฐ ์ค 17%. ๋จ์ ์ฌ์ ์ ๋๋ก๋ฅผ ๋ง์ด ๋ฎ๋ ์์ผ๋ก ํ๋ฉด ํ์ต ๋จ์ ์ฝ 317๊ฐ(์ฝ 5์ผ)์ 90%, 470๊ฐ(์ฝ 7.5์ผ)์ 100%.
๋ผ์ด๋คยท๋ ์ด๋ ํฉ์ฑ์ ์ฌ์ฉ์ ๊ฒฐ์ ์ผ๋ก ๋ณด๋ฅ (์นด๋ฉ๋ผ๋ง ์ ์ง).
- 2026-10-10 18:44 ๋ถํฐ ์ฝ 40๋ถ ๋ฐ์ดํฐ์
NAS ๊ฐ Input/output error โ ๋จ์๋ง๋ค 13์ด ๋ง์ ์คํจํ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ 178 ๋จ์(์ฝ 55์ฌ)๊ฐ
์คํจ๋ก ๋จ์๋ค (scene-0378 seg0 ์ ํ์ต์ ๋๋๋ฐ ํ๊ฐ๊ฐ nan). `recon batch` ๋ฅผ ๊ณ ์ณค๋ค: ๋จ์ ์์ ์ ๋ฐ์ดํฐ์
์ด ์ฝํ๋์ง ๋ณด๊ณ ์ ์ฝํ๋ฉด
๊ธฐ๋ค๋ฆฌ๊ณ , I/O ์ค๋ฅ๋ก ์คํจํ ๋จ์๋ ๊ธฐ๋ค๋ ธ๋ค ์ต๋ 3๋ฒ, ํ๊ฐ๊ฐ ๋น ๋จ์๋ ํ๊ฐ๋ง ๋ค์, ํ ๋ฐํด ๋ค ์คํจ๊ฐ ๋จ์ผ๋ฉด ๊ทธ๊ฒ๋ง ๋ค์ ๋๋ค.
- ๋ณธ ๋ฐฐ์น ์์ 2026-10-08 15:12 (`setsid nohup nusim run day_map`, ๋ก๊ทธ `outputs/gs_day/batch.log`).
- **๋ณธ ๋ฐฐ์น ์๋ฃ 2026-10-27 02:44** (์ฌ๊ฐ๋ถ ํฌํจ 242์๊ฐ): ๋ฎ 284์ฌ ์ ๋ถ ยท ๊ตฌ๊ฐ 696๊ฐ ์คํจ 0 ยท ๋๋ก ์ปค๋ฒ๋ฆฌ์ง 100% (10 m ์นธ 2446/2446)
ยท ์ ์ PSNR ํ๊ท 25.0 dB, 22 dB ๋ฏธ๋ง 43๊ตฌ๊ฐ. ArtiFixer ์ฆ๊ฐ 284์ฌ (์ฐฝ ๋ทฐ์ด๊ฐ VRAM ์ ์ก์ ๋์ 13์ฌ์ด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ โ ๋ฐฐ์น ๋ค ์ฌ์คํ).
์ฐ์ถ๋ฌผ `outputs/gs_day` 333 GB ยท `outputs/aug` 132 GB. ๊ทธ๋ฆผ `outputs/coverage/map_coverage_20261029.png` (`scripts/map_coverage.py`).
- **๊ตฌ๊ฐ ์ด์ด ๋ฌ๋ฆฌ๊ธฐ (๋งต ๋ก๋ 1์ฐจ, 2026-10-09):** `nusim render view <scene>` ์ด ๊ตฌ๊ฐ์ผ๋ก ๋๋ ์ฌ(`outputs/gs_day/<scene>/seg*`)์
์์๋ณด๊ณ `<scene>/` ์ ๊ณตํต ์์ (๊ตฌ๊ฐ 0) ๊ธฐ์ค ๋ฆฌ๊ทธยท๋งต ์ ยท์ฃผํ๊ฐ๋ฅ์์ญยท์ฅ์ ๋ฌผ ์ง๋์ `segments.txt`(๊ตฌ๊ฐ๋ณ ์์ ์ฐจ์ดยท๋งก๋ ๊ถค์ ์ )๋ฅผ
์ด๋ค (`nusim/render/segmap.py`). ๋ทฐ์ด `--segments` (`src/vkgs/src/segment_map.hpp`, viewer.cpp `SegmentStreamer`)๋ ์์ฐจ ์์น์์
๊ฐ์ฅ ๊ฐ๊น์ด ๊ตฌ๊ฐ ํ๋๋ฅผ ๊ทธ๋ฆฌ๊ณ (3 m ํ์คํ
๋ฆฌ์์ค), ์ด์ ๊ตฌ๊ฐ ply ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์ฝ์ด ๋์๋ค๊ฐ ๊ฒฝ๊ณ์์ GPU ๋ฒํผ ๋ด์ฉ๋ง
๋ฐ๊พผ๋ค (๋ฒํผ๋ ๊ฐ์ฅ ํฐ ๊ตฌ๊ฐ ํฌ๊ธฐ๋ก ํ ๋ฒ ์ก์). ๋ ๊ตฌ๊ฐ์ ๊ฐ์ด ๊ทธ๋ฆฌ์ง ์๋๋ค โ 10 m ๊ฒน์นจ์ด ๊ฒฝ๊ณ ์์ชฝ์ ๋ฎ๋๋ค.
scene-0402 ์ ์ฒด 238ํ๋ ์ ์คํ์คํฌ๋ฆฐ: ๊ตฌ๊ฐ 4๋ฒ ๋ฐ๋, ๊ฒฝ๊ณ ์๋ค ํ๋ ์ ์ด์๋งค ์์. ๋ฐ๊ฟ ๋ 0.19์ด ๋ฉ์นซ (480 MB ์
๋ก๋ + ์ฅ์น ๋๊ธฐ),
ply ์ฝ๊ธฐ ์ฝ 2.7์ด (12 m/s ๋ก ํ ๊ตฌ๊ฐ ์ฝ 4์ด๋ผ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ๊ฐ ๋ฐ๋ผ๊ฐ๋ค). ์คํ์คํฌ๋ฆฐ ๋ฆฌ๊ทธ ๋ ๋๋ ํ๋ ์๋ง๋ค ๊ทธ ๊ตฌ๊ฐ์ผ๋ก ๊ทธ๋ฆฐ๋ค.
๋ค์: ๋ ๋ฒํผ๋ก ๋ฉ์นซ ์์ ๊ธฐ, ์ฌ ์ฌ์ด(๋ค๋ฅธ ์ฃผํ) ์๊ธฐ โ ์ฌ๋ฌ ์ฌ์ ๊ฐ์ ๋ฐฉ์์ ๋ชฉ๋ก ํ๋๋ก.
- **์ง์ญ ๋งต (๋งต ๋ก๋ 2์ฐจ, 2026-10-10):** `nusim render map <location>` (`nusim/render/regionmap.py`) โ ๊ทธ ์ง์ญ์์ ํ์ต๋ ๋ชจ๋ ์ฌ์
๊ตฌ๊ฐ์ ๊ณตํต ์์ (์ถ๋ฐ ์ฌ ์ฒซ ๊ตฌ๊ฐ) ๊ธฐ์ค segments.txt ํ๋๋ก ์๋๋ค. ๋ทฐ์ด๋ ๊ฐ๊น์ด ๊ตฌ๊ฐ 3๊ฐ๋ฅผ ์์น๋ก ๋ฏธ๋ฆฌ ์ฝ๋๋ค (๋ชฉ๋ก ์์๊ฐ ๊ธธ ์์
์ด์์ด ์๋๋ฏ๋ก). ๋งต ์ ์ ์ง์ญ ์ ์ฒด + ์ฌ๋ง๋ค ์์ฐจ ๊ถค์ (= ๋งต์ด ์๋ ๊ณณ). ์ฒซ ์คํ: one-north 38์ฌ ยท 99๊ตฌ๊ฐ. ์ฅ์ ๋ฌผ ์ง๋ ยท ๋ณต์
์๋๋ ์์ง
์ง์ญ ๋จ์๊ฐ ์๋๋ผ ์ฐ์ ์ถฉ๋๋ง, ์ผ์ ์์.
- ์ด์ ์๋ฒ ๋ชจ๋ธ(๊ตฌ๊ฐ ๋ถํ ์์, ํ๋ ๋ถ๋ฆฌ ์์)์ `outputs/gs_day_pilot_2026-10-05/` ๋ก ์ฎ๊ฒผ๋ค.
- ํ๊ณ: glTF ์ฐจ๋์ ๋ชจ๋ ๊ฐ์ ๋ชจ๋ธ(CarConcept). ์ 1 m ๋ณํ์ ๋
ธ๋ฉด ๋ฒ์ง์ด ์๋ค (์ฌ์ดํด ๋ฒค์น๋ก ํ์ง ํ์ ์์ ).
### ๋ฐ์ดํฐ์
๋ค์์ฑ ์ฆ๊ฐ (2026-10-05)
**B. 6์บ ์์ ๋ณ๊ฒฝ** โ `nusim aug rig <scene> [--only a,b] [--agents]`. ๋ณํ์ `configs/aug/rig_variants.json` ์ ์๋ค
(์ ์ด๋ยท๋์ดยทํผ์นยท์, ๋ ์จ ์กฐํฉ). ์ฌ ์ธ๋ฑ์ค์ camโego ์บ๋ฆฌ๋ธ๋ง ๋ฐ๊พผ ์ฌ๋ณธ์ผ๋ก `write_rig` โ ์คํ์คํฌ๋ฆฐ ๋ ๋ โ
`outputs/aug/rig/<scene>/<variant>/<CAM>/<์๋ณธ ํ์ผ๋ช
>.jpg` + `meta.json`(๋ฐ๋ calibrated_sensor, ์ฅ๋ง๋ค ์๋ณธ ํ์ผยท์๊ฐยท์์ฐจ ํฌ์ฆ).
scene-0003: ๋ณํ๋น 1,356์ฅ, ์ฝ 75์ด. ์๋๋ก 3ยฐ ๋ ๊นจ๋ํ๋ค. ์ 1 mยท๋์ด +0.4 m ๋ ๋
ธ๋ฉด ๋ฒ์ง๊ณผ floater ๊ฐ ์๊ธด๋ค
(์ ์์ ํ์ง ํ๊ณ โ Difix ์ ์ง ์ฆ๋ฅ๋ก ๊ฐ์ ํ ๊ฒ). ํ๊ฒฝ ์ ์ฉ ๋ชจ๋ธ์ ์ฐจ๋์ด ์์ผ๋ `--agents` ๋ก glTF ์ฐจ๋์ ๋ฃ๋๋ค.
**A. ๋ฐคยท๋น โ ๋ฎ ๋ณํ** โ `nusim aug translate` (CycleGAN-Turbo, BDD100K ์ฌ์ ํ์ต night_to_dayยทrainy_to_clear,
`cache/models/img2img-turbo/fetch.sh`). 8 GB GPU ์์ ํ์ต๊ณผ ๊ฐ์ด ๋๊ฒ ๋ชจ๋ธ์ CPU ์์ ๋ง๋ค์ด fp16 ์ผ๋ก ์ฌ๋ฆฌ๊ณ , ํ ๋ฒ์ ํ๋๋ง ์ด๋ค.
768ร432 ์์ ์ฅ๋น 0.8์ด. **scene-1060 ์์ ์คํจํ๋ค**: nuScenes ์ฑ๊ฐํฌ๋ฅด ๋ฐค ์์์ BDD ๋ณด๋ค ํจ์ฌ ์ด๋์์, ๋ชจ๋ธ์ด ์ผ์
์ก์์ ์ฆํญํด ํ๋ ์ ๋ฐ์ด ์์์ ๋ง๋ ๋ค. ๋นโ๋ง์์ ๋ฐค ์์์ ๋ ์ด๋ก๊ฒ๋ง ํ๋ค. ์ฌ๊ตฌ์ฑ ์
๋ ฅ์ผ๋ก ์ธ ์ ์๋ค.
`recon train --image-root` ๋ ๋ณํ ์์์ผ๋ก ํ์ตํ๋ ๊ฒฝ๋ก๋ก ๋จ๊ฒจ ๋๋ค.
๋ฐค ๊ฒฝ๋ก๊ฐ ๋ฎ ๊ฒฝ๋ก์ ๊ฒน์น๋ ์ ๋ (15 m ์): ๋ฐค 99์ฌ ์ค 90% ์ด์ ๊ฒน์นจ 32, 50% ๋ฏธ๋ง 60. one-north ๋ ๋ฐค 0, queenstown 33,
holland village 66 (๋ฎ์ 19๋ฟ). ๋ฐ๋ผ์ ๋ฎ ๋งต๋ง์ผ๋ก๋ ํ๋๋ ๋น๋ฆฌ์ง ๋๋ถ๋ถ์ด ๋น ์ง๋ค.
### ๋ ์จ v2 (2026-10-05)
- **์๋ ๊ณต๊ฐ ๊ฐ์ ์
์** (`shaders/precip.vert/frag`, ๋ ๋ ๊ทธ๋ํ `precip` ํจ์ค): ํ๋ฉด ๊ณต๊ฐ ๋ฌด๋ฌ๋ฅผ ๋์ ํ๋ค.
์
์๋ ์ํ ์์ด (๋ฒํธ, ์๊ฐ) ํด์๋ก ์์น๊ฐ ์ ํด์ง๊ณ , ์ฌ ์ขํ์ ๊ณ ์ ๋ ์์๋ฅผ ์นด๋ฉ๋ผ ์ฃผ๋ณ์์ ๊ฐ์ ๋๋ฆฐ๋ค.
๊ทธ๋์ 6์บ ์ด ๊ฐ์ ๋น๋ฐฉ์ธ์ ๋ณด๊ณ , ์์ฐจ๊ฐ ์๊ธด๋ค. ๋น์ค๊ธฐ๋ ๋
ธ์ถ ๋์์ (๋ํ + ๋ฐ๋ โ ์์ฐจ ์๋) ์๋ ์ด๋์ด๋ผ
๋ฌ๋ฆฌ๋ฉด ๊ธฐ์ด๋ค. ๊ฐ๊น์ด ์
์๋ ์ด์ ์ด ํ๋ฆฌ๋ค. ๊ฑฐ๋ฆฌ ๋ฒํผ๋ก ์ฅ๋ฉด์ ๊ฐ๋ ค์ง๊ณ , ์ ์กฐ๋ฑยทํ๋๋น์ ๋ฐ๊ณ , ์๊ฐ๋ก ๊ฐ์ ํ๋ค.
๋น 8๋งยท๋ 12๋ง ๊ฐ์ 0.05 ms.
- **์ ์ ๋
ธ๋ฉด**: ์ด๋์์ง๊ณผ ์ฑ๋ ์์น(LeknerโDorf ๊ทผ์ฌ), ๊ฐ ์ก์ ๋ฌผ์
๋ฉ์ด(๊ฑฐ์ธ ๋ฐ์ฌ), ๋น๋ฐฉ์ธ ํ๋ฌธ(๋ฒ์ ๊ต๋),
์ ์กฐ๋ฑ ์ ๋ฐ์ฌ ๊ผฌ๋ฆฌ.
- **๋์ด ์๊ฐ**(ํด์์ ๊ดํ ๊น์ด) + ํด ์ชฝ ์ ๋ฐฉ ์ฐ๋(HG) + **๋ณผ๋ฅ๋ฉํธ๋ฆญ ์ ์กฐ๋ฑ**(์์ 12๊ฑธ์ ์ ๋ถ).
- **๋ ์ฆ ๋ฌผ๋ฐฉ์ธ**: ๋ค์งํ ์์ ๊ตด์ ํด ๋ณด์ฌ ์ฃผ๊ณ , ๋ฐ๊ธฐ๋ ์ฃผ๋ณ์ ๋ง์ถ๋ค.
- ์กฐ์ ๊ฐ์ `configs/sim.json` `weather.fx` ์ ์๋ค. ๋์กฐํ๋ `cache/weather_sheet.sh <๋ชจ๋ธ> <out.jpg>` ๋ก ๋ง๋ ๋ค.
- ๋จ์ ๊ฒ: ํ๋์ ๋ถ๋ฆฌํ์ง ์์ ๋ชจ๋ธ(`_depth`)์ ํ๋์ด 3DGS ํฐ ๋ฉ์ด๋ฆฌ๋ผ ๋ฐค์๋ ๋ฐ๋ค. ํ๋ ๋ถ๋ฆฌ ๋ชจ๋ธ
(`day_map` ํ๋ฆฌ์
)์ด๋ฉด ์๋ฎฌ ํ๋๋ก ๋ฐ๋๋ค. ๋ ์์์ 3DGS ๊น์ด ์ก์ ๋๋ฌธ์ ๋
ธ๋ฉด์ ์ผ๋ฃฉ์ด ์๊ธด๋ค.
๊ฐ๋ก๋ฑ ๊ฐ์ ๋ฐค ๊ด์์ ์์ง ์๋ค.
### ์์ง ๊ฒฝ๋ํ (2026-10-05)
ํจ์ค๋ณ GPU ์๊ฐ(`--offscreen` ๋์ ์ถ๋ ฅ, F2 ์ฐฝ)์ ์ฌ ๋ณด๋ bitonic ์ ๋ ฌ์ด ํ๋ ์์ 58% ์๋ค.
| | ์ | ํ |
|---|---|---|
| ์ ๋ ฌ | bitonic, ๊ฐ์ฐ์์ ์ ์ฒด 2^21, 231 ๋์คํจ์น โ 31~35 ms | ๋ณด์ด๋ ๊ฒ๋ง ์์ถ + GPU radix (8๋นํธ ร 4ํจ์ค, subgroup ballot ์์ scatter) โ 2.7 ms |
| ๋์คํฐ | RGBA32F ๋ธ๋ ๋ฉ 21.6 ms | RGBA16F 15.9 ms (32๋นํธ ๋๋น PSNR 64 dB). ๊ฑฐ๋ฆฌ ๋์ ์ r32f ์ ์ง (r16f ๋ ์ ์ ๋
ธ๋ฉด ๋ฐ์ฌ์์ ์ต๋ 80/255 ์ฐจ์ด) |
| AA | ์์ | FXAA ์ปดํจํธ 0.08 ms + ๋ณต์ฌ 0.06 ms (๋ฉ์ยท์ ๊ฐ์ฅ์๋ฆฌ). MSAA ๋ ์คํ๋ซ ๋ธ๋ ๋ฉ์ ์ํ ์๋ฐฐ๋ก ๋๋ ค ์ฐ์ง ์๋๋ค |
(GPU ๋ฅผ ํ์ต๊ณผ ๋๋ ์ด ์ํ์ ์ธก์ ์ด๋ผ ์ ๋๊ฐ์ ํฌ๋ค.) Deferred shading ์ ๋์
ํ์ง ์์๋ค. ์กฐ๋ช
ํจ์ค(๋ ์จ,
๊น์ด ๋ฒํผ ๊ธฐ๋ฐ ํ๋ฉด ๊ณต๊ฐ ์กฐ๋ช
โ ์ฌ์ค์ deferred)๊ฐ 0.1~0.5 ms ๋ผ ์ฑ๋ฅ ์ด๋์ด ์๋ค. ๊ด์์ด ๋ง์์ง๋ฉด(๊ฐ๋ก๋ฑยท๋ค๋ฅธ
์ฐจ ์ ์กฐ๋ฑ) G-๋ฒํผ ๋ฒ์ (๋ฉ์)๊ณผ ํด๋ฌ์คํฐ ์กฐ๋ช
์ผ๋ก ํ์ฅํ๋ค.
### ์ฌ์ดํด ๋ ๋ ๋ฒค์น๋งํฌ (OneFixer ๋ถ๋ก A.1 ๋ฐฉ์)
`nusim recon cycle <scene>`: ๋ชจ๋ธ B ๋ฅผ ํ์ต ์์ ์์ ์์ผ๋ก 1 m ์ฎ๊ฒจ ๋ ๋ โ ๊ทธ ๋ ๋๋ก ๋ชจ๋ธ C ํ์ต โ C ๋ฅผ ์๋
๊ธฐ๋ก ์์ ์์ ๋ ๋ํ๋ฉด '1 m ๋ฒ์ด๋ ์ ์์ ' ์ด๊ณ ๊ทธ ์๋ฆฌ ์ค์ ์ฌ์ง์ด ์ ๋ต์ด๋ค. `bench/` ์ ๋ ๋ยท์ ๋ตยท๋์
๋ถํฌ๋ช
๋ยท๊ฐ๋ฆฐ ๊ฐ์ฒด ๋ง์คํฌยท์ด์ ํ๋ ์ ์ฐธ์กฐ ์ฌ์ง. `nusim recon bench` ๋ก PSNRยทSSIMยทLPIPSยทDISTS (๊ฐ๋ฆฐ ๊ฐ์ฒด ์์ญ์
์ ๋ต์ผ๋ก ์ฑ์ด ๋ค). `--run-difix` ๋ Difix ์ ์ฒด ๋ณด์ ๊ณผ ์ ๋ขฐ๋ ๋ง์คํฌ(๋์ ๋ถํฌ๋ช
๋) ๋ธ๋ ๋ฉ์ ๋น๊ตํ๋ค.
**์์ (2026-10-06 ๊ฒํ ):** ์ฒซ ๋ฒค์น(scene-0003)์์ +Difix ๊ฐ LPIPS 0.391 โ 0.162 ๋ก ์ค์ ์ฌ์ง ํ์ต ๋ชจ๋ธ(0.338)๋ณด๋ค๋ ์ข๊ฒ ๋์๋ค.
์์ธ์ ์ฐธ์กฐ ์ฌ์ง์ด '๊ฐ์ ์นด๋ฉ๋ผ์์ ์๊ฐ์ด ๊ฐ์ฅ ๊ฐ๊น์ด ํ์ต ํ๋ ์' ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ๋๋ฆฐ ์ฌ์์๋ ์ ๋ต ์์น์์ 0.13 m ๋จ์ด์ง, ์ ๋ต๊ณผ ๊ฑฐ์ ๊ฐ์
์ฌ์ง์ด๋ผ Difix ๊ฐ ์ ๋ต์ ๋ฒ ๊ผ๋ค โ **๊ทธ ์์น๋ ๋ฌดํจ**. ์ด์ ์ฐธ์กฐ๋ ์ด๋ ๊ฑฐ๋ฆฌ(1 m) ์ด์ ๋จ์ด์ง ํ์ต ํ๋ ์ ๊ฐ์ด๋ฐ ์๊ฐ์ด ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ด๋ค
(์ค์ ์ฌ์ฉ: ์ฐจ์ ์ ์ฎ๊ธด ์์ ์์ ์ฐธ์กฐ๋ 1 m ๋จ์ด์ง ๊ธฐ๋ก ์ฌ์ง). ๋ค์ ์ด ๊ฒ.
### ๋ ์ด์บ์คํธ ์ผ์ โ ๋ผ์ด๋คยท๋ ์ด๋ (2026-10-09)
์ฌ์ฉ์ ์์ฒญ: ์ผ์ ๋ฐ์ดํฐ๋ฅผ '๋ ๋๋ง' ํ๋ ๊ฒ ์๋๋ผ ์นด๋ฉ๋ผ์ฒ๋ผ ์๋ฎฌ๋ ์ดํฐ์ ์ผ์๋ฅผ ๋ถ์ธ๋ค (CARLA ray-cast ์ผ์ ๋ฐฉ์).
- ์ค์ `configs/sim.json` `sensors`: LIDAR_TOP (HDL-32E ๊ทผ์ฌ: 32์ฑ๋, โ30.67~10.67ยฐ, 0.33ยฐ, 70 m) + RADAR_* 5๋ (ARS 408 ๊ทผ์ฌ:
120ยฐร10ยฐ, 1ยฐ, 120 m, ์ต๋ 125์ , ๋
ธ๋ฉด ๋ฐ์ฌ ๋ฒ๋ฆผ, ๋ํ๋ฌ vrยท์์ฐจ ์ด๋ ๋ณด์ ์๋). ์ฅ์ฐฉ ์์น๋ nuScenes ๋ฐฐ์น ๊ทผ์ฌ.
- ๊ธฐํ = **๋ณต์
์๋** `world.vox` (`nusim/sim/voxels.py`): ์ ์ ๋ผ์ด๋ค ๋์ , ์ง๋ฉด์ 0.5 m ๋์ด ์ง๋(์ฒซ ๋นฝ๋นฝํ ์ธต, ์ด์ค ์ ํ ๊ต์ฐจ),
์ง๋ฉด ์ ๊ฒ์ 0.2 m ๋ณต์
. **๋น ๊ณต๊ฐ ๊น๊ธฐ**(`src/vkgs/src/voxcarve.cpp`, ๋น์ด ์ง๋๊ฐ ํ์ ๋๋น ๋ถ๋ชํ ๋น์จ < 0.2 ์ธ ์นธ ์ ๊ฑฐ) โ
์ง์ด ์ฐจ๋์ ์ด๊ธ๋ ์กฐ๊ฐ์ด ์ฐจ์ ์ ๋ฐ๋ผ ์ง๋ฉด ์ 0.3~1 m ์ ์์ฌ ์์๋ค. + ์ฅ๋ฉด ๊ฐ์ฒด ์์ (์ฐจ๋, ์๋).
- ์์ฐจ๋ฅผ ๋
ธ๋ฉด์ ์ํ(zยทpitchยทroll, ๋ค ๋ฐํด ์๋ฆฌ ์ง๋ฉด ๋์ด) ์๋ค.
- ์ค์ nuScenes ๋ผ์ด๋ค์ ๊ฐ์ ๋ฐฉํฅ(๊ณ ๋ 0.67ยฐยท๋ฐฉ์ 0.5ยฐ ์นธ)์ ๊ฑฐ๋ฆฌ ๋น๊ต (6 sweep):
| | ์ค์ธก ์ผ์ ์์ธ | ์๋ฎฌ ์์ธ (๋
ธ๋ฉด์ ์ํ) |
|---|---|---|
| scene-0402, ์ฒ์ (๋ณต์
์ง๋ฉด, ๊น๊ธฐ ์์) | โ1.24 m, 24% | โ |
| scene-0402, ๋์ด ์ง๋ + ๊น๊ธฐ 0.2 | โ0.12 m, 5.9% | โ0.18 m, 5.9% |
| scene-0003 | โ0.07 m, 3.6% | +0.02 m, 3.9% |
(๊ฑฐ๋ฆฌ ์ฐจ ์ค์๊ฐ, ์๋ ์ค์ฐจ ์ค์๊ฐ.) ๋จ์ ์ค์ฐจ: ๋๋ฌด ๊ฐ์ ์ฑ๊ธด ๋ฌผ์ฒด, 0.2 m ๋ณต์
๋ฉด, ๋ผ์ด๋ค ์ธ๊ธฐ๋ ์๋ค(๊ฑฐ๋ฆฌ๋ก ๊ทผ์ฌ).
- ๋ทฐ์ด: `--voxels` (render view ๊ฐ ์๋), ์ฐฝ์ '์ผ์' ํจ๋์์ ๋ผ์ด๋ค(๋์ด ์)ยท๋ ์ด๋(๋นจ๊ฐ ๋ค๊ฐ์ดยทํ๋ ๋ฉ์ด์งยท๋
ธ๋ ์ ์ง) ๋ณด๊ธฐ,
O(6์บ ๊ด์ธก ์ ์ฅ)์ `LIDAR_TOP.bin` (nuScenes .pcd.bin ํ์, ์ผ์ ์ขํ x ์ยทy ์ผ์ชฝยทz ์) + `RADAR_*.txt`. ๋ผ์ด๋ค ํ ๋ฐํด ์ฝ 4 ms.
- ๋ค์: ์ฅ๋ฉด ๊ฐ์ฒด์ ์ค์ ๋์ดยท์๋ (์ง๊ธ 1.6 mยท์ ์ง), ์ฅ์ ๋ฌผ ์ง๋์๋ ๋น ๊ณต๊ฐ ๊น๊ธฐ ์ ์ฉ (๋ณด์ด์ง ์๋ ์ฅ์ ๋ฌผ์ ๊ฐ์ ์์ธ).
### 3์ธ์นญ ๋
ธ์ด์ฆ โ ์์ฐจ ๋์ด ๋ณต์ ยท ArtiFixer ๋๋จน์ ยท EMA (2026-11-05)
์ฌ์ฉ์ ๋ณด๊ณ : ๋ทฐ์ด์์ ๋๋กยท๊ฑด๋ฌผ์ด ๊ฐ์ฐ์์ ๋
ธ์ด์ฆ์ฒ๋ผ ๋ณด์ธ๋ค. ์์ธ ์
.
1. **nuScenes ego_pose ์ z ๋ ํญ์ 0** (ํผ์นยท๋กค์ ์๋ค). ์ค๋ฅด๋ง์์ ์ฐจ๊ฐ ๊ธฐ์ด ์ฑ ๊ฐ์ ๋์ด์ ๋จธ๋ฌด๋ ์
์ด๋ผ ํ๋ ์๋ผ๋ฆฌ
๊ธฐํ๊ฐ ์ด๊ธ๋๋ค. `SceneIndex.with_ego_heights` (`nusim/data/rig.py ego_heights` โ ์ ๋ฐฉํฅ ๊ธฐ์ธ๊ธฐ dz/ds ๋ฅผ ์ํ ์ด๋์ผ๋ก
์ ๋ถ, ์นด๋ฉ๋ผยท๋ผ์ด๋คยท๋ฐ์ค๋ฅผ ๊ฐ์ ์๊ฐ ๋์ด๋งํผ ์ฌ๋ฆผ). ํ์ต ์ต์
`--ego-z pitch` (report `ego_z`, `_model_data` ๊ฐ ๋ฐ๋ฅธ๋ค).
- ๋ฎ ๋งต 628๊ตฌ๊ฐ: ๊ตฌ๊ฐ ๋์ด ๋ณํ 0โ1 m ํ๊ท 25.40 dB, 2โ4 m 22.34 dB, 4 m+ 21.28 dB (์๊ด โ0.59). 22 dB ๋ฏธ๋ง 42๊ฐ ์ค 26๊ฐ๊ฐ 2 m+.
- ๋ผ์ด๋ค ์ง๋ฉด ์ผ๊ด์ฑ (1 m ์นธ ๋์ด์ ํ๋ ์ ๊ฐ ํ์คํธ์ฐจ ์ค์๊ฐ): scene-0416 0.446 โ 0.050 m, scene-0042 0.264 โ 0.046 m,
scene-0049 0.230 โ 0.070 m โ ํํํด ๋ณด์ด๋ ๊ตฌ๊ฐ๋ ์ข์์ง๋ค.
- ์ฌํ์ต (day_map ํ๋ฆฌ์
15k ๊ทธ๋๋ก): scene-0042 seg1 **21.52 โ 26.71 dB** (SSIM 0.653 โ 0.821), scene-0416 seg1 17.96 โ 18.99 dB
(๋๋ฌด ํฐ๋ ์ข์ ๊ธธ โ ์ฌ์ ํ ์ด๋ ต๋ค). `outputs/gs_day_v2/`.
- ๋ทฐ์ด๋ ์ด์ ์ค ์์ฐจ z ๋ฅผ ์ถ๋ฐ ๋์ด๋ก ๊ณ ์ ํ๊ณ ํผ์น๊ฐ ์๋ค โ ๋์ด ๋ณต์ ๋ชจ๋ธ์ ์ง์ญ ๋งต์ ๋ฃ์ผ๋ ค๋ฉด segments.txt ๊ถค์ ์ ์ z,
์์ฐจ ๋์ดยทํผ์น ๋ฐ๋ผ๊ฐ๊ธฐ, ์ฌ ์ฌ์ด ๋์ด ๋ง์ถค์ด ํ์ํ๋ค (์์ง).
2. **3์ธ์นญ ์นด๋ฉ๋ผ๊ฐ ํ์ต ์์ ๋ฐ** (์ฐจ ๋ค 6.5 m ยท ๋์ด 1.9 m). sim.json chase_camera 5.5 m ยท 1.7 m ๋ก, ์ถ๋ฐ์ ๊ธฐ๋ก ๊ถค์ ์
`drive.start_offset_m` (8 m) ๋ค์ด๊ฐ ํ๋ ์์์ (0 ๋ฒ ํ๋ ์์ด๋ฉด ์นด๋ฉ๋ผ๊ฐ ์๋ฌด ์นด๋ฉ๋ผ๋ ์ง๋๊ฐ์ง ์์ ๊ณณ์ ์๋ค).
3. **ํ์ต ์์ ๋ฐ ํ์ง** โ `nusim recon augfix <์ฌ> --seg <๊ตฌ๊ฐ>` (`nusim/recon/augfix.py`, `configs/train/augfix.json`):
ArtiFixer ์ฆ๊ฐ(๋ฆฌ๊ทธ ๋ณํ 9์ข
, ์ด๋ฏธ 284์ฌ)์ ๊ทธ ๋ณํ ์์ธ์ ์์ฌ ์ ๋ต์ผ๋ก ๊ตฌ๊ฐ ๋ชจ๋ธ 6k ๋ฏธ์ธ์กฐ์ + ๊ฐ์ฐ์์ EMA 0.999
(`TrainConfig.ema_decay`). ์์ฌ ๋ทฐ์ ํ๋ ํฝ์
(์ ๋ชจ๋ธ ฮฑ < 0.5)์ ์์ค์์ ๋นผ๊ณ ํ๋ ํ๋ธ๋งต์ ์ค์ ์ฌ์ง์ผ๋ก๋ง โ
์ ๊ทธ๋ฌ๋ฉด ArtiFixer ์ ๋ฐ๋ ํ๋์ ๋ฐฐ์ ๊ตฌ๋ฆ์ด ์ฌ๋ผ์ก๋ค. scene-0042 seg0 (ํ๋ ์ ์ธ ํ๊ฐ):
| | ์๋ ๊ฒฝ๋ก PSNR / LPIPS | ๋นผ ๋ ์ฆ๊ฐ 18์ฅ PSNR / LPIPS |
|---|---|---|
| ์ ๋ชจ๋ธ | 24.73 / 0.321 | 25.60 / 0.152 |
| augfix + EMA | **24.91 / 0.310** | **26.57 / 0.135** |
| augfix, EMA ์์ด | 24.66 / 0.310 | 26.35 / 0.139 |
EMA ๋ ์๋ ดํ ๋ชจ๋ธ์ ๋ฏธ์ธ์กฐ์ ์์ +0.2 dB. ์ฒ์๋ถํฐ ํ์ต(15k)์์๋ ๋ง์ง๋ง 3k ๋์ PSNR ์ด ๋น ๋ฅด๊ฒ ์ค๋ฅด๋ ์ค์ด๋ผ EMA ๊ฐ
๋ค์ฒ์ ธ โ0.5 dB (scene-0416) โ ์ฒ์๋ถํฐ ํ์ต์๋ ์ฐ์ง ์๋๋ค.
## 3๋จ๊ณ โ closed-loop ํ๊ฒฝ
| | |
|---|---|
| ์ฐ์ถ๋ฌผ | VLA ๋ชจ๋ธ์ด ์ฌ ํ๋๋ฅผ ์์ฃผํ๊ณ ๊ฒฝ๋ก ์ดํ/์ถฉ๋ ์งํ๊ฐ ๋์ด |
- [ ] `maps/graph.py` โ map expansion โ ์ฐจ์ ๋ฐฉํฅ๊ทธ๋ํ
- [ ] `sim/ego.py` โ ์์ ๊ฑฐ ๋ชจ๋ธ (์กฐํฅ๊ฐยท๊ฐ์ โ ๋ค์ ์ํ)
- [x] ์ถฉ๋ (2026-10-02) โ ์ ์ ๋ผ์ด๋ค ์ฅ์ ๋ฌผ ์ง๋(`nusim/sim/obstacles.py`, ์ง๋ฉด +0.25~2.5 m, 0.2 m ์นธ)์
์ฃผํ๊ฐ๋ฅ์์ญ ๊ฒฝ๊ณ(์ฐ์)์ ์ฐจ์ฒด๊ฐ ๋ฟ์ผ๋ฉด ์ง์ ์์ธ๋ก ๋๋๋ฆฌ๊ณ ์ ์ง, ์ถฉ๋ ํ์ยท์ข
๋ฅ๋ฅผ `drive_log.csv` ์ ๊ธฐ๋ก.
๋
ธ๋ฉด(์ฃผํ๊ฐ๋ฅ์์ญ ์์ชฝ 0.3 m ๋ถํฐ)๊ณผ ์๋ ์ฐจ์ฒด๊ฐ ์ง๋๊ฐ ์๋ฆฌ๋ ๋น์ด๋ค โ ๋
ธ๋ฉด ์ ๋ฌผ์ฒด(์ฐจ๋จ๊ธฐ ๋ง๋ยท์ฝ ๋ฑ)๋
๋๋ถ๋ถ ์ ๊น ์๋ ๊ฒ์ด๊ณ ๋์ค์ ์๋ฎฌ๋ ์ดํฐ ๊ฐ์ฒด๋ก ๋ฃ๋๋ค. scene-0003 ์ฐจ๋จ๊ธฐ ๋ง๋ ๋ ๊ฐ๊ฐ ๋ฒฝ์ผ๋ก ๋จ์ ์ฐจ์ ์
๋ง์์๋ค. ์ถฉ๋ ํ์ ์ ์ฐจ์ฒด ๋๋ ๋ฅผ 0.1 m ์ค์ฌ์ ๋ณธ๋ค (์นธ ์์ํยทํฌ์ฆ ์ก์์ผ๋ก ๋ฌผ์ฒด๊ฐ ๋ถํ์ด ๋ณด์).
ํ์ง๋ ๊ณ ์ณค๋ค (์์ ์ 5์ด ๋๋ฌ 0.35 m).
**2026-10-09 (OBSTACLES_VERSION 4):** ๊ธด ์ฌ(scene-0402)์์ ์๋ ๊ฒฝ๋ก 0.2~0.4 m ์ ๋
ธ๋ฉด์์ '๊ฑด๋ฌผยท๊ตฌ์กฐ๋ฌผ' ์ถฉ๋๋ก ๋ฉ์ท๋ค.
โ ์ง๋ฉด = ๋ฎ์ 5 ๋ฐฑ๋ถ์์๋๋ฐ ๋จผ sweep ์ ๋
ธ๋ฉด ์ ์ด ์๋๋ก 0.1~0.45 m ๋ฒ์ ธ ์ง๋ฉด์ด 0.3 m ๋ฎ๊ฒ ์กํ ๋
ธ๋ฉด ์์ฒด๊ฐ ์ฅ์ ๋ฌผ์ด ๋๋ค โ
์ง๋ฉด = ์๋์์ ์ฒ์ ๋์ค๋ ๋นฝ๋นฝํ 10 cm ์ธต(๊ทธ ์นธ ์ต๋ ์ธต์ ์ ๋ฐ ์ด์). โก ๋
ธ๋ฉด ์์์ ๋จ๊ธฐ๋ '์์ ๊ตฌ์กฐ๋ฌผ' ์ ์นธ์ ์ต๊ณ ์ > 3 m ๋ก
๋ดค๋๋ ๊ฐ๋ก์ ์๊ด(5~18 m) ์๋ ๋
ธ๋ฉด ์นธ 11,091๊ฐ๊ฐ ๋จ์๋ค โ ์ง๋ฉด ์ 2~3 m ์ ์ ์ด 5๊ฐ ์ด์์ธ ์นธ๋ง (๊ธฐ๋ฅยท์ค๊ธฐยท๋ฒฝ). ๋
ธ๋ฉด์์
๋จ๋ ์นธ 11,091 โ 83, ์ถฉ๋ ์ง์ 1 m ์ ์ฅ์ ๋ฌผ 0. scene-0003 ์ 21,808 โ 20,724์นธ.
๊ฐ์ ๋ ๋ ๋ฒ์งธ ์ํ: ์๋ ๊ฒฝ๋ก 1.6 m ์ผ์ชฝ์์ ํ๋จ ๊ฐ์ฅ์๋ฆฌ์ ํ ์นธ ๋์ถ(0.2 m)์ ์ฐจ์ฒด ์์ด ๊ฑธ๋ ค ์๋ค๋ก ๋ชป ์์ง์๋ค โ
๋ฟ์ ์ํ ์๊ฐ 1 ๋ง ๋์ด๋ ๋ง์๊ธฐ ๋๋ฌธ. ์ด์ `collision.graze_samples`(2) ์ดํ๋ ์ค์นจ์ผ๋ก ๋ณด๊ณ (`ContactInfo::depth`),
๊น์ด๊ฐ ๋์ด๋ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก 0.3 m ๋ ๊ฐ ๋ณธ ์์ธ๊ฐ ์ง๊ธ๋ณด๋ค ๊น์ง ์์ผ๋ฉด ๋น ์ ธ๋๊ฐ๋ ์ค์ผ๋ก ํ์ฉ (`escaping`). ๋ฒฝยท๊ธฐ๋ฅ์
์ฐจ์ฒด ํ ์ค(์ฝ 13์ )์ด ๋ฐ๋ก ๋ฟ์ ์ฌ์ ํ ๋งํ๋ค. ์ด์ ์ ์ ์ง ์ํ๋ก ์์ํ๋ค (์์ ์ ๋ก๊ทธ ์๋๋ก ์์ํด ์ ์ ๋ก ๋ฌ๋ ธ๋ค). ์์ง ์๋ ๊ฒ: ์ถฉ๊ฒฉยทํ๊น ๊ฐ์ ๋์ญํ, ๊ฒฝ์ฌยท์์ฒ , ๋ค๋ฅธ ์ฐจ๋๊ณผ์ ์ถฉ๋.
- [ ] `sim/env.py` โ gym ์คํ์ผ `reset()` / `step(action) โ 6์ฅ ๊ด์ธก`
- [ ] `sim/metrics.py` โ ๊ฒฝ๋ก ์ดํ, ์ฃผํ๊ฐ๋ฅ์์ญ ์๋ฐ, ์ถฉ๋, ์์ฃผ์จ
- [ ] `sim/bridge.py` โ gRPC (๊ทธ๋ฆฌ๊ณ ํ์ํ๋ฉด ROS2) ๋ก ์ธ๋ถ ๋ชจ๋ธ ์ฐ๋
- [ ] ๊ตํต ์ฐธ๊ฐ์ ์ฝ์
โ ํ๊ฒฝ ์ ์ฉ ๋งต ์์ ์ฐจ๋ยท์ฌ๋(glTF ๋๋ ๊ฐ์ฒด๋ณ 3DGS)์ ์๋ฎฌ๋ ์ดํฐ๊ฐ ๋ฐฐ์น
**ํต์ฌ ๋์ .** ego ๊ฐ ์๋ณธ ๊ถค์ ์ ๋ฒ์ด๋๋ฉด ๊ทธ ์์ ์์ ๋ณธ ์ ์๋ ๊ฐ๋๊ฐ ๋๋ค.
3DGS ๋ ์ธ์ฝ์ ์ฝํด์ ๊ฒฝ๋ก๋ฅผ ํฌ๊ฒ ๋ฒ์ด๋๋ฉด ํ์ง์ด ๊ธ๊ฒฉํ ๋ฌด๋์ง๋ค.
ํ์ค์ ์ธ ์ํ์ฑ
:
- ๋ฒ์ด๋จ ์ ๋๋ฅผ ์งํ๋ก ๊ธฐ๋กํด "์ ๋ขฐ ๊ตฌ๊ฐ" ์ ๋ช
์
- ์๋ณธ ๊ถค์ ์ฃผ๋ณ ยฑ2 m ์ ๋๋ฅผ ์ ํจ ๋ฒ์๋ก ๋๊ณ ํ๊ฐ
- ์ฌ๋ฌ ์ฌ์ ์ฌ๊ตฌ์ฑ์ ๋งต ์ขํ๊ณ์์ ํฉ์ณ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ํ๋ ๊ฒ์ ๊ทธ ๋ค์ ๋ฌธ์
---
## ๋ค๋ฃจ์ง ์๊ธฐ๋ก ํ ๊ฒ
- **boston-seaport (467 ์ฌ)** โ ์ฑ๊ฐํฌ๋ฅด๋ก ํ์ ํ๋ค. ๋ฒ์๋ฅผ ์ขํ์ผ ๋์ด ๋๋ค.
- ~~**LiDAR/RADAR ํฉ์ฑ**~~ โ ์ฒ์์ ์นด๋ฉ๋ผ๋ง์ด์์ผ๋ 2026-10-09 ์ฌ์ฉ์ ์์ฒญ์ผ๋ก **์๋ฎฌ๋ ์ดํฐ ๋ ์ด์บ์คํธ ์ผ์**๋ก ๋ฃ์๋ค
('๋ ์ด์บ์คํธ ์ผ์' ์ ). 3DGS ๋ก ์ผ์ ์์์ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ ํ์ง ์๋๋ค.
- ~~**๋ ์จ/์๊ฐ๋ ๋ณํ**~~ โ ์ฒ์์ ๋ค๋ฃจ์ง ์๊ธฐ๋ก ํ์ผ๋ 2026-10-02 ๊ฒฐ์ ์ผ๋ก ์๋ฎฌ๋ ์ดํฐ๊ฐ ํฉ์ฑํ๋ค
('์ ์ฒด ๋งต + ํฉ์ฑ ๋ ์จ', '๋ ์จ v2'). ์์ ์์ฒด์ ๋ฐค โ ๋ฎ ๋ณํ์ '๋ฐ์ดํฐ์
๋ค์์ฑ ์ฆ๊ฐ' ์ฐธ๊ณ .
- **์ง์ ํ์ต๊ธฐ ์ฒ์๋ถํฐ ๊ตฌํ** โ gsplat ์ ๋ฐฑ์๋๋ก ์ด๋ค.
๋์คํฐ๋ผ์ด์ ๋ฅผ ๋ค์ ์ฐ๋ ๋ฐ ์๊ฐ์ ์ธ ์ด์ ๊ฐ ์๋ค.
|