工业机器人智能发展:视觉和触觉感应简化

机器人工业协会(Robotic Industries Association)指出,从2003到2005年间,北美机器人工业以20%的平均年增长率发展。在汽车市场需求疲软以及外国厂商的压力不断增加的背景下,这一成就是如何取得的?成本的普遍降低是原因之一。从机器人到整套系统,价格都在不断降低。机器人性能的不断改进也是驱动这一强势增长的原因之一。现在的机器人可以执行很多几年前还无法执行的任务。机器人还能在更短的时间完成更多的事情,提供了更高的生产力水平。 

最重要的原因则应该是机器人智能的不断改进。从机器人问世到现在,在决定部件获取、检查自身组件就位状况、检测错误状态或相关因素上的智能经历了数个发展等级。这样的智能大多是基于用来检测某个特定状态的特定传感器而实现的。 

比如,机器人会用“光电眼”,通过识别某个芯片管脚、制动器或其它部件是否就绪来判定是否存在并处于正确的方向。接着,这个“光电眼”连接PLC或者直接连到机器人控制器中。在恰当的时间,机器人会核查“光电眼”来确定某个部件就位并处于正确的方向,然后才会将之摘取或者进行其它操作。 

使用“光电眼”或者类似的传感器是一个简单而可靠的途径,也是正确的选择。但是,自动化并不总是那么简单。有各种类型的部件需要处理,因此区分部件的方法可能更为复杂。 

不管是部件是制造程序,简单的传送器都无法适用。比如,放在由滑托板隔成数层的箱柜中的部件,一般就用于金属部件。而拥有复杂几何构造的部件,如果没有额外的装置,就很难准确定位。 

二维视觉定位

长期以来,由于无法找到合适的方法来处理这些复杂事项,某些行业里机器人的使用总是无法扩大。最近这种状况终于有所改观了。其中作用最大的技术就是双维视觉系统。请登录自动化成像联盟(Automated Imaging Association)网站获取关于此技术的更多信息。 

2D视觉系统由标准行业摄像机构成,用来拍摄照片以供机器人进行分析并从而决定处理哪些部件。工业视觉系统历史并不长,但现在在价格、性能和可靠性上已经发展到可以用于一些应用中,而仅仅几年前这些应用都还是无法实现的。 

使用视觉系统可以协助机器人来摘取放置于由标准滑托板隔成数层的箱柜中的部件。这是将部件从一个车间传到另一个车间甚至在同一个车间内进行传送的通用方法。如果没有视觉系统,制造商就必须使用相对较贵的成形塑料垫料或者通过其它方法来准确摘取箱内的部件。这种能置于箱柜中的成形塑料垫料相对更昂贵一些,其中光是模具的设计和制造就需要6万到10万美元。 

2D视觉系统可以很好地取代成形垫料或者其它更昂贵的方式来定位箱柜中的部件。不过直到最近几年,仍然有一些原因使得视觉系统的使用苦难重重,包括不同批部件颜色的差异、箱柜具体状况的差异和重复使用的隔板上的记号等等。随着视觉技术的不断发展,这些问题现在都可以很好地解决了。现在的2D视觉系统已经可以定位大多数堆叠于箱柜内部隔板顶层的部件。 

这种应用一般的方法就是使用一个安装在箱柜上的摄像机来定位部件。摄像机安装在足够的高度,因此机器人可以在摄像机底下移动并进入箱柜内部。在每一层的起点,机器人对会对摄像机发来的该层部件的图片进行分析,然后逐个定位。 

如果需要更精确的定位,也可以将摄像机安装在机器人上,由机器人将摄像机移动到一个或一组部件上端并拍照,然后将照片传回给机器人进行分析并定位。当某一层上所有部件都被取走之后,机器人会取掉隔板,并开始摘取下一层的部件。 

不管是将摄像机固定,还是安装在机器人上,所增加的成本都比使用一个特别的垫料或者其它方法来定位部件的成本要低得多。视觉系统还能带来更高的灵活性,以处理同一条线上的不同部件,或者适应部件的更替。由于成本上的原因,这样的自动叠板卸垛在几年前根本无法实现,而现在,有了视觉系统,机器人方案可行了,也可以负担得起了。 

