一张平面图上几块颜色交叠的区域,一个光点落在交界处,旁边写着待判定的内外结论

一、判定是一个可重放的函数,不是一个相似度分数

定位系统里有一句行话,画圈易、判区难。把围栏画在地图上不难,难的是给定一个坐标,系统能不能说清“它在不在某块区域里、在的是哪一块、为什么”。这类系统里最容易错的,归纳起来是四处:其一,把判定当成一个相似度分数,而不是可解释、可追溯的内/外二值结论;其二,几何与边界没有一致约定,同一份轨迹能给出两条互相矛盾的结论;其三,重叠区域取距离最小的一个来定归属,而不是按优先级嵌套;其四,进入和离开共用一套报警语义,可它们含义并不对称。下面逐处说,末尾再把围栏当资产、判定当可验收对象这两件收尾的事一并写清。

先说第一处。判定要被审计,前提是单次判定能重放。所以每一次判定至少要留下五件证据:坐标与它的时间戳、当时生效的围栏几何版本、参与这次判定的区域集合、命中的规则与这些规则的优先级顺序、以及最终结论连同方向。只存一条“报警记录”是不够的——报警是判定完成之后的产物,出事时你查得到“报过警”,却查不到“当初凭什么判成报警”。结论必须是非此即彼的二值,外加一层可解释:命中了哪条规则、按什么顺序压过别的区域。给一个“百分之八十像在里面”的分数,现场没法处置,审计也没法追责。

二、几何与边界:矩形和多边形各有各的坑

第二处在几何。围栏的表达一般两档,矩形和多边形。矩形省事,但对不规则的车间、带缺口的禁入带就套不住。多边形能表达凹形和环形,代价是“点落在多边形之内吗”这类判定,在边界和共线点上必须先有一致约定,否则不同实现会给出不同答案。这里我们不写判定代码,只把必须先定死的三条约定列出来:落在边界线上的点,到底算内还是算外,全系统只能选一种;同一个顶点被重复上报时,怎么处理才不会把边数算错;轨迹上相邻两点一条在内一条在外、跨越了边界时,认定归属以哪一点为准。这三条只要有一条没约定,同一段轨迹就能同时触发“进入”和“未进入”两条相互矛盾的报警,而且没人能说是哪一步错的。约定本身不复杂,复杂的是让画图的人、判定的人和报警的人用的是同一套约定。

三、重叠区域靠优先级嵌套,而不是取距离最小的一个

第三处最反直觉。一块坐标同时落在好几片围栏里是常态,这时不能“取离中心距离最小的那一个”来定归属。按距离最小来定归属会在两类场景里直接判错。一类是危险区紧挨着一大片警示区:一个点其实刚踏进危险区边缘,但因为它离警示区的质心更近,归属被判成了警示,最要命的语义被距离压了过去,最该报警的那一级反倒被吞掉。另一类是多层嵌套的临时管制区:临时划的一小块被永久区从几何上整个包住,按距离最小会把归属稳定地判给范围更大的永久区,临时管制的意图形同虚设。

正解是把优先级做成可表达嵌套的规则:归属由语义优先级决定,而不是由几何距离决定,并且要在规则层面硬约束“同一时刻一个目标只能归属一个区域”。当两条规则在同一时刻给出不同归属,系统要在配置阶段就拒绝、报冲突,而不是运行时随便挑一个。能在配置期挡住的错误,就不要留到生产现场去暴露。

四、进入和离开是两件事,级别也得分三层

第四处包含两层:语义分级和方向。区域语义通常分三级——安全、警示、危险,三级对应的处置动作和通知路径本就该不一样,危险级要立刻触达到能现场处置的人,安全级更多是留痕。下面这张“级别 × 方向 × 处置”的映射,是我们建议在配置里显式写出来的,最常见的错误恰恰是三档共用一套报警通道,结果危险级被海量低级别信息淹没。

级别 方向 应触发的处置与通知
安全 进入 仅记录,不报警
警示 进入 现场提示,通知当班责任人
危险 进入 立即告警,触达可处置岗位
危险 离开 确认解除,记录解除时间与去向

方向和级别一样不能被合并处理。报警是方向化的,进入与离开的语义并不对称,得分别配置,原因有三:进入时可能是多人同时涌入,触发形态是一批而不是一条;离开往往要等到长期驻留才该告警,“进入即报”和“驻留超时才报”本就是两种规则;而一个人在边界上反向来回移动时,会产生边界抖动式的重复报警。对付重复报警,至少要有三种抑制手段,各配各的场景:时间窗抑制,适合短时间反复跨越;去抖距离,适合坐标在边界两侧小幅漂移;状态确认,适合必须连续成立才认定的一次进出。选哪种由现场漂移特性定,不能一刀切。

五、定位精度不够时,判定要会退让

这一处精度退让没有列进上面四处易错点,却决定那四处能不能落地。不同定位源的技术原理不同,能不能穿透墙体、受不受遮挡,直接改变判定的正确性。一条硬性对应关系是:围栏的最小尺寸、判定用的缓冲区,必须与定位精度成比例——精度只到某个量级,就不该划比它更小、更贴边的区域,否则边界约定再严谨,坐标本身就已经不可信。这里最容易犯的错,是拿高精度的假设去配一个低精度的现场,图纸漂亮、上线全是误报。精度不足时要做的是非对称退让,比如“进入需要连续多点确认才算数,离开单点即可”,把容易出假阳性的那个方向收紧,而不是把整套判定调钝。绝不写成任何现场施工或接线步骤,这一层只谈判定参数与定位精度之间的比例关系。

六、围栏是资产,判定要能验收、要能治理

在洹拓做这类交付时,我们把两件事当作验收线。一是围栏几何本身是资产,要有归属和留痕:谁画的、谁审核的、什么时候生效、变更是否记录在案,一并落成一份围栏变更审批与回滚记录。原因是误画的现场后果是实打实的——禁入区画小了会漏报警,画大了会造成大量误报,而误报堆到一定量,现场就不信任系统了。二是判定要能被验收,下面五项各带一个预期输出才算通过。

验收场景 期望输出
一个静止在边界上的点 按既定边界约定给出唯一内或外
以不同速度穿越边界的轨迹 进出方向正确、不重复报警
落入两片重叠区域的坐标 按优先级嵌套归到唯一一级
多定位源结论冲突 以精度更高者为准并留冲突记录
临时管制区的生效与失效窗口 窗口内优先、窗口外自动回退

最后是运行期治理。误报率一旦超标,现场会自行“忽略报警”,这个后果比漏报更隐蔽:漏报至少大家都知道没响,误报把人训练成了不听。所以误报率要和漏报并列,作为一类运行指标盯住,而不是只统计报了多少次警。同时要给现场留一条通道:现场有权申请复核某块围栏划得对不对。判区之难,难在把一个坐标变成一条能解释、能追责、能验收、也能被现场纠正的结论;把这四处易错点补齐,画在图上的圈才真的算数。