`
嘉宾介绍:汪成龙,资深labview视觉工程师,使用LabVIEW开发了大量视觉检测、运动控制、数据采集方面软件,具有丰富的非标自动化设备经验。授权16项LabVIEW视觉软件著作权;编写了《LabVIEW视觉算子详解》一书;在LabVIEW视觉应用领域,首次利用LabVIEW开发了“UVisionBuilder1.0”免编程视觉通用软件,目前已被多家自动化设备公司采购。
1、能给我们简单分享一下您的成长历程吗?
说一下我的简单经历,LabVIEW我从2006年就开始接触,当时对它的了解是可以做测试,以及数据采集,这个比较有优势,它自带有一些测试数据采集的函数库以及数据处理的函数。更加让我感觉到比较新奇的,是LabVIEW的图形化的编程思路,另外还可以文件读写,数据分析,特征提取等。直到后面,有一些项目用到视觉的时候,发现NIVISION视觉助手也非常方便,因为它封装好了一些视觉上面常用的函数,滤波,边缘检测,几何分析,模板匹配等算法。那么这个视觉助手的使用也非常方便,可以比较快捷的仿真视觉图像算法,为我们下一步的图像的程序的编写提供了很坚实的支撑。
我本人的项目经验简单的介绍一下,比较典型的领域如下: 第二个是在视觉和运动控制方面,开发了一套pcb的激光打标软件,这里面就涉及到视觉的标定,运动控制,仿射变换,实际上这个过程就比较复杂,激光的坐标标定,还有运动的坐标点标定。 第三个是视觉通用软件uvison,是我本人在16年左右编写的,通用是目前我们整个行业的方向,现在有很多大型的视觉公司都在做通用型的软件,其他非标的开发的软件就太多了,包含有外观检测的定位的,机械手的引导,缺陷检测。还有一些行业的,例如说像电线的压端子加工检测。
对于这些年我自己的成长过程,我的总结有以下几点: 第一对这种专有领域的技术方面的学习和研究一定是一个先易后难的过程,一定要有时间的积累 第二对于我们这个行业,时间是非常重要的,学到一定程度一定要找一些项目,简单的项目进行练手 第三学习一定要系统化,学习过程不能太零散,否则最终做项目的时候短板会比较多。
2、龙哥,您编写了《LabVIEW视觉算子详解》一书,是在什么样的情况下让您决定写下这本书?当时的想法是什么?
当初编写这本书,其中最重要的一个原因是,目前网络上并没有发现类似的书籍,特别是视觉算子这一块的书籍,很多编程学习人员面临的问题是:NIVISION视觉助手全部是英文的界面,对于英语水平比较差的学员会感觉非常困难,如果在学习的过程中,有一本参考书籍,能够将英文转换成为中文,那么会大大的提高我们学习视觉算子的效率,这也是我的学员,对我的课程的一个反馈,因此我们开发了这一套电子书,这本电子书我们只是提供给学员的一个赠品,是非卖品。我本人在编写程序的时候也会参照这本书,而不去看视觉助手的帮助,因此我认为这本书对视觉算子学习的学员来说非常有借鉴作用。
3、从深耕行业到做分享视频,您是怎么看待这两件事情的?
那么最早我是做项目的,到后来,我开始做的课程,那么对于做项目和做课程这两件事情,很多人认为是有冲突的,但是我认为这两件事情是相辅相成的。目前我们有很多项目,都是学员介绍的项目,或者说是学员所在的企业有相应的需求,我们协助企业解决难题。也就是说课程分享能促进我们了解市场的准确需求,另外做实际项目,又能促进我们的课程质量和实用性,做项目和课程是在相互促进对学员和老师都是一个良性循环。老师在教授课程的过程中会解答学员的疑问,学员的疑问,必定是行业内的实际需求,针对这些实际需求老师提出解决方法和建议,学生在实践中反馈结果,进一步促进老师的行业项目经验,由于老师具有实际项目经验并且会在课程中灌输这些经验,或者拿出一些实际案例进行课程讲解,对学员在没有项目经验的前提下提前了解一些实际使用的案例,有助于其将来进行实际项目时避免一些常见的错误。
4、据我了解,您目前在LabVIEW方面获得了许多成就,那么需要具备哪些技能?
LabVIEW是一个大的平台,他有很多的模块组成,视觉只是其中的一个模块,我本人目前也仅在视觉模块上有一些经验做过一些实际项目,我也在不断的继续学习希望能在视觉这一个领域,为大家分享我的实践经验,帮助学员早日实现自己的职业目标。
我认为LabVIEW视觉要达到一定到水平,需要具备以下技能: 第一,要熟悉机器视觉的一般概念,包括相机光源镜头,光学成像的原理以及机器视觉中常见的算法,如定位抓圆抓边抓点等; 第二,要熟练掌握LabVIEW常见的数据类型,程序结构,控件属性等基础编程技巧; 第三,要熟练掌握NIVISION视觉助手中的常用视觉算子,要了解其用法以及参数的含义,在什么场合下使用; 第四,要有自己的程序架构,基于这个程序架构,可以做稍微修改,适用于不同的项目; 第五,要能自己封装视觉算法,自带的视觉算子其使用比较繁琐,作为非标项目,如果不能优化封装视觉算子,会大大降低项目完成效率。
5、从基础入门到能力提升方面有什么建议吗?
第一,基础部分不要学得太宽泛,要找到核心学习内容,Navigate核心学习内容就是数据类型,程序结构for循环,while循环,条件结构事件结构,控件属性队列,簇,数组,字符串,数值。 第二,视觉部分的学习从图像采集入手,采集了图像之后开始学习视觉助手,通过视觉助手的学习,熟练的掌握视觉算子的使用场景,将视觉助手导出为代码,编写一些简单的视觉代码。编写一个能自动停止运行一次停止自动打开相机采集图像等功能的软件框架 第三,根据视觉助手导出的代码将模板匹配抓圆抓边,抓点几何测量,灰度分析等常用算法封装成更方便调用的函数。利用封装好的函数编写一些简单的视觉项目。 第四,学习plc通讯,IO卡通讯,结合第3部的项目程序添加plc通讯或IO卡通讯的功能,利用利用传感器触发相机拍照而实现自动检测。 第五,学习运动控制卡的使用,你用运动控制卡实现回原点走点位直线插补圆弧插补连续插补等功能 第六,学习视觉标定方法,利用视觉算法,模板匹配或抓圆算法对运动平台进行9点标定或比例标定,引导运动平台进行对中操作 第七,学习仿射变换算法,利用标定模型,以及视觉算法检测,两个mark点,根据两个mark点的图像坐标,换算成为机械坐标,通过反射变换算法得到最终的实际坐标,引导平台移动到相应的坐标。
如果坚持到以上七步内容的学习,并且有一些项目进行辅助练习,这时候你的那边有视觉学习就能够达到一定的水平。
6、您开发的第一个项目是什么?在开发的过程中有没有遇到困难,是怎么解决的?
我开发的第一个项目是比较有难度的,当时这个项目是做船舶检测的,也就是桥梁防撞系统,这个项目的难点主要有这么几点: 第一,使用的是国外相机,LabVIEW不支持直接调用相机采集图像,需要通过点net来调用,由于是国外相机,没有什么资料可以参考,所以耗费了很多时间在图像采集这一块; 第二,当时的视觉助手,没有目标跟踪算法,我使用的是帧差法,进行目标分割,最终才达到了比较好的效果。 第三,由于设备是长时间运行,其技能的数据比较大,最终是采用tdms和数据库的方式结合使用来解决了这个问题。 这个项目最终做成功了,但是通过这个项目,我对整个程序框架的理解以及视觉算法的理解,有了进一步的提高。因此我认为项目是最好的学习驱动,有项目才有目的性的学习,这样的学习是效率最高的。
7、在行业中奋斗多年,您认为LabVIEW行业的前景如何?
我认为LabVIEW行业的前景广阔。据了解,SpaceX有一条硬性要求,那就是相关岗位的求职者必须掌握LabVIEW编程,因为SpaceX的地面软件研发团队都在LabVIEW中编写代码。除了SpaceX,大部分与测试相关的公司几乎都与LabVIEW有关。LabVIEW的核心优势在于图形化编程,对第三方库c++,c#的库均支持,在测试行业具有得天独厚的优势,NI采集卡全球知名,视觉算法不断的升级更新并且支持opencv等开源库,2018年公布的nxg也在不断的迭代,相信在不久的将来利用labview开发软件效率将会越来越高,真正的实现了,LabVIEW诞生的理念:让测试工程师编程更简单。
8、想必您在事业上花费了大量的时间和精力,那么是如何平衡业余生活的呢?
就我目前而言,已经不是太区分工作和休息,特别是有时候项目周期比较紧,课程比较多的时候,有时基本上周末都在指导学员或者是在管理项目,我个人认为在目前精力充足的时候,我个人和学员都需要加速前进,要保证充足的睡眠,抓住一切零散的时间来提升自己,不断的从项目中提炼更多的难点。我个人可能有一点工作狂的倾向,一般遇到一些难点问题,或者说比较有我感兴趣的研究的点,我可能会废寝忘食,也一定要把这个问题解决。在生活中,我是比较平淡的人,一般有时间为出去散散步走一走看一看,喜欢比较安静的环境,运动方面会跑一跑步有时到健身房练一练。总的来说,我就是一个技术型的宅男,喜欢挑战一些有难度的问题。
9、采访到这里就要结束了,有什么话想对大家说吗?
------------------------------------------------------------- 往期社区之星回顾:
第13期:白纪龙:“卧薪尝胆”,多年沉淀终蜕变
******************************************************* 社区之星招募 不限专业领域、不限技术方向,只要你是一个乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助更多从业者共同学习、共同进步,你就是我们的社区之星! `
|