2022 年秋天,我去 Fontana 一家 3PL 仓做项目,12 万平方英尺,刚上了 40 台 AMR 做货到人。第一周我就撞见一幕:一台机器人在空荡荡的过道中央急刹车,原地转了两圈,掉头绕了个大弯。过道上什么都没有,至少肉眼看什么都没有。回去一查日志,它在那儿"看见"了一排货架——一排两个月前就被拆掉的货架。RCS 里的地图,还停在两个月前。

RCS 就是机器人控制系统,AMR 的"大脑地图"存在它那儿。机器人在哪儿走、去哪儿充电、哪儿是禁区,全听这张图的。仓里很多人觉得地图是"建一次、管一辈子"的东西,错了。仓库是活的:货架会挪、旺季会临时堆货、地面会施工补漆。地图要是不跟着变,机器人就活在平行世界里,你在现场看到的麻烦只是开始。

机器人疯之前,地图早就病了

地图和现实脱节,机器人有三种典型"发病"症状,我基本都见过。

第一种是定位丢失。AMR 靠激光雷达扫描周围轮廓,跟地图做匹配来确定自己在哪儿。货架挪了位置,扫描到的轮廓和地图对不上,机器人就"不知道自己在哪儿"了。轻则原地打转几秒重新定位,重则直接报警停机,等人去把它"领"回来。Fontana 那家仓最严重的时候,一天十几台车报定位丢失,高峰期整个货到人区停摆了半小时。

第二种是绕远路。临时堆在过道上的托盘,机器人会当成一堵"墙"记下来。旺季一过,托盘撤了,墙在地图上还在,机器继续绕着一堵不存在的墙走,日复一日。我算过一笔账:一条主干道上多绕 30 米,一台车一天跑 200 趟,就是多跑 6 公里,40 台车就是 240 公里,电和轮胎都在烧钱。

第三种最阴险:幽灵障碍引发的连锁报警。一台车因为地图过期卡住了,后面的车排队,RCS 判定拥堵,开始给所有车重新规划路线,越规划越乱,最后整个区域的车集体趴窝。操作员在后台看到的是一片红,实际原因可能只是上周地面施工画的一条新线没更新进地图。

所以我的判断很直接:AMR 项目里,地图维护不是"IT 的活儿",是运营的日常。不接受这一点,后面全是坑。

还有一种变更特别容易被忽略:地面施工。环氧地坪重做、补漆、甚至大面积换了反光度不一样的地垫,都会改变激光雷达的反射特性。地图还是那张地图,但机器人"看"到的世界变了,定位会慢慢漂移,表现为莫名其妙的减速和抖动。这种故障最难查,因为现场"什么都没动"。我的经验是:只要动了地面,不管动没动货架,施工完都跑一次增量更新。

AMR 机器人在货架巷道中行驶近景

地图更新这活儿,到底怎么做

先说结论:小改动走增量更新,大改动重扫整图,中间没有第三条路。什么算大改动?我的线是:动了超过两排货架,或者改了主干道走向,就重扫;只挪了一两个库位、临时堆货清场了,走增量。

更新前先分级,这是省时间的关键。A 级:动了两排以上货架、改了主干道走向、新增了墙体或立柱——重扫整图。B 级:挪了一两个库位、清掉了临时堆货、地面小修补——增量更新。C 级:只换了库位标签、纸箱堆放高度变了——地图不用动,WMS 里改备注就行。很多仓的问题是把 C 级当 A 级做,重扫一整晚,或者把 A 级当 C 级糊弄,三个月后集中爆发。

更新流程我固定用五步,顺序不能乱。

第一步,变更冻结。更新前 2 小时,现场不许再挪货架、不许临时堆货。听起来像废话,但一半以上的地图更新事故都是"图还没更完,现场又变了"。

第二步,选窗口。40 台车的仓,我一般放在夜班后半段,留 2 小时。重扫 12 万平方英尺大概需要 1 小时左右(含人工复核),增量更新 20 分钟够了。窗口期把受影响区域的车清空,RCS 里把该区域设为禁行。

