原创 2017-10-21 qqfly Nao
本文首发于作者 qqfly 的个人微信公众号:Nao(ID:qRobotics),本网站已获得转载授权。
以下为转载内容
最近大新闻实在太多,京东无人仓这个还没写完 AlphaGo Zero 就又出来了;作为还在读的博士生,业余写东西实在是跟不上热点了。目前这篇之前已经开始动手写了,所以就先讲这个吧。AlphaGo Zero 不会讲,但有机会会聊聊 DRL 在机器人控制规划领域的想象空间,或许会是另一个更革命性的技术。
---1----
背景
前两周,京东发布了其「无人仓」的视频,相信很多从业人员都看到了。如果还没看过,可以查看下面这个视频:
略
看到这个视频后,我就一直想找机会聊聊这个无人仓背后的技术。奈何最近各种 deadline,于是拖到现在。
先来看看其中用到的一些技术吧:
1. 立体仓库
这个其实是研究比较久且比较成熟的解决方案,适用于形状规则、尺寸相对稳定的货物存储。之后菜鸟物流、顺丰之类应该都会广泛采用这个技术。
之所以说适用的物品有限,是因为如果货物尺寸不定,需要自动化仓库自行计算存放货物的位置、堆垛类型的话,那就变成了一个集装优化问题(bin packing problem),而这个问题是 NP-hard。
2. 自动打包流水线
这种流水线在工厂中很常见,适用于进行相对固定、简单、重复次数多的工作。在京东的仓库里,就是用来实现自动打包等功能。
3. 分拣机器人
这个就是类似传统码垛机器人的用法,让机器人将货物从传送带上拾取并放置在 AGV 小车上。
4. AGV 小车
AGV 小车在工业仓库中用的还是比较多的,但是,在物流系统中,AGV 的数量与使用频率会远高于工业。因此,就面临一个新问题:多个 AGV 如何同时统筹规划行驶路线,从而保证系统整体效率较高且不会出现堵塞的情况?
我个人认为,这是目前 AGV 系统需要解决的首要问题,(毕竟只是做个车的话,门槛有点低)。当然,亚马逊的 Kiva 应该算很好了。京东这个我看不出这方面做得如何。
5. 自主机械臂
看到这,可能有人会问了,都是机械臂,这跟前面的「分拣机器人」有什么区别?
还真有区别!
我这篇推送的题目叫做「京东无人仓与其背后的革命性技术」,在我看来,1-4 只能算是技术,第五个才是「革命性」技术。
------2-------
以下才是正文
仔细看图中左上角,写着「mujin inside」。所以,这个工位是由一个叫做 Mujin Robotics 的日本公司负责的。
这个工位与其他的机器人工位不同,这里的机器人的运动轨迹是通过在线运动规划(Motion Planning)计算得到的。它能够自适应被抓取物体的位置、避开环境中障碍物、优化整体运行轨迹等。
为什么说它是革命性技术呢?都是同行衬托得好。
简单地说,目前基本上所有工业机器人的用法,无外乎两类:
a) 人工示教:通过由专业的工程师一个点一个点指导机器人如何运动,即使现在已经有了一些离线编程软件,也会遇到环境感知(标定)、机器人奇异点等各种问题;
b) 添加中间点:对于 pick-and-place 的任务,运行过程中的路径精度要求不高,所以一般可以通过设置几个中间路径点,然后每次把视觉检测的新路径点插入其中,利用机器人自带的插补算法完成。
除此之外,不同家机器人的示教器、编程语言、通讯方式都完全不同,一个精通 ABB 机器人编程的工程师,并不能立马把 Yaskawa 家的机器人用得飞起。
是的,目前工业机器人就是这么落后的用法,就像是播放音乐还要先确认要给哪个寄存器写数据、开车的时候还要考虑左右轮分别旋转几度。一直以来,工业机器人与人工智能就是八竿子打不着的两个领域。
工业机器人实在是太「不好用」了。
这就是为什么机器人做了这么多年,机器人的普及率、市场规模都还很小(比自行车的市场规模小)。
然而,另一方面,在学术领域,大家经常可以看到各种高端大气上档次 demo:
作死打机器人
徒手接物
种菜
虽然,学术界的 demo 离工厂实际的距离还是比较远的。但是,工业机器人相比之下实在是太弱后了。所以,是不是有可能把学术界的一些技术,通过现场调试、优化,然后应用到工业机器人上?
Mujin Robotics 的创始人 Rosen 就是这么想的。
Rosen 一直从事机器人 Motion Planning 方面的研究,作为业内大咖,很早就看准了这一点,于是在日本成立了 Mujin,花了几年时间潜心研究如何将 Motion Planning 应用到工业领域,希望能够彻底改变工业机器人的使用方法。
----3----
如何革命
为什么我认为 Mujin 手握的 Motion Planning 是一项革命性技术?
当然,可能有人会说:「你自己做这方面的,自然会说这是革命性技术,不过是王婆卖瓜咯」。
然而,事实应该是反过来的:「正是因为我认为这是革命性技术,所以才会选择这个方向作为自己的课题」。
如果不了解 Motion Planning,建议看一些我之前的介绍:
运动规划 | 简介篇
运动规划 | 视频篇
简单提一下,运动规划想做的就是「任务级编程」:
我们把原本需要一个点一个点示教或者人工根据工况选择路径点的编程/示教方式叫做「动作级编程」,这种编程的结果是机器人严格重现示教的路径,无法应对环境、工件的变化。
而「任务级编程」则是只要给它一个任务,(如从 A 运动到 B,给工件 C 面涂胶、打磨 D 面),然后机器人能够自动计算出一条可以完成这个任务的路径(避奇异、避障等)。
这将大大减少机器人的示教时间,而且不同工位、不同加工件、甚至是不同机器人,都可以用相同的程序来进行,运动规划算法会自适应地去计算具体的关节运动轨迹。
换句话说,如果运动规划技术成熟、稳定了,那么就可能一个场景:
Iphone XI 刚确定设计图纸,准备进行加工:
工厂会说:好的,给我两周时间培训一下我的工人,同时也要把流水线改了,不过工人工资越来越高了,所以加工费也得加加;
传统机器人系统集成商会说:这个用机器人也不是不可以做,不过,要用一万台机器人,我要一两个月时间示教一下;
Mujin 之类的运动规划公司可以说:好的,你给我 CAD 文件,我们的机器人生产线下周可以上线。(因为相同工作的机器人只需要写一个程序)。
当然,上面这个目前看来还是一个很美好的愿景。
就我所了解的信息看,Mujin 目前所展出的应用场景依旧以 picking 任务为主,并未太多涉及加工方面的工作。有可能是 Mujin 公司的市场方向定位就不在于此。
然而,单就 picking 而言,Motion Planning 是没有优势的。京东的无人仓同时采用了 Mujin 与 传统的方案,两者都能够胜任 picking 任务。
为了让大家感受一下传统方法(人工设置中间点)与 Motion Planning 方法的差别,我特地做了如下动图(SDA 友情出演):
(左)传统方法;(右)Motion Planning
大家现在重新回去看京东无人仓的视频,应该就能看出两种 picking 方案的区别了。
我个人还是感觉 Motion Planning 不能局限于只做 picking,因为在场景比较简单的情况下,传统码垛的方案也能够完成任务,而且研发难度与成本更低。
市场不看技术,只看是否 work 且便宜。
还是希望 Motion Planning 这一块能够真正进入到工业领域,达到革命性的作用,让机器人能够进入更多传统工业机器人无法进入的行业。
当然,这块除了 Mujin,国内目前也有几家相熟的创业公司在从事这方面的工作。感觉工业界要变天