celia // marketplace platform 2.7.0 · hub@bbef4a83

rules / pl03

PL03 v1.0.0

PL03 — pallet on floor over time (hardened FSM variant)

description

The production-hardened successor to PL02. Same violation ("pallet on the floor longer than violent_count seconds") but with the false-positive/duplicate machinery that real deployments needed: a per-track floor timer anchored by timestamp that RESETS when the pallet moves and re-anchors after track gaps; the violation threshold separated from the re-report cooldown (report_interval); slender side-on boxes get extra confirm time; a REGION-level cooldown (centroid distance + IoU vs recently fired locations) so tracker id churn on the same physical pallet cannot re-fire; and a guarded batch FSM — one-shot post-ready hold, one-shot near-grace while near-violation pallets exist, minimum emit gap, max batch wait force-fire, and a duplicate-signature guard. Evidence is sampled (first/last per video segment + midpoints, capped). Prefer PL03 over PL02 for new deployments; PL02 stays as the faithful simple port.

use cases

  • aisle/staging-area blockage enforcement with operator-friendly, deduplicated alerts
  • long-lived floor violations in scenes with flaky tracking (id churn handled by region cooldown)
  • batched emission timing on busy docks (one event per pallet, released together)

limitations

  • thresholds interact (hold/grace/gap/wait) — tune with real traffic, not defaults alone
  • region cooldown radius is pixel-based; re-tune per camera geometry
  • like PL02, cannot distinguish floor vs low rack without zones
  • legacy nested-pallet suppression / pallet-merge preprocessing is not ported; the IoU 0.95 dedup is weaker against double-detections

config parameters

general

ParameterTypeDefaultNotes
violent_count * integer 60 seconds on floor → violation (min 1)
report_interval * integer 3600 re-report cooldown per track/region (s) (min 1)

zone

ParameterTypeDefaultNotes
cam_zones array of array of pair of number []

advanced

ParameterTypeDefaultNotes
pallet_classes array of string ["pallet", "product_package"]
first_waiting_window_time integer 10 (min 0)
max_batch_wait integer 90 (min 0)
near_grace integer 10 (min 0)
post_ready_hold integer 10 (min 0)
min_emit_gap integer 60 (min 0)
dup_guard integer 180 (min 0)
max_track_gap integer 15 (min 1)
moving_threshold number 0.1 (min 0)
same_pallet_iou number 0.95 (min 0, max 1)
side_face_extra integer 20 (min 0)
side_face_aspect number 0.35 (min 0, max 1)
region_centroid_dist number 100 (min 0)
evidence_max integer 6 (min 1)
evidence_window integer 90 (min 1)

golden replay cases

CaseFramesExpected events
pallet-on-floor131