视觉系统给机器人使用带来的另外一个益处,是降低了用来将部件呈送给机器人的传送器的成本。在使用2D视觉系统之前,很多部件都必须在由托板传送器传送的固定托板上定位。即便是简单的托板传送器成本也要3万美金,而且成本还会随着传送器传送距离的增长而提高。有了2D视觉技术,部件可以在相对便宜的带式传送器上进行传送。被操作员或者机器人放到传送器上的部件接着会被传送给机器人。当安装于传送器末端的一个摄像机检测到某个部件已被传送到末端时,传送器会马上停止。摄像机还会对部件进行定位,以协助机器人将之摘取。 

和用来在箱柜中从隔板上取走部件一样,视觉系统在传送带上也可以协助机器人准确定位并摘取大多数部件。 

对定位同一平面放置的部件,2D视觉系统是完美的,但它也不是万能的。在过去几年里,已经有三维视觉系统可以用来定位不在一个平面上的部件。比如,这些部件可能是彼此层叠的,但也可能随着部件的叠起而两端换位。此时2D图像就不能提供足够的信息来处理这种位移了。 

一个已经在实际使用中得到证明的简单方法是,在2D摄像机的基础上再结合激光器光带。在箱柜顶部安装2D摄像机对部件进行大致定位,并确认下一个要选择的部件。然后在机器人上安装另一个摄像机,并结合激光器。机器人移动激光器和摄像机到另一个部件上方,接着,激光器会将附加准心对准部件上的某个目标。部件上的这个目标可以是一条边、一个圆或者其它明显标志。通过简单的三角测量,摄像机就可以立体定位部件的位置和方向。 

最高端的应用是利用3D视觉系统来定位箱柜中任意方向的部件,但这显然困难重重,比如,部件有可能彼此混杂在一起,而且,还要避开箱柜壁。 

触觉响应

尽管视觉系统是机器人智能传感器最通用的方法,却不是唯一的方法。还有一种6度随意力传感器可用来给机器人提供触觉响应。在要求高精度的组装中,力传感器就会被用来引导力度合适的部件进行插入操作,比如,将轴状物插入到某个孔中。带有力传感器的机器人还可以用于更复杂的组装任务,比如将装置插入到外壳。这个过程需要非常准确,并要经过很多个步骤。经过编程的机器人可以像真正的人一样,前后移动装置,直到每一个步骤都完全符合。 

在对一个复杂的部件进行磨光时也可以使用力传感器来提供触觉响应。以前这是由特定的设备来进行的,但是这些设备可能无法达到所要求的精确度。给机器人添加6D力传感器,然后加上一个磨盘,机器人就可以在方向改变的情况下仍保持一个不变的力度,抵消了重力影响。 

今后的方案

智能传感器技术在各种领域机器人的成功运用中起着至关重要的作用。随着智能传感器技术的继续发展,机器人在将来将拥有更多功能。尽管在进行极其复杂的区别上没有什么可以替代人脑这台超级电脑,但过去那些曾被认为不可能的应用现在对于智能机器人已经是“家常便饭”了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP站点无法访问怎么办

确保启用了目录浏览功能 转载于:https://www.cnblogs.com/acetaohai123/p/6571257.html

五、案例-指令参考-freemarker指令、表达式

案例-指令参考描述&#xff1a;本人自己测试写了一遍&#xff0c;如有错的地方&#xff0c;懂freemarker的朋友望指点指点&#xff01; 案例-指令参考 表达式 一、 Assign 1、<#assign name1"北京" name2"上海" name3"广东"> 调用&#xf…

PartitionMotionSearch()函数

encode_one_macroblock()函数中的运动估计分为两大块&#xff0c;对于宏块级的三种模式&#xff0c;分块后直接对patition依次调用PartitionMotionSearch()函数&#xff1b;而对于亚宏块级的&#xff08;含8x8, 8x4,4x8,4x4&#xff09;模式&#xff0c;首先将宏块拆分为4个88子…

201521123017 《Java程序设计》第4周学习总结

1. 本周学习总结 2. 书面作业 Q1.注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释&#xff0c;并在Eclipse中查看。(截图) Q2.面向对象设计(大作业1&#xff0c;非常重要) 2.1 将在网上商城购物或者在班级博客进行学习这一过程&#xff0c;描述成一个故事。…

完整的VAL3程序

start() begin//延时10秒 delay(5)//初始化变量call init()//清空原有运动堆栈resetMotion()//建立上电任务taskCreate "robotpower",100,robotpower()wait(isPowered())//建立生产任务taskCreate "ProductionCycle",10,ProductionCycle()//建立安全区域…

iOS WebView 加载本地资源(图片,文件等)