第三步,更新加人工标定。重扫或增量跑完,千万别直接发布。充电桩位置、电梯口、消防通道、人工叉车混行区,这些关键点位必须人工核一遍。我吃过亏:一次增量更新后,充电桩在地图上漂移了半米,车回去充电对不准,整晚 6 台车没充上电,第二天早班开天窗。

第四步,空车回放。发布前放 2 台空车,按新地图把受影响区域完整跑一遍,看有没有异常减速、急停、绕路。没问题再全量发布。

第五步,灰度观察。发布后第一个班次盯着 RCS 后台的报警日志,重点看定位丢失和路径重规划的次数有没有异常激增。有就回滚,别犹豫。

临时堆货要单独说。旺季在过道临时堆托盘是刚需,拦不住。我的做法是:在地图上划出"动态堆货区",旺季期间每天下班前清场,清完跑一次增量更新,把"墙"擦掉。说白了,临时堆货不是问题,堆完不擦地图才是问题。

版本管理:出事那天你会感谢自己

地图必须有版本号,格式我推荐"日期加序号",比如 20261008-01。RCS 后台至少保留最近 5 个版本,回滚要在 10 分钟内能完成——这是我给所有项目的硬要求。回滚演练每季度做一次,别等到真出事才发现备份的地图文件损坏了。

还有一件事很多人漏掉:地图变了,WMS 里的库位主数据要同步。货架挪了位置,库位编码没变,但机器人在新地图上的坐标变了。如果 WMS 还是老坐标,机器人到了位置,系统却说"库位不存在",任务就卡住了。我的规矩是:任何货架移位,WMS 库位主数据的坐标字段同一天更新,RCS 地图和 WMS 库位台账用同一张变更单联动。

回滚这事,我讲个真实例子。2023 年初,一家在 Ontario 的电商仓做了增量更新,发布后 20 分钟,报警量翻了三倍——新地图把一条叉车临时通道误判成了可行车道,AMR 和叉车在路口"顶牛"。值班主管按演练过的流程回滚到上一版,8 分钟恢复,旺季的单子没耽误。如果当时没有版本、没有演练,那一晚至少损失一个班次的产能。回滚不是"以防万一",是生产工具。

一仓多品牌车队,一张图管不了所有车

上面讲的都是"一张地图"的维护,但现实更麻烦:很多仓的 AMR 是分批买的,两个品牌、甚至三种车型跑在同一张图上。我见过最典型的一家,Fontana 那家 3PL 后来又添了 10 台窄巷道机型,两个品牌的车各用各的 RCS,地图却是同一套底图。窄巷道车过去没问题,老车型过去直接拒行——它的安全余量参数大,同一条巷道在它眼里"不够宽"。运营天天投诉"新车能去的地方老车去不了",其实不是车的问题,是地图只按一种车型的"有效车宽"标定的。

我的做法是:底图共用,通行层按车型分开。RCS 里给每种车型设独立的有效车宽和减速区参数,窄口、转弯半径小的路口,按最"娇气"的那个车型做人工标定。多品牌之间如果各用各的 RCS,两个系统的地图必须从同一份底图生成,版本号对齐,更新时一起发版。我见过两个 RCS 各自为政的仓,A 系统更新了、B 系统没更,两个品牌的车在同一个路口,一个认为是路、一个认为是墙,撞报警撞到怀疑人生。

还有一个细节:充电桩和换电位是按车型标定的,不是按地图标定的。增量更新漂移半米那个坑(前面讲过,6 台车一夜没充上电),根因就是标定只做了一次、按的还是老车型的参数。加新车型、挪充电桩,都要重新做车型级标定,写进变更单里,别靠记忆。

最后给一个明天就能用的建议:定一条规矩,每周五下班前,派一个人拿着本周的现场变更单,沿着 AMR 的主干道路线走一圈,10 分钟,核对地图和现实是不是还对得上。发现对不上,周一早上第一个窗口就更新。这 10 分钟,是我见过 ROI 最高的 10 分钟。