一台在凌晨两点穿行货道、盘完一千个库位的机器人,听起来像库存问题的终结。实际上它产出的是更朴素也更有用的东西:一份每晚生成的比对——ERP 认为有什么,机器看到了什么,而且每一行背后都有位置与时间。
这个项目的价值,几乎完全取决于这份比对怎么建模。
夜间机器人究竟产出什么
它是一台移动的传感平台,不是神谕。
- 平台带着立杆、一根或数根天线,以及定位栈,通常是激光雷达加轮式里程计。
- 它读取货架上的库位标识,并按配置读取物料标签、货架价签,或两者兼读。
- 每次采集都绑定一个位姿:哪条货道、哪个货位、哪一层、哪一侧。
- 输出是一组观测,而不是库存数量,而观测需要解释。
- 把观测直接当库存数量的项目,通常一个季度后就把机器人关了。
夜间任务是一次对账
有价值的产物是「应有」与「实有」之间的差异,并且带原因。
- 任务开始时按 Odoo 的库存量(quant)生成库位级应有清单,而不是在导入时才生成。
- 把实读结果逐库位与清单比对,一致与差异都要记录。
- 给每条观测附上置信度:完整读取、部分读取、位置模糊、完全未读。
- 在提出任何库存移动之前先公布这份比对,让人看到原始画面。
- 保留快照,因为报告被审阅的这段时间里,货架状态还在变。
任务、路线与会话要显式建模
没有任务归属的读取只是轶事;在任务之内的读取才是证据。
- 存储任务:机器人、地图版本、起止时间、操作员或排程、覆盖计划。
- 存储航点,以及每个航点本应观测的库位。
- 存储采集会话与序号,重放才有迹可循。
- 地图要版本化,因为货架会挪动,过期的地图会把读取悄悄标错位置。
- 让 Odoo 引用任务标识,有争议的数量就能追溯到某一个夜晚。
位置与时间是最难的字段
在错误货位读到标签,比没读到更糟,因为它看起来像真实差异。
- 记录读取瞬间的位姿,而不是停靠结束时的位姿。
- 任务开始时同步机器人时钟,并拒绝时间戳明显不合理的采集。
- 时间统一存 UTC,只在显示时转换一次。
- 把观测时间与该物料、该库位最近一次库存移动做比较。
- 若采集之后 ERP 还发生过移动,这个差异很可能是历史,而不是错误。
先把数据落到暂存表
从机器人接口直接写库存量,是同时摧毁两个系统信任的最快方式。
- 原始采集进暂存表,带上任务、位姿、时间戳、标签与信号强度。
- 在暂存表里校验:物料存在、库位存在、批次存在、数量合理。
- 保留被拒绝的观测,因为读取错误常常集中在特定货道。
- 按确定性任务键分批处理,重传一次上传就不会造成伤害。
- 从暂存表提升为差异单据,之后才考虑库存调整。
诚实地把读取匹配到 ERP 记录
匹配层承担了大部分工程风险。
- 维护库位标识到 Odoo 库位的显式映射,包括层高。
- 维护标签到物料的绑定,未绑定的标签按异常处理,而不是当作新物料。
- 只有当流程明确允许时,才把一次标签读取解释为多个数量;标签不等于数量。
- 同一趟里出现重复读取时,取最强的一次,其余记录下来。
- 一条读取同时匹配两个候选记录时,要暴露歧义,而不是悄悄挑一个。
先分类差异,再动手
不是所有差异都值得一次调整,分类器决定了报告能不能用。
- 位置正确、读取稳定、仅数量不同,通常意味着真实的库存问题。
- 物料出现在错误货位,更可能是放错位置,而不是丢失。
- 一个库位连续两晚都读不到,更可能是标签损坏或货架被挡。
- 只在交接班之后出现的差异,更像是未记录的移动。
- 每一类差异交给不同的责任人,因为修法不同。
保留人在环中
自动化应当收窄注意力,而不是取消注意力。
- 把差异转成 Odoo 里的任务,附上库位、应有量、实有量与位姿或照片引用。
- 让操作员确认、更正或以原因码驳回。
- 对高价值、高差异的库位,先做一次移动端复核再调整。
- 只有误报率已被证明很低的低价值品类,才允许自动调整。
- 统计操作员推翻机器人的比例;比例上升,说明模型或地图出错了。
没人做预算的运营约束
机器人要和员工、叉车、充电桩共用地面。
- 夜班更安静但不是没人;安全规则与限速依然生效。
- 电池与充电窗口,决定了一次任务能覆盖多少货道。
- 照明与地面状况对定位的影响,比对手 RFID 的影响更大。
- Wi-Fi 盲区会让数据先缓冲;同步必须容忍迟到。
- 货架改动、托盘外伸与缠绕膜,都会改变机器人能看见什么。
指标与推广顺序
衡量机器人是否让库存变好,而不是它是否看起来很酷。
- 覆盖率:每夜实际观测到的库位占比,对照计划路线。
- 一致率:观测与 ERP 期望相符的库位占比。
- 误报率:被人驳回的差异占比,它决定自动化的范围。
- 差异闭环时间:从发现到解决。
- 先做一个区域、一个品类,只跑报告模式一个月,再开启任务。
从只读报告开始的团队,通常会发观大约三分之一的「差异」其实是映射或标签问题——而这恰恰是自动化调整库存之前最需要的信息。






