Research notes
Mirai Guide: reading walkable floors from the map raster
Why booth-gap inference failed, and how color segmentation of the venue map gives me a navigation grid for A*.
Point-to-point walking navigation inside a venue - booth to booth, entrance to anywhere - needs to know where the floor is.
My first model inferred walkability from the negative space between booth rectangles. It seemed reasonable. If there is no booth there, you can walk there.
Then I measured it, and it turned out to be wrong in exactly the ways navigation would expose.
What the Measurements Said
Measured across three production venue rasters:
- Rendering seams read as aisles. Nearest-neighbor gaps between booths form two distinct populations - 1-3px seams and ~31px real corridors. On every map, 30-42% of booth-to-booth paths squeezed through gaps narrower than 8px. Fine for a decorative line on a cart page. Not fine for directions.
- No hall boundary. Many landmarks - entrances, exits, information desks - sit outside the hall outline. Of measured routes crossing one venue’s bottom wall, about 41% passed through solid wall instead of a door. The entrance is the most natural place to start navigating from, so this one alone kills the approach.
- Missing obstacles. One venue has structural pillars inside its zones that exist in no anchor table.
- Non-rectilinear geometry. Another venue has a curved wall and a two-level walkable space joined by door gaps. An axis-aligned-rectangle obstacle model structurally cannot express that.
The Raster Already Knows
Then I actually looked at the map files.
All the production maps turned out to be indexed-color PNGs - vector-exported floor plans with flat color regions, sharing one palette design system across venues. Hall floor, exhibitor-zone floor, concourse, booths, and transparency outside the building each hold a stable palette color.
Mask the walkable colors and you get the true floor. Corridors and pillars included. Real corridors start around 8-11px, and sub-4px runs are identifiable as anti-aliasing artifacts.
So the decision was to segment the walkable floor by color, store it as a compact navigation grid in the published bundle, and route with A* over the grid.
This is deterministic image processing, not an LLM extraction. Reproducible, free, instant, and able to backfill every existing map without anyone re-reviewing it.
What Still Needs a Human
Two things the raster cannot supply.
Cross-map connectivity - which exit on one floor leads to which entrance on another - is semantic, so it is authored as a small portal graph by hand. And there is no meters-per-pixel scale anywhere in the image, so distances and ETAs need separate calibration.
One boundary I kept on purpose: the existing cart visit-plan line keeps its own corner-visibility planner, verified at zero fallbacks and zero booth crossings across all 7,058 booth pairs on all eight maps. Navigation is a separate engine. Making one thing serve both jobs would have been rework with nothing to show for it.