Files
NODEDC_MISSION_CORE/docs/adr/0041-registered-map-increment-rolling-local-occupancy.md
T

5.2 KiB

ADR 0041: Registered map increment and rolling local occupancy

Date: 2026-08-05 Status: accepted and implemented for M4.5R/M4.6

Context

The recorded K1 topic lixel/application/report/lio_pcl is post-LIO data in the vendor SLAM map frame. In RAVNOVES00 it behaves as a registered map increment: one message contains points contributed at that moment, not a complete scan of everything currently visible. Therefore a structure can remain physically present while its points are absent from a later message.

M4.5 originally applied a 0.75 s temporal object hold directly to those increments. M4.6 then rendered the current increment as if it were the complete LiDAR scene. At frame 1880 the exact camera frame visibly contains two concrete hemispheres, while the current lio_pcl increment has no corresponding points in the corridor. The old result m4-threat-replay-78a06d... consequently lost them from 3D. This was a representation error, not evidence that LiDAR had measured free space.

Decision

Mission Core keeps three distinct products:

current registered increment ──> exact source context
current occupied components ───> temporal identity and motion evidence
bounded rolling occupancy ─────> conservative local obstacle presence

RollingLocalObstacleMapProvider accumulates only qualified current occupied cells in the SLAM map frame. It never interprets missing republication as free space. Retained cells are evicted only by explicit bounds:

  • voxel size 0.45 m;
  • retention 3.0 s;
  • local radius 12.0 m around the recorded pose;
  • maximum 65,536 active cells, with fail-closed capacity handling;
  • bounded component size/count and deterministic 26-neighbour connectivity.

The provider publishes only cells not present in the current increment as TemporalState.RETAINED. Current and retained identities cannot overlap. Retained components have ephemeral identity, carry their last-hit age and never claim current motion. They may assert threat when their occupied cells intersect the current virtual corridor; outside the corridor they remain unknown, never not-threat.

The 0.75 s temporal object state remains separate. It continues to answer whether a current component has enough bounded history for motion reasoning. It is not a map-clearing policy.

Evidence and acceptance

The current accepted M4.5R result is m4-temporal-replay-81e13d5654ac8d1219f6937dd425f7dbcdbacd5748d23fe653297134f0de6c22. Its frame ledger SHA-256 is e83b80ea06b3462c2d04c5a1b74289a0ec401596c7150ae90f5a1b748b639c3a. Across all 4,489 source frames it records:

  • 849,650 current increment occupied cells;
  • 70,989 retained component publications and 1,779,135 retained cell publications;
  • peak 907 active cells and 35 retained components;
  • 29,720 time evictions, 6,513 radius evictions and zero capacity drops;
  • maximum retained age exactly 3.0 s and 587 active cells at replay end.

The current accepted M4.6 result is m4-threat-replay-2a953c5f27f2a5b1dddc5c658c1de2c323d7796084a099c024987a1da03aa324. All 4,489 frames completed with 28,081 current metric, 70,989 rolling-map, 38,025 stale/held and 10,158 camera-only evidence publications assessed exactly once. Decisions are 7,606 threat, 10,769 not-threat and 128,878 unknown. All 10/10 deterministic fixtures pass with zero critical false-safe outcomes.

Frame 1880 is a mandatory engineering visual regression. It binds two separate body-frame regions to two retained components. The near region must assert threat; both regions are present in the accepted result. These anchors encode a reproducible owner-reviewed visual case, not independent object truth.

Frame 2584 is a second mandatory visual regression added after operator review found that a compact hemisphere had six valid points in one voxel and was discarded by a two-voxel geometry filter. The corrected geometry contract retains the four-point minimum but permits one-voxel compact components. At 2584 the near hemisphere is a retained threat and occupied cells for the far hemisphere are present inside a larger current component. This is still an engineering regression window, not independent truth.

The common LAB viewer exposes CURRENT INCREMENT and ROLLING MAP as separate layers over the same selected frame. The current point count is not relabelled as a complete scan, and retained occupied cells remain independently hideable.

Consequences and limitations

  • Missing points cannot create free-space or navigation authority.
  • Short-lived obstacle disappearance caused solely by incremental publication is removed from the replay decision path.
  • A moving object may leave a conservative ghost for up to 3.0 s; retained occupancy can block but cannot claim motion or clearance.
  • No ray-level free-space clearing is available in this recording. A future raw scan/ray provider must add explicit observation and clearing semantics rather than weakening this contract.
  • The frame-1880 and frame-2584 anchors are regression evidence, not independent truth, detector accuracy or physical collision acceptance.
  • Live K1, measured T_body_from_sensor, physical body geometry, navigation, commands and actuation remain outside M4.5R/M4.6 authority.