小家伙,大智慧
“这机器人跑得太傻了吧!”
听到作业人员的抱怨,我停下了脚步,饶有兴致地瞅着这些“小家伙”,它们长得四四方方,像个扫地机器人,不过“头上”顶着一个大托盘,正背着货物慢慢往前走。看了一会儿,我发现它们确实不怎么聪明,要不堵成一片,要不跑着跑着就乱套了,还得有专人去“服侍”。作业人员一脸不高兴,“还不如我直接开叉车拉货来得快呢!”
这些 “小家伙”是制造部2017年采购的新一代AGV。AGV是自动导引小车的简称,就是可以自动搬运货物的智能机器人。我从清华博士毕业后加入华为制造部,入职后的前两周在产线实践时,就被这种机器人吸引了,因为它跟我的研究方向多少有些关系。
最近这十年间,我一直从事的是智能优化理论的应用转化工作,在钢铁、玻璃、微电子等行业也做过智能优化的算法实践。我觉得可以通过模型和算法优化,让这些“小家伙”变得更聪明。
隐形侦探,揪出“真凶”
自动搬运货物的机器人并不罕见,京东、阿里、亚马逊等公司都大量使用AGV来打造智能仓库,但我们制造的应用场景比电商场景要复杂得多。电商场景一般是仓库内部几个节点之间的往返配送,而我们的场景包含仓库、线边超市、产线工位、成品发运等十几个节点的交叉循环配送。电商场景好比就是公交车系统,固定站点往返,而我们的场景更像是滴滴打车平台,复杂多变。
刚开始车间导入的AGV比较少,运行没什么问题,当AGV数量越来越多,问题就来了。正如我在现场看到的那样,那时候异常的车子很多,IT开发和运维的兄弟动不动就通宵蹲守,不但要“烧脑”解决系统问题,还要撸起袖子人工推车,真是一把辛酸一把泪。但大家也知道,生产自动化是大趋势,是未来的方向,要坚决推行下去,不能半途而废。
他们尝试了很多方法,问题仍然没有得到解决,因为这涉及实时调度的核心算法,不是简单的优化改善就能万事大吉。虽然我有相关经验,但实时调度也是第一次碰到,能做成什么样我也心里没底。刚开始我们用供应商的算法包在仓储内部几个节点的场景也实现了自动调度,但遇到新的应用场景时却吃了个闭门羹。因涉及商业秘密,供应商的算法包是完全封装的,没办法做二次开发。找供应商定制开发,他们也委婉地拒绝了,那怎么办呢?我心想,核心技术一定不能受制于人,一定要掌握在自己手上,所以内因、外因都促使我们走上了自主研发的道路。
首要任务是把场景和问题梳理清楚。2017年10月份起,我开始了白天泡仓库,晚上刷视频的生活。仓库调研,都是实打实的场景,但看到的仅仅是单台车或单个节点的问题,而AGV调度是系统运作,必须把AGV搬运录像调出来,从全局角度来分析。不调不知道,一调足足有一千多个小时,这要是45分钟一集的电视剧,得有一千多集。当然这不是看电视剧,没问题的部分我就快进,但有问题的视频我必须放慢来分析,一分一秒都不能错过。主要看调度结果为什么跟我想象的不一样,原理是什么。有时得放慢五六倍的速度来反复研究,几个小时看下来,眼睛又酸又胀,感觉近视又深了几度。有人可能觉得这多无聊啊,但在我看来,这不亚于看一部侦探电视剧。从细节、线索入手,顺藤摸瓜,把掩盖在表象下的问题和真相一一揪出。最终,经过100多次现场调研和1000多个小时的AGV搬运录像分析,我们完成了AGV智能调度的十几类优化子问题的数学建模与算法设计,也做了一些算法上的创新,比如就快选车、提前衔接等等。这让我大有侦探抓住嫌疑人的快感,“看,我把你抓住了吧!”
拿“就快选车”来说,大家可以想象一下,如果10秒钟内AGV突然接到几百个搬运任务,哪个任务应该分配给哪台车比较好呢?有人说很简单呀,就近分配就可以啦。事实上,就近分配很多情况下是不行的,举个例子:就像滴滴打车一样,给你分配一个司机,虽然很近,但是如果司机过来的路很堵,你就会等很长时间,还不如分配一个稍微远一点的,道路畅通的,很快你就能坐上车。
这其实就是任务调度问题,实际AGV的任务调度问题很复杂。小车一直在动态变化,有的正在搬东西,有的遇到障碍物,有的在充电,一波任务还没干完又来一波,还要自动对接移栽机、封箱机等十几种外部设备,还要协同考虑空托盘、空货位、充电桩等其他资源的综合利用,一旦调度不好,就很容易出现拥堵、空跑,很容易出现配送效率低的情况。
我们设计算法的目的就是要在这些问题上做到深度优化。2018年4月,我带着两三位团队成员,完成了三万行代码的交付,开发出的第一个算法版本正式上线了。
小车“蒙圈”,系统几近瘫痪
我们选了一个只有十几台AGV的小仓库进行算法切换,没想到出乎意料的顺利,没出任何问题,首秀就切换成功。看着跑得欢快的小车,我们都高兴坏了。后来我们又信心满满地切换了几个小仓库,也非常顺利。
但自主研发哪有一帆风顺的,总会有磕磕绊绊。就在我们高歌猛进的时候,5月份的一天下午,我突然接到一个紧急求助电话,“小车把主干道都堵了,赶紧过来看看吧!”打电话的是一个刚切换算法的仓库的主管,语气非常焦急,我来不及思考就飞奔着来到了现场。这个仓库比较大,已上线AGV八十多台,相较于此前的小仓库,这里的场景复杂很多。如果说之前是小试牛刀,那这里才是真正大显身手的时候。没想到,这下我们摊上大事了。
经过一番后台分析,我们找到了问题的根因。当时一台小车已经顶起了货物,准备运输,这时系统出错,又给它下了一个任务,小车不知道该听谁的,直接就“蒙圈”,卡在原地不动了。我们一边调试,解决Bug;一边人工处理后台指令,想尽快让车子再正常跑起来。但随着任务不断下发,错误接二连三,整个系统都乱套了,几十台车直接瘫痪,停在了主干道上。这种情况下,回退到供应商的算法包是最快捷的解决方案。但我们不甘心,前几个仓库都顺风顺水,以为问题应该没有那么复杂,想再坚持一下。
但事实上,我们过于乐观了,问题的严重性超乎我们的想象。我们忙了一整个通宵,推了一晚上的车,天都快亮了,问题依然没有解决,为了不影响后续业务,我们选择了系统回退,这个仓库暂时又用回了供应商的算法。这件事情给我们浇了一盆冷水,但也让我揪出了当时自研算法的不足——实时性不够,难以适应海量并发任务的场景。
AGV需要实时的信息反馈和调度,越短的时延,信息就越精确。我们最初定的实时性要求是每三秒钟调度一次,这在任务不多的小仓库没问题,但到了大仓库就行不通了。大仓库一瞬间可能就有几百个搬运任务下发,任务下发后小车要三秒才能接收到指令,这时小车都已经跑了好几米了,位置和状态已经发生了很大变化,这就难免造成错误。对我们研究智能优化算法的人来说,分钟级的优化并不难,但秒级甚至毫秒级的实时优化难度很大,既要满足调度的要求,又要攻克极简的挑战。
说实话,当时我也很迷茫,只能不断尝试,不断实践分析。试了三四种算法后,实时性依然没有大的改善,那段时间我几乎所有精力都扑在这个问题上,可以说是日思夜想。正所谓念念不忘,必有回响。在一个深夜,灵感突然造访,一个此前从没想过的点子冒了出来——瓶颈优化。瓶颈优化简单来说,就是将调度过程中动态变化的复杂度最高的点识别出来,并优先集中资源解决,解决完后再进行其他简单环节的调度处理,这样就可以缩短总体处理时间。如果按照此前的算法框架,每个点都是同等的计算资源,也不清楚哪个先处理,哪个后处理,一旦遇上瓶颈问题就容易卡住,导致后面一连串问题处理的停滞,处理时间无疑就加长了。果不其然,使用瓶颈优化方案后,实时性提高了很多,后来我们又将一些子问题换成低频预处理的模式,进一步缩短了时延。目前,我们已经能做到一秒调度的实时性要求。
解决了算法的实时性问题之后,我们持续对算法进行迭代和优化,不断积累经验,AGV作业已经越来越聪明,越来越高效,算法推广基本能做到“无感切换”。目前自研算法已经推广了包括制造部的无线、企业网、固网、终端在内的30多个库区,已经实现了自动对接电梯、提升机等设备进行跨楼层垂直运输和自动对接产线工位进行跨库区水平运输等50多种复杂场景的良好适配,在线调度的AGV已经有400多台。
正在上电梯的AGV
梦想构建“超级大脑”
我们的工作就是帮助企业节能、降耗、提质、增效。有了这套算法后,AGV的综合调度效率在供应商算法的基础上平均提升了30%左右。原来100台车干的活,现在70台左右就可以干完。截至目前,400台AGV效率提升带来的成本节约累计逾1000万元。
比较有成就感的是,现在我去车间现场,经常听到有人问AGV调度用的什么算法,作业人员回答:这是我们林博士搞的,叫“林博算法”。当然,这不是我一个人能搞定的事情,需要业务、IT、设备、算法等团队通力协作才能让算法真正跑起来。
目前我们在生产自动化部的大数据及人工智能实验室搭建了第三代AGV的研究环境,研究人员可以直观地看到新技术的快速应用转化。第三代AGV将摒弃二维码导航,实现激光扫描,构建三维地图,精确定位,灵活避障。算法将会兼容不同供应商、不同类型、不同功能的AGV进行混合协同调度。另外,5G也将派上用场,提供更快的响应速度,更低的网络时延,AGV之间的高速通讯也将建立起来,届时,整个AGV调度将更加高效和智能。
当然,目前我们所做的仅仅是物流环节的局部优化,但我们正一步步朝着智能制造前进,希望将来我们能基于各种智能优化引擎,建立一个“超级大脑”,进一步挖潜增效,实现制造交付全流程中来料、仓储、计调、生产、发货等关键环节的全局优化,驱动制造走向“智造”!
未来,如果有人想知道智能制造的标杆在哪里,希望我们能骄傲地告诉他:在华为松山湖!
本文为《华为人》版权所有,未经允许不得转载。如需转载请联系编辑部hwrb@huawei.com
华为人期刊 机器人
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。