Candidate glass is segmented in RGB; sparse LiDAR structure around the mask anchors a metric plane hypothesis; depth-free projective geometry verifies it before acceptance; the global map keeps every accepted plane revocable, and the planner consumes verified occupancy only.
Sample recordings of the full system running live on the robot — spanning indoor and outdoor environments, day and night, buildings of different scale, and glass styles from office partitions to multi-storey atrium facades. GG-360 uses the full panorama; GG-pin is restricted to a single pinhole view + sparse LiDAR — the same inputs the baselines consume.
The reconstruction baselines running live on the same robot and inputs (single pinhole view + sparse LiDAR), shown on Building A, Floor 5 and Building B, Atrium.
Quick reference for running GlassGuard: segmentation-backbone footprint and the handful of parameters that actually matter.
| SAM body | Resident VRAM | Mask quality (vs. teacher) | Note |
|---|---|---|---|
| Slim-2816 · BF16 | 1674 MB | 0.966 mAP@50 | default — evaluated configuration |
| Slim-2816 · INT8 | 1390 MB | 0.965 mAP@50 | near-lossless, smaller GPUs |
| Slim-2816 · INT4 | 1190 MB | 0.958 mAP@50 | tightest footprint |
| Slim-1752 | <1.4 GB | 0.717 IoU (vs. 0.748) | faster, small recall loss |
Full system: ~1.5 GB VRAM, ~0.74 s per frame end-to-end (detection + verification + global map) on the robot GPU; the 2-process pipeline mode overlaps mapping with perception for higher throughput.
| Knob | Default | What it does / when to touch it |
|---|---|---|
RANGE_M | 10 | One knob for sensing range: LiDAR crop, plane placement and spill radii, plane-fit ceiling. Raise (15–20) for atriums and outdoor facades. |
CONF_TH | 0.3 | Segmentation confidence. Lower finds fainter glass but leans harder on the geometric verification to reject the extras. |
--pinhole-dir-trust-min-span-px | 140 | Angle-gate arming: minimum edge span before the projective orientation check is trusted. Higher = gate arms less often (falls back to the conservative dv/dh test). |
spill_hard_frac | 0.55 | Off-mask fraction of a reprojected plane that evicts it immediately; smaller rises above the plane’s own tolerance are counted over several views. Lower = more aggressive self-correction. |
min_cov | 0.10 | Minimum LiDAR seed coverage to place a plane at all — the floor on how little structural evidence is acceptable. |
GROUNDING_CELL | 6 px | Contact-seed grid resolution around the mask. Finer = tighter pane footprints, slightly more compute. |
PIPELINE | true | 2-process split: background mapping + foreground perception (the evaluated configuration). Set false for a simpler single-process run. |
provider voxelSize | 0.05 m | LiDAR stack voxel. 0.02 sharpens contacts but ~6× the CPU on large outdoor stacks. |
Everything else ships frozen at the
evaluated configuration — see TUNABLES.md in the code release.