宗仁 黄鑫联合编辑雷锋网雷锋网雷锋网
过去的工业机器人,在我们眼中一直是一些冷冰冰的自动化设备,但随着计算机视觉的应用,它慢慢变成了一个有感官,有思维,有情感的新一代工业机器人,并推动着现在珠三角、长三角、东北三省那边轰轰烈烈的机器换人运动。但是工业机器人中的计算机视觉和我们常见的计算机视觉应用有啥不一样呢?
本期硬创公开课我们请来了李群自动化创始人&CEO,以他们创新工业机器人两年多的体验,为我们阐述工业机器人的计算机视觉是怎样的,它对于帮助现在提倡的柔性自动化有何意义,以及现在在应用中遇到的问题。
石金博,李群自动化创始人&CEO,香港科技大学ECE博士,师从世界顶尖机器人专家李泽湘教授,对世界机器人先进技术和产业发展模式有深刻理解与认识。2011年创立李群自动化,致力于小轻量型工业机器人自主研发;2013年研发出全球首台驱控一体并联机器人。该机器人高度集成的设计已陆续被国内外厂商效仿;领导研发团队突破高速实时视觉检测技术等瓶颈,开发出具备世界先进技术水平的Apollo系列并联机器人、Artemis系列SCARA机器人及相关配套产品。
Q:CV在工业机器人上的应用和服务机器人上的应用的主要区别是什么?
其实CV在机器人的应用是从2011年开始,大家逐步在一些电子产品的装配上会用到机器视觉。像我所知的海康,原来这些公司用的主要的是视频采集,并没有加入视觉的算法。
如果说差别,应该从下面几个方面来说。
第一个是应用场景。在工业机器人的环境里,计算机视觉看到的场景是相对单一,比如工业元器件或者材料,或者监控一些操作过程。服务机器人应用场景就要变化很多,比如生活中的场景,比如辨识人的首饰,表情啊。
在服务机器人里面,比如家用机器人,无人机,视觉其实是一个非常重要的导航的工具,利用CV完成对周边环境的测算和空间建模,还有一个领域是比较典型的,就是监控领域。
第二个是它所起的作用。计算机视觉对机器人来讲无非是解决几个事情,在工业机器人里面,可以通过视觉的导引完成轨迹或者定位的作用。
第三个是精度方面。在工业机器人里面,计算机视觉的辨识精度一定是在毫米级以下的,这里面包括一个静态的辨识精度,一个动态的辨识精度,静态指的是相机或者观测物品相对处在一个静止的状态,它这个时候的辨识精度取决于相机的分辨率,包括物品的边缘是否清晰,差异化是否很明确,这个时候精度甚至可以达到微米级以下,服务机器人据我所知,大部分的精度并不会很高,可能会在厘米级以上。
第四个是在工作空间上的范围。工业机器人的视觉辨识的空间,一种是把相机固定,视觉(相机)的大小是根据我的安装空间导致视觉的分辨率有所限制;但服务机器人的工作空间,我的理解它的工作空间限于电池能持续多久。
第五个是安全性。工业机器人上的视觉部分是要求不太会被人所干扰的,尽量避免人和设备的不必要交互,但在服务机器人上,人和设备的地方非常多,这是视觉是人和服务机器人交互的一个很重要的途径。另外一个是生命周期,这里面涉及到我视觉系统里的光源,相机安装的可靠性。
那总的来讲,计算机视觉在工业机器人和服务机器人最重要的差异,我觉得主要是在精度和可靠性方面。然后剩下的就是应用场景的专门的功能需求。
先简单地列举一些视觉在工业机器人里的应用:用的最多的是辨识物体的位置,方向,然后配合机器人进行抓取,一般精度要到0.01毫米左右。
我认为工业机器人的视觉传感器就是工业机器人的整个视觉传感系统,这里面考虑的大部分都是可靠性和维护性,在真正的使用中,新的硬件方案或者新的产品并不是很快就会进行导入的,它都会需要一个长期的检测过程,我们说的视觉系统一般包含相机,镜头,光源还有一些视觉的处理器,最近几年smart camera这种传感器算是用的比较多的。
smart camera大部分的用法都会选用一些PC base的用法,最典型的是基恩士,康耐视或者欧姆龙,他们的视觉最开始都是在PC上,利用对数字相机图像的采集处理,然后利用一些视觉算法输出数据,最近几年,基恩士首先把它的smart camera把它大量应用在苹果公司相关的一些检测设备中。
这种smart camera比较好的地方是:它的封装会会非常紧凑,整个镜头非常便于安装,然后是在算法上进行了大量的简化,和设备相连的时候,整个设备的安装和相连非常的便捷。
现在最多的是基于2D的工业相机,但3D的导入会是一个非常明显的趋势,3D视觉技术现在达到的精度以及对于机器人配合的这种要求,目前来说还没到一个相对成熟的阶段,可能还需要一定的时间进行导入。
针对2D的相机,我们在选取的时候主要会考虑基于怎样的应用场景,比如被测物体的大小,需要达到的辨识精度,这个部分主要是一些规格上的选取。如果说谁家的相机会更好,我们现在主要是选择德国和日本的一些相机,比如说德国的IDS,日本的欧姆龙;镜头的话主要选择computar的镜头,在这种品质保证的情况下,其实产品大同小异,不会差别太多,可能无非就是在使用和安装习惯上的差异,以及价格包括货期都是很重要的衡量标准。
Q:工业机器人讲究机器和机器的交互,机器和人的交互以及机器和环境的交互,您能举个例子为我们讲讲他们是怎样实现的?
这个其实是我们比较擅长的部分。因为我们李群自动化从2013年开始正式做机器人,到现在我们做的最多的事就是考虑机器人和设备、机器人和视觉或者和人如何交互。回答这个问题之前,我们需要有一个前提:解决交互问题前应该是交互双方有个协议,即交互双方都可以懂的语言。
这种语言可以简单可以复杂,可以是一种或几种,就像即使是两个语言不通、文化背景不同的人还是可以通过眼神或者肢体语言去交流。
如果按照机器、人、和环境,我们分析一下他们所能发出的信息的形式和接收的信息的形式,以这样的思路来进行。我们以机器人为例,机器可以以什么样的形式来表达出他想要表达的信息呢?
我们一般可以分两种。
一种是机器主动想表达的信息,这时候可能是机器的一个状态,机器需要告诉别人的一些信息,我们认为这是一种可控的信息,一般可以通过网络、串口、I/O、或者是它可以操作的一些动作来表达出来。
还有一类信息是异常信息,这一类的信息其实可能不是机器想要发出的,而是一种被动输出。什么叫被动输出呢?比如,一个机器突然输出的产品大量产生异常,或者一个机器跑跑跑,某一个环节、电机要运动,然后发现怎么都运动不到。还有一种情况是机器做了一种行为,这种行为是不可理解的,或者不是预设的,那我们都认为这确实是机器要发出的信息,但不是机器主动发出的。
从人的角度来说,人是最高级的生物,可以通过工具发出他想要发出的信息,比如说他可以通过用户界面,甚至是一些按钮的操作,准确的发出他的指令,人也可以通过触碰产生一些信息,比如触碰一些光栅。在协作型机器人里,人和机器触碰甚至可能代表人让机器人停下来这种指令。
环境的信息其实是最被动的,因为环境是无法主动表达信息的,它可能是通过来料、出料的异常,甚至是温度、湿度的变化、甚至突然断电了,大家也不知道发生了什么。这些信息,你做一个简单的分析,会发现在这种交互过程中,异常信息是最需要提前做好准备和响应方案的。
而且同时,人和机器作为两个可以主动交互的对象,人比较高级,可以辨识、响应几乎一切信息,但是人最大的问题在于人会疲劳,人可能会有情绪干扰,导致对信息判断的及时性和准确性进行干扰,没有机器判断那么稳定。
机器由于不够聪明,一定没有人聪明,这时就会变成机器能把信息表达得多准确多全面,其实取决于设计机器的人希望机械可以做到什么样。
回到现在这个问题来说,我想重要的就是异常的信息,我认为在自动化环节,三方的交互中,如果一切都是没有意外的,大家都按照预定的节奏和行为来进行操作,那么交互大可不必,每个人都按照既定要求来做,这其实是最和谐的,实际上意外一定会产生,交互的意义就在于如何处理意外。
这时候就变成了,我们如何感知异常,同时协商出来面对异常的机制,大家交互的协商,最后达到异常的处理,回到原始的轨道。
这里给大家举个例子,这里给家看个我们做的方案:
这是一个非常简单的生产线上下料工艺的需求,大家可以看到,在图片左手边模拟的是一个隧道炉,这实际上是一个手机盖板非常典型的加工工艺,玻璃在进行前端丝印之后,它需要经过隧道炉完成印刷油墨的工艺要求,达到油墨的固定。
前端,是人把丝印好的玻璃放在传送带上,上料的速度我们得到的信息一般是在1300片/h,有个重要的工艺要求,由于隧道炉中有烘烤的工艺,所以传送带是一定不可以停的。
那么我们现在做的自动化是要干嘛呢,是要把从隧道炉里出来得刚刚烘烤过的玻璃安全的下到料盘里面。
由于当时当时给我们的空间限制,隧道炉末端的空间非常有限,就是图中两个人所在的位置,那么自动化设备要快速的把每小时一千三百片的来料下到料盘里,这就是自动化的工艺要求,大家可以想想,对于机器人来说,在这样的工作空间里每小时可以做两千次,那以这样的速度,这个自动化方案的难点和异常点在哪里?
这个是我们最后的布局方案设计。
我们做了一个工作站,这里包含了绿色的传送带,用来承接前端烘干机的传送带。在前端有一个视觉框架来动态识别玻璃的位置和转向,末端有一些机构来保证下料料盘如何周转。现在我列举几个实际操作中我们需要思考、处理的部分:
1. 瞬时uph。刚才提到烘干机前端是人工上料。人工上料有什么问题呢?比如,这个人的早中晚生产状态不同,在精神状态好的时候,可能连续的一段时间内生产效率非常高。可能在很累的时候生产效率就会很低,那么按照客户给的数据1300uph。这时就遇到了一个问题,假设五分钟之内,工人的状态很好,他的瞬时效率高于2000时,机器人怎么办?按照设定条件,机器人是来不及抓的。
2. 由于我们的视觉是用来判断传送带上的玻璃,我在辨识的时候,有些在上料的时候,混了一些一些料或者其他什么误差,导致玻璃没有辨识出来。或者说两个玻璃挨在一起了,视觉无法辨识两个玻璃的相对位置。这时候,这两片玻璃是抓不起来的。
3. 我在下料的时候,当我要把玻璃放在料盘里,恰巧料盘满料,下一个料盘还没过来。这时传送线上的玻璃如何处理?
4. 料盘和玻璃也有放置精度的问题,如果说传送带像我们现在看到的部分,宽度是一米二,如果我们用一个视觉相机来说,在一米二宽的视场范围内,在视场边缘会产生严重畸变,这时我在吸取玻璃时,比如吸取5.7寸的玻璃它在边缘的偏差可能就要大于两毫米。这时吸取的玻璃可能放不进料盘。
5. 假设吸盘变形,机器人看得很准,机器人到位也很准,但是吸盘坏了,吸起后玻璃偏了,还是放不进料盘。
这些都是生产实际中真实会存在的异常,无论是由于物料、还是人工配合,这些异常都是要去及时发现并且处理的。
这是我们最后生成机台的样子,如果感兴趣可以去李群网站上看整个机台的视频。
其实在这个机台里刚才那几个异常,我们不仅对传送带提供了一个可控的功能,保证我们一旦有玻璃来不及抓,或者有玻璃流出时是否由传送带可以停止,如果不停止的话,下端有个回送的传送带,保证玻璃不会掉进缝里或者其它地方,保证不会直接产生废品,我要尽量及时回收,避免损失。
另外在精度方面,由于前端的视觉变形,或者由于吸盘吸取的位置差异,这个是不可避免的,所以我们在机器人吸起之后放置的过程中增加了我们自己开发的飞拍的功能,保证了在机器人运动时同步辨认玻璃在吸盘的位置,保证玻璃可以完好无损的放到托盘的相应位置中。
这个过程中,其实所有的交互都是被设计,甚至有方案能够及时感知这种交互中的信息,然后让系统有交互的策略来进行响应。
Q:目前车间已经不是批量生产了,开始提倡柔性生产,由过去一条线性方式变成了环形的加工。这方面你们自己的产品有什么建树?
总的来说我们现在接触到的实际需求,客户还是会首先考虑已经批量生产的产品的自动化改造。
现在其实真正急需自动化改造的大部分都是一些小批量,多品种,但是属于同类产品这样的一种生产状态。柔性主要解决的就是实现不同产品切换的时候能实现快速切换,或者在不同工艺的时候能进行一个配置化的快速转换。
一条线性的方式变成环形的加工。这个部分应该说还不是都是这个样子的。其实是要根据每个客户自己的一个产品形态和工艺特点,为客户定制一些适合他们的生产形势。拿我们这边去年完成的一个月饼盒包装线作为例子。这条后包装线的视频大家也可以从我们的网站上直接看到。
首先我解释一下这条后包装线,大家看一下图片上方有一个红色的机器人。我们可以认为这条线的起始端是从那里开始的。它的作用是把铁盒装的月饼的盒子,从卡板中,分批放置在生产线上面。
供应商来料的方式是一个空盒的铁罐来的,所以盖子和盒子挨在一起,那我们装月饼之前需要把盖子和盒子进行分离。
另外一个在精度方面,由于前端视觉的变形。或者是由于吸盘吸取的时候的位置的差异——这个是一定会存在的——所以我们在机器人吸取完玻璃之后的放置过程中增加了我们自己开发的飞拍功能。保证我们的机器人在运动的同时可以动态辨识出玻璃在吸盘上的位置。进行位置的校准,保证玻璃可以完好无损的放置到吹盘的相应位置上面。
接下来的一段作用就是把这个盒子进行开盖。供应商来料的方式是一个空盒的铁罐来的,所以盖子和盒子挨在一起,那我们装月饼之前需要把盖子和盒子进行分离。
但是由于包装的要求,客户是要求盖子和盒子的花纹必须要能够完整的对齐。什么意思呢就是他必须按照一定的规范进行一个配对。所以我们在开盒之后会有一个视觉的工作站来完成对各个花纹的一个调整。
下一个工作站大家可以沿着这个图顺着传送带往图片的左边来看,这两个蓝色的,有一个圆圈的这两台deta机器人完成的是对月饼的一个快速的分拣。
在这个包装过程中还有一个很重要的要求就是月饼上的花纹要和盒子和盖子的花纹保持一定的规律,要保持一致。所以在整个月饼的来料过程中,我必须要对月饼的花纹进行一个识别和排序。
接下来就是把排序好了的月饼放在盒子里面,然后再把这个盖子盖上去。然后就是把每16盒的月饼放到箱子里面,然后完成封箱、称重、码垛。这样一个整条的一个自动化的生产线。
人呢,其实是因为这条线暂时还没有完整的连接前端的生产,所以需要两个人把前端生产好的月饼放置到这个产线上来。像我们在超市里面还能看到一些礼盒装的,纸盒装的,甚至是散装的月饼,这些是不适用的。
那么在这个过程里其实我们真正实现柔性的对象主要还是这种铁盒装的月饼。主要是不同的口味,或者包装的花纹不同,对这些我们都可以实现一个零切换的一个工作时间。我们只要在通过软件的一个选取配置就可以自然完成整个产线的工艺转换。
实现这样一个柔性的工作站,其实在整个过程中我们对客户的工艺做了非常非常大的改造。
这里面可能就是会有点像刚才主持人提到的。原始的客户的包装流程可能就是一排,我记得他们讲的是大概28个工人。完成比如从月饼过来,我要从旁边拿盒子打开,把月饼放进去盖上盒子。扫码装箱码垛,这样一个功能。
过程中,人的作用其实除了操作之外,还有一个是检查。比如说检查月饼袋子有没有打开,盖子有没有盖好,有没有出现什么样的异常?在实现这个工作站的时候,我们首先花了非常非常多的时间重新的去学习客户的工艺。去理解哪些工艺要求是必须要实现的,哪些工艺的安排是可以被更改的?然后我们再通过我们对自动化的理解,然后依据这种对客户工艺的讨论。双方一起坐下来,商讨形成最终的自动化的解决方案。
这个里面我真正想说的一点就是柔性,首先现在的机器人技术,虽然我们用到了视觉,用到了很多信息化的东西,但是它也很难像人一样,可能只要靠一个。比如组长或班长说接下来我们要怎么怎么干了,人们很快就可以开始干。我们现在的自动化做不到那个样子,所以柔性一定是在一个范围内进行的这种柔性。
总之,柔性的实现,不仅仅是靠自动化的人来实施的。很多时候是先考虑工艺怎么做到柔性?然后再考虑自动化,这个柔性的工艺有没有合适的自动化的实现方式,在这种相互切磋相互交流的过程中,最终形成的方案。才是一个柔性最高、实施效率最高的一个整体的柔性工作站。
Q:作为应用机器人视觉的客户,在应用的时候你们遇到了什么问题,如何解决的?
第一,目前来说我们在用到视觉的时候觉得其实困扰最大的是我们现在用的视觉产品对于光源方案的要求非常非常高。
如果光源的方向不好那拍出来的图片的稳定度和它的质量,其实会极大的影响最后处理的效果。但是光源的方案很难说,即使是同一类的产品,他不同批次不同材料都可能会无法适应,可能会产生一些不稳定因素。但是我在实施过程中又不太可能经常更换光源方案,所以这一点上我觉得对我们现在来说是非常不方便的。
比如说我们之前遇到的一个测试需求是测试PCB板,但是这个时候我们会发现,比如不同的PCB板的工艺,他有些上面可能刷的是比较亮一点的防护漆,有些就会比较暗像漫反射一样。这个时候不同的光源就体现出非常大的一个差异。
第二,就是我们现在用到的视觉,我刚才提到的,主要是一些基于2D的视觉。
在这种高精度的视觉应用里,我们经常发现的是,标定的好坏会极大的影响整个方案的精度最后是否能够达标。
但是标定呢,这个过程又感觉没有一个非常快速的方式。比如说我每次更换夹具,或者说客户端可能会偶尔要进行一些设备的维护啊,或者是搬送。那这时候可能都需要对视觉进行重新的标定。
然后客户现场的工人也好或者设备工程师也好。大部分也没有经过这种专业的训练。所以往往就需要我们的服务工程师到现场帮客户做一个。这样一个我们觉得很regular的一个动作。这个部分是我们的另一个困扰。就是觉得现在能否有一个快速标定甚至是不用标定的一个视觉方案。
第三,其实是我们现在自动化行业大家都在迫切等待的一个部分,就是视觉的缺陷检测。
但缺陷检测这个其实在整个行业都是一个非常非常空缺的地方,毕竟缺陷太多了!我们举个例子,刚才的那种手机的玻璃的缺陷。
可能划痕有千变万化,那不同的厂家对于不同的划痕,要求都不一样。这一部分其实是一个非常非常难做一个标准化的缺陷检测的工艺的。
其实我们做自动化的时候大家都在讲机器换人,那是不是机器换了人就可以了呢?我们的经验是人在生产中除了在很多的供应环节,他除了简单的搬运,还提供了自己的视觉和大脑,他们提供的就是一种缺陷的检测。
但是如果说比如说有十个缺陷,我们解决了九个还有一个缺陷无法解决。那这个时候其实我这个人工检测的工位还是没有办法进行替代。所以从某种程度上来说。是否有好的缺陷检测的方案和解决方案,其实是真正实现大量人工替代的一个很重要的环节。
我所知道的很多场景,我有很多做视觉的朋友也在做这种方面的缺陷检测,但是这个过程其实非常的困难。
因为缺陷的这种原因或者说缺陷的形态太多了。现在大家一般在做曲线检测的时候采用的那些方案。很多人用的是一些开源的算法,比如opencv。或者是hoken的一些底层的库甚至是在别人的视觉上面做二次开发。这样的一些系统架构也很难在客户端能够做一些比如智能的一些判断或者一些经验的累积。所以很难做到真正完整的缺陷的可靠性辨识。
所以这三个应该是我们在应用层中遇到的最迫切的需求吧,那我们是怎么解决的?
其实我们现在还无法解决这个问题,因为我们现在还真的没有在视觉方面去做什么样的工作。但是我们可以做到的是:
比如说我们拿到一个客户需求,会第一时间通过供应商跟我们的合作伙伴的一个大量测试,来确保一些方案的可行性。同时我们会自己设置一些可能影响这个稳定性和鲁棒性的一些干扰因素。尽可能在设备的设计之前把这些方案性的测试和这种可以为以后的设计提供参考性的测试,进行一个完成。然后在我们设计的过程中,尽量不要触碰到这些不稳定因素。比如说我们尽量不动视觉方案,或者说如果客户真的需要变化的时候,我们给他一些我们可控的方式来引导客户去进行操作,来规避我刚才提到的这些风险。
关于理想的状态,我目前也不是很清楚说理想的状态应该是怎么样的,我们内部觉得可能现在的这种视觉的方式还会有一个很长的路。这个部分要怎么去完善这种视觉产品的定义或者是开发可能是需要做视觉的人。和我们这种做自动化的人大家一起坐下来,好好的去理清我们现在所面对的问题和客户需求,然后进行一个产品的重新规划和定义。
另外呢,我们其实私底下有跟公司比较资深的做技术的人员讨论。我们在想有没有可能去利用一些仿生物的这种思路。去帮助视觉的算法。而不是说像现在一样,我们要对每一个缺陷,或者每一种特征进行一个建模、描述,再进行计算。
Q:怎么看待国内很多机器人厂商没有核心技术的现状?
首先我觉得核心技术还是非常的重要的,如果一个公司没有核心技术的话,最后一定是死路一条。
对于你说的这个现状来讲,我觉得现在没有必要太过恐慌,毕竟核心技术是需要时间的,而机器人这个行业在中国其实也处于刚开始的阶段。所有的公司其实都需要花时间对自己进行一个行业的定位和技术方向和路线的一个定位。
同时有了这个定位,即使想做核心技术,也是需要时间一步步的去积累和磨练,不是一个一蹴而就的事情。所以我倒觉得现在我们不必太过去计较说现在国内厂商没有核心技术。
另外一个部分其实现在很多的厂商会号称自己有核心技术。但是这个所谓的技术是不是真的核心呢?或者说我们现在有的这个技术。我们常说机器人里面几个核心的技术:减速机、电机、控制器,那未来的机器人是否还真的是这样。或者说即使我们拿到了一些山寨国外的或者可能打了些折的这些所谓的核心的东西,那它还是真正有用的核心吗?我觉得这个部分其实还是有待时间和市场的一个考验。
针对这个问题,我倒觉得,如果大家很关心机器人这个行业,我觉得应该是可以更关注国内的厂商有哪一些真的去想清楚了我刚刚提到的一个自己的行业定位。和未来的发展路线,甚至是自己核心的一个技术路线。
清楚了之后,有没有在做,有没有做准备,有没有计划,这些其实反而是更重要的事。
在本期硬创公开课中,石金博为我们重点介绍了CV在工业机器人上的应用和服务机器人上的区别,以及阐明了工业机器人在和自己,和人,和环境三大交互过程中,最大的意义就是在于如何处理意外。
在提到现在工业机器人中推崇的柔性自动化问题时,她以实际经验向我们展示,现在的自动化还做不到100%的柔性自动化水平,所以我们所谓的柔性一定是在一个范围内进行的柔性。
作为应用机器人视觉客户中的一员,他们以自己非常“苦闷”的经验向大家展示了目前,视觉产品对于光源方案的要求非常非常高,2D视觉中标定的好坏会极大的影响整个方案的精度最后是否能够达标,视觉的缺陷检测非常糟糕的一个现状。
这让过去一直以为工业机器人就是个傻乎乎自动化生产线的读者朋友们对工业机器人有了重新的认识——工业机器人天生就是一个平台级的东西,它不像服务机器人只要专注做好每个具体的产品就好,其更多是处理好机器人和自己,和人,和环境交互过程遇到的各种难题,来适应不断变化的生产车间需求。