视觉软件工程师应该怎么工作

Posted by Xiphoray on Sep 21, 2023

开始

水果机在前不久开了新机发布会,这意味着我又结束了一年完整的工作,开始进入闲暇时间。虽然是闲暇,但也不能无所事事,于是就想着总结一下这一年来的工作,并且整理一下工作流,为下一年更高效(更多摸鱼时间)的工作提供一些思路。

我从新人入职也有三年了,对一整年的工作计划也有比较完整的了解。由于是水果机的制造商,我司整年的工作计划跟水果机发布的时间节点是衔接在一起的,特别是我们开发部门。简单来说,工作轮回就像是一个延期三个月的学生上学轮回。

比较明确的时间节点也意味着工作内容量和内容在不同时期是相对固定的。这里,我也简单将工作流分为前期的开发阶段和后期的调试阶段两个部分。

开发

分派专案

由于公司开发架构的原因,专案主导一直都是机构在负责,而我所处的软件视觉部门则会在机构立项后分派到相关的专案任务。当然,这个步骤一般都是由带管理职的人员执行的。

在这个过程中,会确定专案是自制、OEM 还是 ODM 的,是新制还是改造的。同时也会确定一些具体的生产规格,例如产品尺寸、精度、CT等。这些一般由制工告知,也会有通过机构来转达。

专案评估

1.规格表单

这是一个还在评估制定的新流程。大概用途是将从制工获取到的各种生产规格汇成一个表单,并签核确认。目的则是为了核定下后续视觉方案的制订,防止一些没有必要的扯皮。

2.视觉选型

根据工作距离、精度等参数,确定相机像素、镜头焦段。必要时还得确定镜头尺寸是否干涉。这部分基本上都是按照公式计算出来的,或者直接找镜头厂商选型。

3.打光测试

选型完成后,就可以找样品来做打光测试。这部分相当于是光源的选型了。但是大部分时候都是没有样品的,这时候就需要自制一些零件来模拟现场状况。

4.方案对比

通常需要制作两个以上的视觉方案来作对比,可以从成本、精度、CT等方向来对比制订。

5.评估报告

最终产出结果会以「视觉评估报告」展示。报告内需要含有方案细节、取像效果示意、硬件安装示意、打光测试图片等内容。最好要有硬件列表以及其成本细节。

承接专案

专案评估之后会得出专案是否可行的结果。可行的专案将会承接下来继续做,不可行的就会退回。当然,承接的专案也会有因为别的原因而中途终止,反正都是听上面的意思。

程序开发

1.功能预估

根据专案评估的内容,来预估程序应该有的功能。

显式的功能有视觉拍照复检、数据上传、扫码、数据库、RFID、机器人或PLC通讯、各式传感器调用等等。

隐式的功能有抛料原因统计、报错日志、产品状态显示、数据循环、图片存储等等。

2.信号对接

明确主功能流程,画出流程图。不同通讯主体可以划分出单独的流程图。这个属于我自己的流程,我更喜欢将这种东西用实体来固定下来,而不是口头说说,这样在后面扯皮的时候直接把图甩出来,就能很明显地体现谁有问题了。

与电控敲定具体的通讯信号,尽量全面,并且可以多留几个备用信号。

与 PLC 或机器人通讯使用固定的格式,以确保稳定性。

3.功能编写

按功能业务单独写模块,尽量独立,尽量通用,尽量封装,方便后面调试时修改或新增功能。

4.模块测试

在代码层面测试模块功能,验证运行逻辑是否正确。

5.硬件连接示意图

这是个新增流程。标注各种硬件的串口、网口、USB口等的连接示意图。大连线需要出具整线网络拓扑图。这也是为了在组装的时候少出问题。

组装

这个阶段主要是跟催物料到位情况,偶尔到组装间巡视一下视觉相关的硬件是否正确安装。

特别注意是网线之类的布线需要跟一下,特别是大连线机台。

验证

这个流程严格意义上不只存在于开发阶段,而是横跨了开发和调试两个阶段。

除了基本的静态重复精度、动态重复精度、真值比对等测试,还要根据现场物料预估一下长时间运行会产生的环境差异,例如会堆积的灰尘或焊渣等。

现场实际验证模块功能。一般来说,只要前面程序按照工作流编写,功能上会比较完善,这一步不会有太多问题,主要问题在于电控,需要配合电控验证他们的流程是否正确。

调试

样机

前面说过的验证阶段在这一步也涵盖了。而验证出问题在这一步也需要马上提出优化方案,然后再验证,并且循环这个步骤,直到方案达成要求。

但是验证一般是指功能性验证,即关键制程功能是否达标,对整机运行没有要求,会遗漏掉诸如上下料、数据上传、抛料流程等功能。样机后半部分就需要把这些功能补上,只是有时候有特殊情况,项目时间很赶,灵活变动下就会忽略这些功能,等到量产时再实现。这样自然风险很大。

由于资讯安全问题,程序进出车间比较麻烦,所以程序修改都尽量在车间完成,这就体现了前期程序功能编写的易拓展性了。程序修改后尽量只扩散 .dll 文件,保持各机台程序的完整。

作为延伸,样机可能会进展到实际做料,这部分就和量产机一样了。

由于这部分都是在车间完成,受限于环境,很难形成固定的工作流,很多东西都需要灵活应变,因此这部分就写得比较笼统,没有顺序。

量产

量产程序尽量不修改,以保证各机台程序版本的一致性,保证机台运行稳定以及方便处理问题,除非制工强烈要求新增功能。

一般来说,作为工程开发,在量产阶段应该无所事事才是好现象。这说明量产设备能完全交付生产维护,运行稳定,没有 BUG。如果还是很繁忙,只能说明是在样机阶段没有很好地完成任务,所做的事情自然也是和样机阶段一样的。

结束

本来这篇博文是用来总结当前工作的流程的,但写着写着感觉就偏离了流程,而是在总结工作内容了。但确实开发段的工作流相对固定,容易总结工作流,后面调试段就不太行了。因为总会出现各种奇奇怪怪的问题,现场调试就真的全靠经验,很难说有什么相对固定的方法来适应。

这个工作怎么说呢,忙的时候很忙,闲的时候也确实很空闲。但是也得坐办公室,而且还需要用无意义的加班来填充工资。每年都能接到不同的专案,像我工作三年多,就已经接到过贴合类、组装类和焊接类的专案了,今年还接手了整形类的专案,在类型上确实是涉猎甚广。但细化下来,视觉开发调试的工作都差不多,只是对象的差异,圆的方的直的斜的。所以这次整理工作流程下来,很多步骤都定形了。

也不知道这份工作还能做几年,看一步走一步吧。




Share