我家楼下的巷口走了三年配送机器人,去年之前,每个月总有三五次,机器人大喇喇停在路中间,顶灯闪得着急,就是动不了。问后台,说「遇到障碍物,路径规划失败」。十有八九,是卖卤味的张叔出摊,把车停出了原来画的线。
算法工程师小苏每周六都蹲在巷口石墩子上喝咖啡,盯着机器人跑。他说他们团队拿这老巷当测试场,磨的就是机器人导航栅格动态更新策略。磨了快一年,现在你再看,巷口再乱,机器人也能顺顺当当走到底。
原来的栅格,都是钉死的
很多人没听过导航栅格,说穿了很简单。机器人认路,先把整张地图切成一块一块大小均匀的小格子,就是栅格。每个格子标上「能走」「不能走」,顺着能走的格子找路,就是最基础也最常用的导航逻辑。
早些年都是静态栅格。一次标好,存在机器人脑子里,大半年不带动的。可老巷这地方,哪有什么一成不变的路?今天阿婆搬竹椅坐在门口晒太阳,明天共享单车堆在拐角,后天张叔出摊占半米路, static 栅格哪跟得上这种变化?
之前也试过全量更新,就是整个地图重新算一遍再存进去。可配送机器人本身就没多少算力,全量更新一次要等三五分钟,站在太阳底下动不了,还送什么外卖?去年有次双十一,三个快递机器人全卡在张叔摊子那,最后快递员骑着电动车跑过来,挨个抱去配送点,累得满头汗骂街。

动态更新,其实只改变了的地方
小苏说,他们现在做的这套策略,核心其实没那么玄乎——哪变了改哪,不用动整张地图。
机器人跑的时候,激光雷达和摄像头每秒扫十几次,只要发现某个栅格的状态不对,原来能走的现在堵了,原来堵的现在通了,就只提取那几片栅格重新标记,更新完直接用。不光自己用,还能把这个变化打包成一个几十字节的更新包,推给这片区域所有在线的机器人,几毫秒就传完了,根本不占算力。
说白了,原来的静态栅格是打印好的整张地图,破个洞你就得重新打印一张,费钱费时间。现在这套动态更新,就是给地图贴个补丁,哪破了贴哪,贴完就能用,不耽误走路。
上周张叔把摊子往外面挪了半米,占了三个原来的通行栅格,第一个过来的机器人十秒就更完了,后面五个机器人直接用新栅格,一个都没卡。我那天点了杯冰美式,三十七八度的天,送过来杯壁的水还没淌完呢,冰碴子都还在。说实话,我之前听什么导航算法,都觉得是飘在天上给自动驾驶大汽车用的东西,没想到就是这么个小小的策略,改了三个栅格,就让我喝上了不化的冰咖啡。

机器适应人,而不是反过来

之前管委会为了机器人能走,特意在巷口画了黄线,要求所有摆摊的都不能出线,超线就得挪。张叔的卤味车本来就大,收了折叠操作台才能刚好放进线里,大半卤菜摆不开,一天少说少卖一两百。巷口本来就挤,大家都嫌机器人碍事,说好好的老巷,非要塞个机器进来,把人的地方都占了。
现在呢?管委会把黄线擦了。说反正机器人自己能绕,爱怎么摆怎么摆,只要别堵着巷口大门就行。张叔现在把操作台全展开,还能放两个折叠小桌子,下午常有下班的人坐下来啃个鸭头喝瓶冰啤酒,巷口反而成了整条街最热闹的地方。
你说有意思不?我们之前总说,技术进来了,就要把人的生活掰成机器喜欢的样子,路要直,摊位要齐,什么都得整整齐齐,原来那点烟火气都给挤没了。结果这个小小的机器人导航栅格动态更新策略,反过来了——机器改自己的地图,适配人的乱七八糟的生活。
上个月我还看到,流浪猫大黄蹲在路中间睡觉,机器人扫到,直接把那块栅格标成不可通行,绕了半米悄悄走过去,连大黄的呼噜都没吵醒。能接住生活的乱七八糟,才是真的好用的技术,这句话我那天看完就记住了。
不过话说回来,也不是没有bug。上次刮大风,掉了一片梧桐树的大叶子挡在传感器镜头上,机器人误把叶子当成了大障碍物,更新了栅格,所有机器人绕了五分钟,后来还是清洁阿姨扫掉叶子才好。小苏他们现在还在调阈值,什么样的障碍物才值得更新,一片叶子不用,一个摊子就得更,这个度还得慢慢磨。谁能一开始就做对呢?
昨天我蹲在张叔那吃卤味,看着三个机器人一前一后拐进巷口,稳稳当当绕开张叔的摊子,绕过蹲着打盹的大黄,停在单元门门口,叮的一声叫人取货。巷口的树影晃在机器人的白色车身上,栅格在机器的脑子里不停变来变去,老巷的生活还是原来的样子,吆喝声、碰杯声、猫呼噜声,一点都没变,又好像哪里都变软了,不再是冷冰冰硬邦邦的。
以后会不会所有的机器人都用上这个策略?工厂里搬运的,山上植保的,城里送外卖的,小区扫地的,都不用人天天蹲在后面改地图,它们自己看着脚下的路,哪里变了改哪里,自己往前走。
说不定哪天,我们自己也能学学。不用动不动推翻全部重来,哪里变了,改哪里就是了。
作者|大讲堂
排版|大讲堂
审核|安然
大讲堂