c377c14474
2. added unwarp map export in current cli, don't need to generate by precompute in sensor running
54 lines
2.8 KiB
YAML
54 lines
2.8 KiB
YAML
profile: compute
|
|
description: Runtime sensing bundle consumed by orisys-sdk assets_dir
|
|
|
|
output_dir: build/export/finger/r01/compute
|
|
|
|
# Files must match orisys-sdk / Studio runtime layout.
|
|
artifacts:
|
|
- mesh.npz
|
|
# Housing is a separate artifact on purpose: mesh.npz stays sensing-surface-only
|
|
# because the SDK unroll consumes its vertices as the sensing surface.
|
|
- housing.npz
|
|
- camera_intrinsics.npz
|
|
- world_to_cam.npy
|
|
|
|
# Measured unroll maps stay in SDK (not overwritten by nominal export).
|
|
runtime_owned_by_sdk:
|
|
- unroll_map_uv_s0.4.npz
|
|
|
|
# Parameters of the unroll/valid-mask domain. Recorded here because the mask decides which
|
|
# part of the sensing mesh the application treats as *sensing* (everything else renders
|
|
# grey), and because regenerating it wrongly still produces a plausible-looking map:
|
|
# * source_width/height are NOT recorded — they are derived from the export's own
|
|
# camera_intrinsics.npz (native size x source_scale). Inheriting another camera's
|
|
# source size produced 0.8 % island coverage instead of 40.8 %.
|
|
# * source_K must be scaled by source_scale (orisys.unroll.geometry.scale_camera_geometry).
|
|
# Passing the native K produced 3.5 % instead of 40.8 %.
|
|
# Rebuild with tools/build_uv_map.py --profile <this file>; it writes into output_dir first
|
|
# and is promoted to the SDK asset dir only after tools/scene_assets/compare_uv_map.py agrees.
|
|
uv_map:
|
|
out_width: 280 # = camera.resolution_stitch[0]; the field domain the app sees
|
|
out_height: 300 # = camera.resolution_stitch[1]
|
|
flip_v: true
|
|
# source_scale: the live frame is resized by this before undistort/remap, so it sets both the
|
|
# per-frame pixel work and the resolution the tracker/flow measures at. The floor that avoids
|
|
# upsampling the output grid is derived, not guessed:
|
|
# s >= max(out_width / native_width, out_height / native_height)
|
|
# * 1280x720 camera -> max(280/1280, 300/720) = 0.417 (source 533x300)
|
|
# * 1920x1080 camera -> max(280/1920, 300/1080) = 0.278 (source 533x300 — the same grid,
|
|
# because the rule follows the *output* requirement, not the camera)
|
|
# 0.4 is pinned because it is the value the running system and the existing recordings were
|
|
# measured at; at a 1280x720 camera it yields a 512x288 source, i.e. 4 % coarser than the
|
|
# 300-row output (mild upsampling). Changing it changes the flow magnitudes the app's
|
|
# thresholds were tuned against AND the map's field_domain_id, so it must move together with
|
|
# sensor.json's camera.source_scale and a recompiled scene package.
|
|
source_scale: 0.4
|
|
edge_band: 0.12
|
|
edge_expand: 1.0 # <= 1.0 means "resolve from the measured UV distortion"
|
|
|
|
validation:
|
|
# orisys-app validate_scene.py --legacy-dir <output_dir> --map <sdk unroll map>
|
|
require_sensing_surface_only: true
|
|
expected_vertices: 1032
|
|
expected_triangles: 1974
|