vkgs-sim / configs /sim.json
kimjunhan's picture
vkgs-sim ์†Œ์Šค (nusim hub upload code)
9a28212 verified
Raw History Blame Contribute Delete
8.44 kB
{
"_doc": "์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(vkgs_viewer) ์„ค์ •. nusim render view ๊ฐ€ --config ๋กœ ๋„˜๊ธด๋‹ค. ๋น ์ง„ ํ•ญ๋ชฉ์€ viewer.cpp SimConfig ๊ธฐ๋ณธ๊ฐ’. ๋ช…๋ น์ค„ ์˜ต์…˜์ด ์ด ํŒŒ์ผ๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค.",
"weather": {
"start": "clear",
"defaults": {
"daylight": 1.0,
"cloud": 0.0,
"rain": 0.0,
"fog": 0.0,
"wet": 0.0,
"snow": 0.0,
"snow_cover": 0.0,
"headlights": -1
},
"presets": [
{
"name": "clear",
"label": "๋ง‘์Œ",
"values": {}
},
{
"name": "morning",
"label": "์•„์นจ",
"values": {
"daylight": 0.6,
"cloud": 0.15,
"fog": 0.15
}
},
{
"name": "overcast",
"label": "ํ๋ฆผ",
"values": {
"cloud": 0.8,
"daylight": 0.85
}
},
{
"name": "dusk",
"label": "ํ•ด์งˆ๋…˜",
"values": {
"daylight": 0.35,
"cloud": 0.2
}
},
{
"name": "night",
"label": "๋ฐค",
"values": {
"daylight": 0.0
}
},
{
"name": "rain",
"label": "๋น„",
"values": {
"rain": 0.5,
"cloud": 0.8,
"daylight": 0.75
}
},
{
"name": "heavy_rain",
"label": "ํญ์šฐ",
"values": {
"rain": 1.0,
"cloud": 1.0,
"daylight": 0.6,
"fog": 0.3
}
},
{
"name": "fog",
"label": "์•ˆ๊ฐœ",
"values": {
"fog": 0.7,
"cloud": 0.6,
"daylight": 0.8
}
},
{
"name": "night_rain",
"label": "๋ฐค๋น„",
"values": {
"rain": 0.7,
"cloud": 0.9,
"daylight": 0.0
}
},
{
"name": "snow",
"label": "๋ˆˆ",
"values": {
"snow": 0.5,
"daylight": 0.8
}
},
{
"name": "heavy_snow",
"label": "ํญ์„ค",
"values": {
"snow": 1.0,
"daylight": 0.65,
"fog": 0.35
}
}
],
"fx": {
"_doc": "๋‚ ์”จ ํšจ๊ณผ ์กฐ์ •๊ฐ’ (weather.comp, precip.vert). ์ž…์ž ์ˆ˜๋Š” ์„ธ๊ธฐ 1 ์ผ ๋•Œ โ€” ์‹ค์ œ ์ˆ˜ = ์„ธ๊ธฐ ร— ์ด ๊ฐ’. ์ƒ์ž = ์นด๋ฉ”๋ผ ์ฃผ๋ณ€ ์ž…์ž ์˜์—ญ (๋ฐ˜ํญ). exposure_s = ๋น—์ค„๊ธฐ ๋ชจ์…˜ ๋ธ”๋Ÿฌ ๋…ธ์ถœ, aperture_m = ๊ฐ€๊นŒ์šด ์ž…์ž์˜ ์ดˆ์  ํ๋ฆผ. lens_dropsยทpuddles ๋Š” 0~1 ๋ฐฐ์œจ. volumetric_steps = ์•ˆ๊ฐœ ์† ์ „์กฐ๋“ฑ ๋น›์ค„๊ธฐ ์ ๋ถ„ ๊ฑธ์Œ (0 = ๋”)",
"rain_particles": 80000,
"snow_particles": 120000,
"box_half_xy_m": 15,
"box_half_z_m": 6,
"exposure_s": 0.02,
"aperture_m": 0.0025,
"wind_mps": [1.0, 0.3],
"lens_drops": 1.0,
"puddles": 1.0,
"fog_height_m": 20,
"volumetric_steps": 12
},
"headlights": {
"intensity": 0.9,
"cone_deg": 28.0,
"auto_below_daylight": 0.3,
"height_m": 0.7,
"pitch": -0.05,
"inset_m": 0.25
}
},
"sky": {
"_doc": "mode: sim = Vulkan ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๋Š˜ (๊ธฐ๋ณธ), learned = ํ•™์Šต๋œ ํ•˜๋Š˜ ํ๋ธŒ๋งต(sky.ktx2, ํ•™์Šต๊ธฐ ์ผ์น˜ ๊ฒ€์‚ฌ์šฉ), ibl = ํ™˜๊ฒฝ๋งต",
"mode": "sim",
"sun_azimuth_deg": 120.0,
"cloud_speed": [
0.012,
0.004
]
},
"chase_camera": {
"back_m": 5.5,
"back_per_mps": 0.15,
"height_m": 1.7,
"look_ahead_m": 8.0,
"look_height_m": 1.25,
"yaw_offset_deg": -10.0,
"yaw_tau_s": 0.4,
"dist_tau_s": 0.8,
"_pose": "2026-11-05: 6.5 m ยท 1.9 m โ†’ 5.5 m ยท 1.7 m (5.0 m ๋Š” ์ฐจ๊ฐ€ ํ™”๋ฉด ๊ฐ€์šด๋ฐ๋ฅผ ๋„ˆ๋ฌด ๊ฐ€๋ฆผ) โ€” ํ•™์Šต ์นด๋ฉ”๋ผ(์ง€๋ถ• ์•ฝ 1.5 m, ๊ธฐ๋ก ๊ถค์  ์œ„)์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก 3DGS ๊ฐ€ ๋œ ๊นจ์ง„๋‹ค (recon.augfix chase_views ๋น„๊ต). ๊ตฌ๊ฐ„ ์ถœ๋ฐœ์ ์—์„œ๋Š” ์นด๋ฉ”๋ผ๊ฐ€ ๊ธฐ๋ก ๊ถค์  ๋’ค๋ผ ์—ฌ์ „ํžˆ ๊นจ์ง„๋‹ค", "_zoom": "ํœ  ยท ๊ฐ€์šด๋ฐ ๋ฒ„ํŠผ ์„ธ๋กœ ๋“œ๋ž˜๊ทธ๋กœ ๊ฑฐ๋ฆฌ ๋ฐฐ์œจ (1 = back_m). ํœ  ํ•œ ์นธ = zoom_step ๋ฐฐ, ๋†’์ด = height_m ร— ๋ฐฐ์œจ^zoom_height_exp. ๋ฉ€๋ฆฌ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก 3DGS ๊ฐ€ ๋ชป ๋ณธ ๊ฐ๋„๋ผ ๋…ธ๋ฉด์ด ๊นจ์ ธ ๋ณด์ธ๋‹ค",
"zoom_min": 0.4,
"zoom_max": 5.0,
"zoom_step": 1.15,
"zoom_height_exp": 0.5
},
"drive": {
"max_speed_kmh": 30.0,
"autopilot_kmh": 20.0, "start_offset_m": 8.0, "_start_offset_m": "nusim render map ์˜ ์ถœ๋ฐœ ์œ„์น˜ = ๊ธฐ๋ก ๊ถค์ ์„ ์ด๋งŒํผ ๋“ค์–ด๊ฐ„ ํ”„๋ ˆ์ž„ (์ฐฝ ์˜ต์…˜ --frame ์„ ์ฃผ๋ฉด ๊ทธ๊ฒƒ). 0 ๋ฒˆ ํ”„๋ ˆ์ž„์—์„œ ์ถœ๋ฐœํ•˜๋ฉด 3์ธ์นญ ์นด๋ฉ”๋ผ(chase_camera.back_m ๋’ค)๊ฐ€ ์•„๋ฌด ์นด๋ฉ”๋ผ๋„ ์ง€๋‚˜๊ฐ€์ง€ ์•Š์€ ๊ณณ์— ์žˆ์–ด ๋…ธ๋ฉด์ด ๊นจ์ ธ ๋ณด์˜€๋‹ค (2026-11-05)"
},
"sensors": {
"_doc": "๋ ˆ์ด์บ์ŠคํŠธ ์„ผ์„œ (src/vkgs/src/sensors.hpp) โ€” ์นด๋ฉ”๋ผ์ฒ˜๋Ÿผ ์ž์ฐจ์— ๋ถ™๋Š”๋‹ค. ๊ด‘์„ ์€ ๋ณต์…€ ์›”๋“œ(์ •์  ๋ผ์ด๋‹ค ๋ˆ„์  0.2 m, nusim/sim/voxels.py)์™€ ์žฅ๋ฉด ๊ฐ์ฒด ์ƒ์ž์— ๋ถ€๋”ชํžŒ๋‹ค. pos = ์ž์ฐจ(๋’ท๋ฐ”ํ€ด ์ถ• ์ค‘์•™, ์ง€๋ฉด) ๊ธฐ์ค€ [x ์•ž, y ์™ผ์ชฝ, z ์œ„] m, rpy_deg = [roll, pitch, yaw] (์„ผ์„œ ์ขŒํ‘œ x ์•žยทy ์™ผ์ชฝยทz ์œ„). ๊ธฐ๋ณธ๊ฐ’์€ nuScenes ๋ฐฐ์น˜ ๊ทผ์‚ฌ (LIDAR_TOP = Velodyne HDL-32E, RADAR_* = Continental ARS 408). ์ฐฝ์˜ '์„ผ์„œ' ํŒจ๋„์—์„œ ๋ณด๊ธฐ๋ฅผ ์ผœ๊ณ , O(6์บ  ๊ด€์ธก ์ €์žฅ)์— <์ด๋ฆ„>.bin (nuScenes .pcd.bin ํ˜•์‹) ยท <์ด๋ฆ„>.txt (๋ ˆ์ด๋” ๊ฒ€์ถœ) ๋กœ ๊ฐ™์ด ์ €์žฅํ•œ๋‹ค.",
"lidar": [
{"name": "LIDAR_TOP", "pos": [0.94, 0.0, 1.84], "rpy_deg": [0, 0, 0], "channels": 32, "vfov_deg": [-30.67, 10.67],
"h_res_deg": 0.33, "range_m": 70.0, "noise_m": 0.02, "hz": 20}
],
"radar": [
{"name": "RADAR_FRONT", "pos": [3.41, 0.0, 0.50], "rpy_deg": [0, 0, 0]},
{"name": "RADAR_FRONT_LEFT", "pos": [2.42, 0.80, 0.78], "rpy_deg": [0, 0, 90]},
{"name": "RADAR_FRONT_RIGHT", "pos": [2.41, -0.80, 0.78], "rpy_deg": [0, 0, -90]},
{"name": "RADAR_BACK_LEFT", "pos": [-0.56, 0.63, 0.53], "rpy_deg": [0, 0, 150]},
{"name": "RADAR_BACK_RIGHT", "pos": [-0.56, -0.62, 0.53], "rpy_deg": [0, 0, -150]}
]
},
"collision": {
"curb": true,
"obstacle_tol_m": 0.1,
"curb_tol_m": 0.15,
"graze_samples": 2
},
"passes": {
"_doc": "๋ Œ๋” ๊ทธ๋ž˜ํ”„(configs/render_graph.json) ํŒจ์Šค ์ผœ๊ธฐยท๋„๊ธฐ ๋ฎ์–ด์“ฐ๊ธฐ. F2 ์ฐฝ์—์„œ๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค",
"fxaa": {"enabled": true}
},
"shader_graphs": {
"_doc": "์…ฐ์ด๋” ๊ทธ๋ž˜ํ”„(configs/shader_graphs/*.json)๋ณ„ ์ผœ๊ธฐ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฎ์–ด์“ฐ๊ธฐ โ€” ์ด๋ฆ„์€ <๋…ธ๋“œ>.<๋งค๊ฐœ๋ณ€์ˆ˜> (๋นŒ๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ shaders/<๊ทธ๋ž˜ํ”„>.params.json ์ฐธ๊ณ )",
"camera_isp": {"enabled": false, "params": {}}
},
"objects": {
"_doc": "์žฅ๋ฉด ๊ฐ์ฒด(์ฐจ๋Ÿ‰ ์—์…‹) ์šฉ๋Ÿ‰. ์ •๋ ฌยท์Šคํ”Œ๋žซ ๋ฒ„ํผ๊ฐ€ ๋ฐฐ๊ฒฝ + max_gaussians ๋งŒํผ ์žกํžŒ๋‹ค (--objects ๋ฅผ ์ค„ ๋•Œ๋งŒ)",
"max_gaussians": 1500000,
"max_instances": 4096
},
"tools": {
"_doc": "์™ธ๋ถ€ ๋„๊ตฌ ๊ฒฝ๋กœ. ๋น„์šฐ๋ฉด ๋นŒ๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ธฐ๋ณธ๊ฐ’ (build/tracy-profiler/tracy-profiler โ€” scripts/build_tracy.sh)"
},
"output": {
"_doc": "PNG ์ €์žฅ (์˜คํ”„์Šคํฌ๋ฆฐยท--recordยท์Šคํฌ๋ฆฐ์ƒท). png_compression = zlib ์ˆ˜์ค€ 0~9 (stb ๊ธฐ๋ณธ 8 ์€ ์žฅ๋‹น ์•ฝ 200 ms โ€” Tracy ๋กœ ์ธก์ •), png_writers = ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ธ์ฝ”๋”ฉ ์Šค๋ ˆ๋“œ, png_filter = ํ–‰ ํ•„ํ„ฐ ๊ณ ์ • (-1 = ํ–‰๋งˆ๋‹ค 5์ข… ์‹œํ—˜, ๋А๋ฆผ)",
"png_compression": 1,
"png_writers": 8,
"png_filter": 1
},
"ui": {
"front_cams": false,
"bev_pip": false,
"bev_pip_height_m": 40,
"_pip_strip": "์ „๋ฐฉ ์นด๋ฉ”๋ผ 3๋Œ€(V) ยท BEV(N) ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ํ™”๋ฉด ์œ„์ชฝ ํ•œ ์ค„์— ๊ฐ™์€ ํฌ๊ธฐ ์นธ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์นธ ๋†’์ด ์ตœ๋Œ€ = ํ™”๋ฉด ๋†’์ด ร— ์ด ๊ฐ’",
"pip_strip_height_frac": 0.22,
"render_graph": false
},
"camera_modes": {
"_doc": "๋ทฐ์–ด '์นด๋ฉ”๋ผ' ๋ชจ๋“œ (F3 ยท ๋‚ ์”จ ํŒจ๋„): RGB / ๊นŠ์ด / ์‹œ๋งจํ‹ฑ / ํ‘๋ฐฑ (src/vkgs/shaders/camera_mode.comp). ๊นŠ์ด = ํ‘œ๋ฉด ๊ฑฐ๋ฆฌ๋ฅผ ๋กœ๊ทธ ๋ˆˆ๊ธˆ turbo ์ƒ‰์œผ๋กœ (๊ฐ€๊นŒ์›€ ๋นจ๊ฐ•, depth_max_m ๋„˜์œผ๋ฉด ๊ฒ€์ •). ์‹œ๋งจํ‹ฑ = ๊ฐ€์šฐ์‹œ์•ˆ ๋ผ๋ฒจ ์ƒ‰ โ€” ๋ชจ๋ธ ์˜† semantic.rgba ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค (nusim recon semantic, ์—†์œผ๋ฉด ๊ฒ€์ •). semantic = ํด๋ž˜์Šค ์ƒ‰ ํŒŒ์ผ (์ด ํŒŒ์ผ ๊ธฐ์ค€ ๊ฒฝ๋กœ)",
"depth_max_m": 80,
"semantic": "semantic.json"
},
"ego": {
"_doc": "์ž์ฐจ glTF (scripts/normalize_vehicle_gltf.py ๋˜๋Š” split_wheels_gltf.py ๋กœ ์ •๋ฆฌํ•œ ๊ฒƒ, assets/gltf/README.md)์™€ ์‹ค์ œ ๊ธธ์ด. ์—†์œผ๋ฉด 3DGS ์—์…‹.",
"gltf": "assets/gltf/GenesisGV80.glb",
"length_m": 4.945,
"fallback_3dgs_asset": "outputs/assets/ego_car.ply"
}
}