ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

机器人视觉项目实战:从进场勘察到验收交付的避坑指南

机器人视觉项目实战:从进场勘察到验收交付的避坑指南 搞了这么多年机器人视觉项目从前期技术交流到进场安装调试再到最终验收交付我发现自己真正长记性的地方不是在办公室里对着PPT做方案的时候而是在客户现场被现实狠狠教育的那几次。最近整理手头的项目笔记翻到去年那个视觉引导上料项目从进场到交付的全过程记录踩过的坑密密麻麻写了好几页。这篇东西就把这些坑和对应的处理方式整理出来给准备做或者正在做机器人视觉项目的朋友一个参考尤其是那些从方案阶段一路跟到现场交付的工程师应该能少走不少弯路。1. 进场阶段先看产线再谈相机多数人以为视觉项目进场后的第一件事是开箱装相机实际上这一步应该放在最后。真正的第一步是重新把客户现场的产线完整走一遍带着卷尺、照度计和秒表把图纸上没画出来的实际情况摸清楚。1.1 勘察现场时必须留意的五个细节第一个细节是来料的一致性。视觉引导的逻辑是“看到什么抓什么”但前提是物料本身的状态要相对稳定。我去过的一个客户现场他们的料框用了三年多底部定位销磨损严重料框放上去之后每次的位置偏差能到十几毫米。这种偏差视觉能做但如果前期只按“料框摆放误差正负2毫米”来设计视觉方案后期肯定要返工。所以进场后第一件事必须拿实物反复装填、定位、取走实际测量来料的最大波动范围。第二个细节是机械臂的实际可达空间。很多项目的视觉安装位是照着机器人工作半径图画的但现场往往有防护围栏、料架、气动管路挡着实际可安装位置比图纸上小得多。有一个项目就是因为现场横梁遮挡导致相机原本规划的安装高度被迫降低了200毫米视场跟着缩了一圈原本的定位算法参数全部要重调。这个在进场勘察阶段就该用激光测距仪和水平仪把现场实际尺寸核实一遍。第三个细节是地面振动。视觉对振动极其敏感尤其是固定在高处的相机支架哪怕只有零点几毫米的抖动反映到工件坐标上就是几个毫米的误差。我见过一个项目产线旁边就是AGV通道AGV一经过相机画面就肉眼可见地晃。后来没办法给相机支架加了两根斜撑才稳定下来。勘察的时候一定要问清楚附近有没有AGV、冲床、空压机这类周期性振动源。第四个细节是光照的周期性变化。工业现场不是实验室白天有阳光从窗户照进来晚上工人开日光灯不同时段的光照条件完全不一样。做视觉方案要拿到客户车间窗户的位置、朝向、遮阳措施还有照明灯具的类型和布置。这个细节选光源的时候特别重要后面会细说。第五个细节是产线操作工的实操习惯。很多项目验收时操作工给出的负面反馈都源于最初设计时没有考虑他们的使用习惯比如放料时随手一推、按钮连按两下、不清空料框就启动。这些问题虽然看起来是“人”的问题但最终都会变成视觉系统的误识别和漏抓。进场阶段最好花半天时间站在工位旁边看工人实际怎么操作而不是听客户经理怎么说。1.2 光照、振动、粉尘——现场三座大山这三个环境因素是我在所有现场踩坑最多的领域。光照问题表现为环境光的不可控性。车间窗户在下午两三点会有直射阳光大面积反光打在料框边缘会让原本清晰的工件轮廓出现强烈光斑。解决方法是加遮光罩、用偏振光源或者干脆选主动光源功率足够大、把环境光“压下去”。但也有一种情况是环境光在晚上突然变暗原本正常的图像也跟着变暗所以视觉系统的相机曝光参数要留出余量最好做动态自适应。振动问题的难点在于看不见摸不着但精度就是上不去。我调试过一个项目静态拍照定位精度0.3毫米以内机器臂一动起来精度就掉到1毫米以上。排查到最后发现问题出在相机支架的共振频率与机器人运动频率接近机器人加减速时整个支架跟着荡。这种问题的隐藏性很强建议做视觉方案时就用“刚性冗余”的思路支架用方管而不是铝型材能加筋的地方都加上。粉尘和油雾问题更容易被忽视。视觉项目大多数要配光源和相机镜头表面沾灰之后图像对比度明显下降尤其是在打磨、焊接、切割工位附近。我建议在方案里强制加入镜头防护罩和气吹装置耗材预算里多算一份清洗耗材而不是等到客户打电话说“视觉识别率变低了”再跑现场。1.3 节拍核算视觉速度不够方案再好也白费节拍是视觉项目中最容易被低估的指标。客户会说“节拍大概是10秒一件”但等你到了现场一掐秒表发现含上下料也就7.5秒视觉能占用的时间只剩下1.2秒这里面的坑就深了。视觉系统的完整流程包括触发信号接收、相机曝光、图像传输、算法处理、坐标发送、机器人动作等待这几个环节加起来才是视觉占用的总时间。很多工程师只关注算法处理速度忽略了前面相机曝光和图像传输的时间。工业相机在触发模式下曝光时间可能到5毫秒到50毫秒不等GigE接口传输一张500万像素的图像大约在30到80毫秒这些时间都是跑不掉的。建议进场时就把完整的节拍表拉出来明确每个环节的时间预算。如果视觉允许时间在2秒以内尽量选全局快门相机配合光源频闪同步把曝光时间压到最短。如果视觉允许时间只有不到1秒那么很可能需要拆分成“粗定位精定位”两级视觉或者调整机械动作时序让机器人在运动中完成部分预判。2. 方案设计选错相机型号后面全是泪方案设计阶段是决定项目成败的关键但也是最容易按“惯性思维”做决定的时候。很多时候我们只图省事沿用上一个项目的相机型号和光源配置结果到现场一测发现精度差、反光强、视野不够。这一步是必须认真对待的。2.1 选2D还是3D关键看高度波动业内对2D视觉和3D视觉的选择有个很实用的判断依据工件的摆放高度波动是否超过视觉系统的景深容忍范围。2D视觉的本职是二维平面上的定位对于XY位移和旋转角度很擅长但Z轴高度一变化图像放大倍率就会变因为相机离工件的距离变了。假设一个镜头的工作距离是500毫米工件高度变化10毫米图像缩放比例就变化了2%如果工件本身的尺寸是100毫米那么边缘位置就会偏差2毫米。对于抓取项目来说2毫米的偏差往往就意味着抓偏甚至掉料。所以我的经验是如果工件高度波动小于3毫米2D视觉加普通镜头完全可以应对如果波动在3到10毫米之间考虑加装激光测距传感器实时补偿高度带来的缩放误差如果波动超过10毫米或者工况本身要求应对多层堆叠、正反混装这类复杂姿态直接选3D视觉方案更稳妥。现在的tva视觉引导机器人方案里很多也采用“2D大视场粗定位3D小视场精定位”的组合先找到物料大致方位再精细计算抓取点和姿态。这种思路的好处是兼顾了节拍和精度但成本也相应上升方案设计时需要提前和客户明确预算边界。2.2 眼在手上还是眼在手外别只看安装方便“眼在手上”Eye-in-Hand是把相机装在机器人末端法兰上跟着机械臂一起移动“眼在手外”Eye-to-Hand则是把相机固定在工位上方或侧面机械臂独立运动。这两个方案的实际差异非常大。眼在手上的优点是近距离贴近工件拍摄视野可以做得很小精度很高而且可以跟随机械臂在不同工位间移动一个相机覆盖多个工位。缺点是每拍一张图机器人就要移动到位、停顿、拍照、计算结果这会占用额外的节拍时间另外相机跟着机械臂长期运动线缆的拖拽磨损和接插件松动是很大的隐患。眼在手外的优点是拍照时机器人不需要停顿可以提前抓拍节拍更优相机固定稳定性好维护方便。缺点是对视野范围要求大精度受限于工作距离而且容易被机械臂本身遮挡。我给客户做方案时如果是高速分拣、上料这类节拍敏感的场合优先推荐眼在手外让视觉提前给机器人一个目标坐标如果是装配、对位这类需要精细定位的场合眼在手上的近距离小视野反而更合适。也有折中方案相机固定在机械臂之外但加装一个可调整的云台拍照时云台转动找最佳角度。总之“安装方便”不应该成为首要决策因素。2.3 光源和镜头搭配的实际讲究光源选型比很多人想象中更讲究。从颜色上分有白、红、蓝、红外从结构上分有环形、条形、同轴、穹顶不同搭配对图像效果的影响是颠覆性的。环形光源适合表面光滑的工件可以突出边缘轮廓条形光源斜照适合检出表面划痕和凹凸同轴光源适合反光较强的镜面物体穹顶光源适合半球形或曲面物体能够提供均匀漫射。实际项目里先用物理手段把图像质量问题解决掉再谈算法。我见过太多人一上来就写几百行图像处理代码结果问题出在光源角度不对——光源摆正后原本复杂的背景分割只需要一句二值化就搞定。镜头的核心参数是焦距、光圈和畸变。视觉定位项目里推荐用固定光圈、手动对焦的工业镜头避免自动光圈导致画面亮度波动。畸变是另一个被忽视的地方普通镜头的桶形畸变在视野边缘能达到几个像素如果工件摆放在视野边缘定位精度会明显下降。解决方法是选低畸变工业镜头或者用标定板做畸变校正。我的习惯是方案里直接标配畸变校正不做全视场像素当量均匀假设。光源触发同步是一个细节中的细节。视觉拍照的瞬间光源要以极短的闪光时间和相机曝光保持同步这样环境光的影响会被极大削弱。这个功能一般叫“频闪触发”配合控制器或PLC的信号实现。很多项目现场图像时好时坏一阵一阵地抽风其实就是没有做光源频闪同步环境光在曝光窗口内不断变化导致的。2.4 手眼标定精度从这里流失手眼标定是机器人视觉里最容易被轻视、也最容易出问题的一环。没有做过的人会觉得“不就是在机器人坐标系下定位吗”但实际做完一次完整的标定你就知道这里面有多细。手眼标定分两步相机内参标定和手眼外参标定。内参是相机的焦距、主点、畸变系数需要拍十几张不同姿态的棋盘格标定板来解算。外参是相机坐标系到机器人坐标系的变换关系常见的方法是N点标定九点标定让机器人带着针尖接触标定板的已知点同时相机识别这些点求出一个单应性矩阵。九点标定看起来简单实际操作中坑非常多标定板必须绝对平整不平整的板子就是垃圾进垃圾出标定板上的点距必须经过校准不能拿游标卡尺量一次就当标准值标定时机器的TCP工具中心点指向必须准如果TCP本身偏了0.5毫米标定结果就不可能好。还有一个容易忽略的是标定板的反光亚克力板在光照下会有局部高光特征点提取会飘。九点标定只能解决平面映射如果机械臂存在明显的旋转动作还要做旋转中心标定。让机械臂带着工件在原地旋转多个角度视觉分别记录工件中心的位置拟合出一个圆心和半径这个圆心就是旋转中心。如果不做这一步每次旋转都会让抓取位置偏移。我强烈建议标定过程写成标准作业流程每一步都记录原始数据标定完成后用一个独立验证程序验证精度而不是把标定数据一存就当完事。标定结果的评价指标是残差一般控制在0.3毫米以内才算合格如果残差太大要么是标定板不平要么是TCP不准要么是机器人本身重复精度差得一层层排查。3. 调试阶段定位、抓取、通信一个都不能少进场调试是视觉项目最漫长、最容易焦虑的阶段。设备一开动各种现场问题像地鼠一样冒出来。这个阶段最需要的是系统化的排查思路而不是东一榔头西一棒子的碰运气。3.1 算法精度从图纸到现场的衰减和补偿实验室里调好的视觉算法到了现场大概率会降级这是颠覆不破的规律。原因有很多现场光照不同、工件毛刺反光、传送带抖动、来料表面有油污。我的做法是进场第一天就采集200到500张现场真实图像覆盖不同光照、不同摆放位置、不同来料批次用这些图重新评估算法参数的健壮性。很多算法工程师习惯在一张“漂亮图”上调参数把阈值调到刚好分割出工件的临界值。这样做在实验室没问题但现场来料稍微变一点就识别失败。正确做法是留出足够的灰度余量让图像分割的阈值比最佳值偏移20%到30%时依然能稳定识别。换句话说好的算法应该有一定的“容错空间”而不是追求单张图上100%完美。定位结果从像素坐标转换到机器人坐标中间有个关键的标定系数——像素当量mm/pixel。这个系数在视场的中心和边缘并不完全一致如果只用一个固定值工件放在视野边缘时抓取会偏。建议做完整畸变校正后每隔一定视场区域分别计算像素当量建立一张映射表运行时根据工件实际位置选择对应的当量值。这个细节能让边缘抓取精度提升不少。3.2 TCP偏差被视觉放大的真实案例TCP标定的误差平时看不出来但在视觉引导项目里会被放大到一个不可接受的程度。我遇到过一个抓取项目机器人带着吸嘴去吸一个直径10毫米的圆片系统老是偏右下方约2毫米怎么补偿都压不下去。排查过程很绕先重新做了九点标定没用检查相机安装没问题检查视觉算法定位中心非常准。最后把机器人用千分表打了一圈发现法兰盘旋转轴与末端吸嘴的中心偏移了1.2毫米。这个偏差在普通示教轨迹里根本感觉不到但在视觉计算“吸嘴应该移动到哪里”的时候TCP偏差直接叠加到了最终定位上。解决办法就是老老实实做TCP标定用“四点法”或者“六点法”重新求工具坐标系。之后我又在项目里养成了一个习惯每次视觉项目开始调试前先确认客户的机器人TCP参数是最新的如果机器人被谁改过参数后面所有视觉引导都会一起偏掉。TCP偏差是视觉调试里最折磨人的隐性问题排查顺序一定要靠前。3.3 与PLC和机器人通信的隐藏问题视觉和PLC、机器人之间的通信是联调的动脉但实际运行中最容易出问题。传统上很多项目走I/O信号送一个“拍照完成”脉冲再传一个“是否找到”的到位信号这种方式的优点是延迟低、确定性高但信息量有限只能传少量结果。现在更多项目走Socket通信视觉直接以TCP/IP报文发送坐标数据灵活性高很多但调试复杂度也跟着上来了。Socket通信有一个典型的坑最大报文长度和解析格式不统一。视觉发过去的是字符串坐标“123.45,67.89,180.0”机器人那边解析的时候小数点位和逗号格式稍微不一致就会报错。我的建议是双方在联调前就把通信协议文档写清楚包括报文头、数据长度、坐标系定义、单位、精度位数、校验方式甚至并发发送的频率都要约定好。PLC侧和信号握手的问题也很隐蔽。常见的是“上升沿触发丢失”PLC发出“拍照”信号太快相机的触发响应还没来得及接收信号就已经消失了。解决办法是在PLC侧设置信号保持时间至少保持50毫秒以上确保视觉侧的触发采集稳定可靠。另一个常见问题是坐标系方向不一致。机器人的坐标系X向右、Y向前视觉图像坐标系X向右、Y向下换算的时候少做一个反转抓取方向就会完全反掉。我调试时习惯在系统里专门做一个“坐标转换自检”画面把同一组视觉坐标手动输入机器人对比实际动作是否对准。这一步看起来笨但能节省大量排查时间。3.4 日志记录是排查问题的唯一钥匙现场调试到中期往往会出现一些偶发性问题比如“隔一段时间抓偏一次”“早上开机第一轮总是识别失败”。这类问题如果不做日志靠人盯着屏幕看是抓不到规律的。我后来强制要求自己在项目里配置一套视觉日志系统每拍一张图就记录一次拍照时间、图像文件名、定位结果、坐标值、耗时、判定结果。同时让机器人在每次抓取后回传一个“实际接触误差”或“抓取成功标志”。把这些数据放在一张表里按时间线对齐才能真正定位到问题出现的规律。曾经有个月经式的故障“每逢整点前后会出现一次抓偏”——排查了几天毫无头绪最后是看了日志才发现那个时间段正好是车间整点换班头顶的照明灯会有一个瞬时的电压波动导致光源亮度突变。没有日志这种问题基本无解有了日志几天就能找到根因。日志记录这件事看起来不产生直接收益但它真的是视觉项目长期稳定运行的基础。4. 交付阶段视觉验收的学问验收是整个项目从“能跑”到“客户认可”的关键一跃也是最容易和客户产生分歧的环节。视觉系统的验收不像普通设备那样看“转不转得起来”它的验收标准很抽象所以要把验收标准在协议里落到可量化、可执行的数字上。4.1 验收标准要在协议里落到数字视觉项目验收最怕遇到“差不多”“基本能抓就行”这类模糊表述。我吃过大亏早期一个项目协议里写“视觉定位精度满足生产要求”最后客户说“生产要求就是正负0.1毫米”而我们实际只能到0.3毫米费了很大周折才重新谈定标准。现在的习惯是把验收标准拆成三个量化维度定位精度、识别成功率、节拍一致性。定位精度可以用“连续抓取100次与基准位置的误差均值和最大值是多少”来定义识别成功率可以用“连续运行一个班次漏识别和误识别的件数”来定义节拍一致性可以用“连续运行2小时视觉处理耗时超过预算的次数”来定义。每个数字都要在协议里白纸黑字写清楚并且约定测试方法和测试条件。测试条件特别重要同一个系统在白天、晚上、开灯、关灯、晴天、阴天测出来的结果是完全不同的。我的建议是验收测试至少覆盖一个完整班次并且安排在不同时段各测一轮展现系统在真实光照变化下的表现。4.2 培训分三层操作工、维修工、工程师很多项目交付时只草草做一次操作演示就撤场了结果过了两周客户打电话说“系统坏了你们快来”。去了现场一看只是某个参数被误改或者镜头被擦花的表面没有及时清洁。所以培训必须分层不同岗位的人学不同内容不能一堂课解决所有人。对操作工的培训重点是日常开关机流程、工件摆放要求、异常停机时的判断、常见报警信息如何上报。这一层培训不需要讲原理要给一份带图的操作手册每个步骤都有对应的屏幕截图让工人照着做就行。对维修工的培训重点是相机和光源的清洁维护周期、接插件的检查、线路松动排查、简单参数恢复、备件更换流程。维修工不需要会调算法但要能判断“是视觉问题还是机械问题”。对工程师的培训重点是相机的内部参数设置、光源亮度的标定方法、模板和检测区域的更新、坐标标定复验流程、设备数据的手动导出。这一层培训通常需要1到2天的手把手教学而且要提供一套完整的电子文档方便他们以后查阅。4.3 后期维护视觉系统的“消耗品”意识视觉系统虽然由软件和电子产品构成但它一样有易损件。光源是最大的软肋——LED光源用久了会有亮度衰减表面还会积灰导致图像整体变暗进而影响识别率。镜头表面也一样即使有防护罩长期在粉尘环境里还是会积累一层油膜。我建议交付时和客户明确一个维护计划光源和镜头每两周清洁一次每三个月做一次亮度自检有灰度的标准样件可以辅助判断每半年做一次完整的手眼标定复验。这些维护动作听上去繁琐但能避免绝大多数“设备突然不灵”的售后事故。很多项目验收后就是败在“没人管”上半年后精度漂移了客户第一反应是“你们的视觉有问题”而不是“我们有半年没清洁镜头了”。另外相机本身内部的传感器也存在热漂移长时间运行后图像亮度和噪点会有轻微变化。如果项目允许我建议相机在系统启动后先预热5分钟再开始工作或者用软件做暗电流校准保持传感器状态的稳定。5. 最后再分享一点切身体会做了这么多年视觉项目我最深的体会是视觉项目没有“灵光一现”的时刻有的只是大量细致的前期准备、严格的标定流程、仔细的日志记录和分层的交付培训。任何一个环节偷懒最后都会在验收或者量产阶段以“故障”的形式加倍还回来。所以我对每个新接手视觉项目的工程师都会强调三句话第一进场勘察别赶时间现场多看两个小时后面能省两天调试第二手眼标定别嫌繁琐每步留下数据出了问题才能定位第三交付培训别走过场今天培训偷的懒就是明天售后流的汗。做视觉项目就是这样把每一个基础动作做到位项目自然就顺了。
返回列表