NSString *path [[NSBundle mainBundle] pathForResource:"关于.docx" ofType:nil]; NSURL *url [NSURL fileURLWithPath:path]; NSLog("%", [self mimeType:url]); //webview加载本地文件&#xff0c;可以使用加载数据的方式 //第一个诶参数是一个N…

本文以H264视频流为例,讲解解码流数据的步骤。

本文以H264视频流为例&#xff0c;讲解解码流数据的步骤。 为突出重点&#xff0c;本文只专注于讨论解码视频流数据&#xff0c;不涉及其它&#xff08;如开发环境的配置等&#xff09;。如果您需要这方面的信息&#xff0c;请和我联系。 准备变量 定义AVCodecContext。如…

2008-2021年商业银行数据(农商行、城商行、国有行、股份制银行)

2008-2021年商业银行数据&#xff08;农商行、城商行、国有行、股份制银行&#xff09; 1、时间&#xff1a;2008-2021年 2、范围&#xff1a;1700银行 3 、指标&#xff1a;证券简称、year、证券代码、资产总计、负债合计、所有者权益合计、利润总额、净利润、贷款总额、存…

EPSON 任务同步 改写

有时需要在多个任务执行之前来使它们同步。如果预先知道执行每项任务所需要的时间&#xff0c;它们就可以通过简单地等待由最慢的任务产生的信号来实现同步。然而&#xff0c;如果不知道那个任务是最慢的&#xff0c;就需要使用一个更复杂的同步化机制&#xff0c;如下所示VAL …

线程池的简单使用

创建指定线程数量的线程池 private static ExecutorService scheduledTaskFactoryExecutor null;private boolean isCancled false;private static class ThreadFactoryTest implements ThreadFactory { Overridepublic Thread newThread(Runnable r) { Thread threa…

异常--自定义异常类

为什么要调用父类构造器? http://blog.csdn.net/rockpk008/article/details/52951856 转载于:https://www.cnblogs.com/dwj-ngu/p/6576382.html

利用ffmpeg来进行视频解码的完整示例代码

&#xff08;转&#xff09;利用ffmpeg来进行视频解码的完整示例代码&#xff08;H.264&#xff09; Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char * Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; Displ…

安卓观看免费视频

http://www.imooc.com/search/course?wordsAndroid%E6%94%BB%E5%9F%8E%E7%8B%AE%E7%AC%AC%E4%B8%80%E8%AF%BE&page3 http://www.imooc.com/course/list?candroid&src360onebox http://www.bilibili.com/video/av2788563/index_4.html http://www.imooc.com/course/pr…

EtherCAT 网站链接

http://www.ethercat.org.cn/cn.htm EtherCAT技术介绍 EtherCAT系统组成和工作原理 EtherCAT采用主从式结构&#xff0c;主站PC机采用标准的100Base-TX以太网卡&#xff0c;从站采用专用芯片。系统控制周期由主站发起&#xff0c;主站发出下行电报&#xff0c;电报的最大有效数…

IEC 6-1131/3的5种标准编程语言

用于开发控制系统和商业管理系统的TRACE MODE6编程工具面向不同领域的软件工程师. TRACE MODE6包含的五种编程语言为&#xff1a;Techno SFC、Techno LD、Techno FBD、Techno ST和Techno IL. 这些语言是下列IEC 6-1131/3标准语言的扩展&#xff1a; SFC&#xff08;顺序功能图…

ngRx 官方示例分析 - 4.pages

Page 中通过构造函数注入 Store&#xff0c;基于 Store 进行数据操作。 注意 Component 使用了 changeDetection: ChangeDetectionStrategy.OnPush. OnPush means that the change detectors mode will be set to CheckOnce during hydration. /app/containers/collection-page…

用ffmpeg把yuv格式转化为mpeg格式

http://blog.sina.com.cn/s/blog_5f5ad6a90100cs5k.html

方法:查询MongoDB数据库中最新一条数据(JAVA)

使用JAVA语言查询MongoDB中某个数据库某个集合的最新一条数据&#xff1a; MongoCollection<Document> cpu MongoClient.getDatabase("sysmgr").getCollection("cpu"); //获取所需集合 Document dbo cpu.find().sort(descending("time"…

NoPause/NoEmgAbort的任务 与后台任务的区别

NoPause/NoEmgAbort的任务示例 下面的例子显示了一个程序&#xff0c;可以监视控制器的错误并根据错误编号在发生错误时切换I/O On/Off。 Function main Xqt ErrorMonitor, NoEmgAbort : FendFunction ErrorMonitor Wait ErrorOnIf 4000 < SysErr And Syserr < 5999 T…