ARTICLE DETAIL

资讯详情

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

大视野视觉引导机械手带角度抓取:旋转中心标定与节拍优化实战

大视野视觉引导机械手带角度抓取:旋转中心标定与节拍优化实战 前阵子调试一条四工位转盘线托盘上的工件每次摆放方向都不一样机械手要从托盘里把单个工件抓起来放到下一工位。最让人头疼的是视野做得比较大一个相机要覆盖整个托盘像素当量已经到0.14毫米左右而工件定位销孔的配合公差只有±0.3毫米。视觉计算出的坐标稍微偏一点机械手带着吸嘴一转角度抓取中心直接就偏出去了现场主管急得天天盯着节拍表看。这个案例用到的是双翌视觉系统配合六轴机械手做大视野下的单目标带角度抓取。整体方案不算复杂但是把标定、坐标解算、通信和节拍优化串起来之后里面值得记录的细节非常多尤其是机械手旋转中心标定这一块很多同行栽过跟头。我尽量把这套东西从头到尾讲清楚包括参数计算和踩坑经历给正在做类似项目的朋友一个参考。1. 项目需求与方案选型1.1 工位任务拆解单目标为什么也要认真做这个工位的任务看起来简单托盘上只有一个工件机械手用吸嘴把工件吸起来放到下一工位。但工件在托盘里的摆放方向没有任何定位销每次来料的角度可能是任意值。机械手必须根据视觉给的坐标和角度实时调整抓取姿态。说它是单目标是因为视野内每次只出现一个待抓取工件不需要做多目标分类、批处理这些复杂逻辑。但单目标不等于简单关键问题在于大视野覆盖下单个目标在图像里占的区域比较小特征细节少尤其是角度计算非常依赖特征边缘的清晰度。如果特征模糊或者光照不均角度抖动个一两度很正常机械手一转吸嘴和工件中心就错开了。第二个约束是节拍。整线节拍要求每3.5秒完成一次抓取视觉系统必须在机械手到达拍照点的同时完成图像采集和坐标解算不能成为瓶颈。这也是后面专门做一堆节拍优化的原因。1.2 大视野方案的取舍一个相机还是两个相机设计初期我评估过两套方案。方案一是两个相机分区拍摄每个相机各覆盖半个托盘像素精度可以做到0.08毫米左右。这个精度对0.3毫米的定位公差来说非常宽裕但硬件成本高还要做两次标定两个相机的坐标系统一也是麻烦事。方案二是单相机大视野覆盖整个托盘一个画面全部拍完。像素当量在0.14毫米左右视觉算法的亚像素定位能力可以把有效定位精度做到0.1到0.15毫米基本能满足公差要求。硬件简单标定也只有一套维护成本低。我最终选了单相机大视野。理由其实很实际工件本身带有明显的定位特征一个圆形工艺孔和一条刻线在0.14毫米/像素的分辨率下这两个特征仍然有足够的像素数来稳定提取。亚像素拟合的重复性实测在0.05毫米以内配合机械手±0.05毫米的重复定位精度最终叠加误差能控制在±0.2毫米以内。关键是一开始就要算清楚像素当量别到现场再后悔。以我这个项目为例相机分辨率是2448乘2048视野要求覆盖600毫米乘500毫米的托盘区域。横向像素当量就是600除2448约等于0.245毫米每像素。如果只用整数像素定位那必然超差但视觉算法通常能做1/10到1/16亚像素细分有效精度能做到约0.02到0.05毫米量级前提是图像边缘质量够好。大视野最怕的是边缘模糊镜头畸变也会影响精度所以镜头选型时一定要选低畸变型号。1.3 硬件组成与安装方式这套系统的硬件组成很常规500万像素面阵相机、低畸变定焦镜头、环形光源、工业PC上跑双翌视觉系统外加一台六轴机械手。相机安装在机械手外侧的独立支架上不随机械手运动属于眼在外Eye-to-Hand结构。我要特别强调独立支架这件事。最初现场图方便把相机支架锁在了机械手底座旁边同一个钢板上结果机械手运动时钢板轻微振动画面会有0.3到0.5像素的抖动直接影响亚像素定位稳定性。后来改成独立支撑柱和机械手底座完全分离图像立刻稳了。光源用的是白色环形低角度光源安装在相机镜头下方照亮工件边缘轮廓。大视野下的光照均匀性很重要如果中心亮边缘暗同样的工件在不同位置拍出来灰度不均角度计算就会发生系统性偏移。有条件的情况下尽量用大面积面光源或者把光源离工件稍微远一点让光线更发散。2. 相机标定与像素当量实测2.1 9点标定的原理与操作顺序视觉给机械手提供坐标前提是图像像素坐标和机械手世界坐标之间建立准确的映射关系。这个环节最常用的是9点标定也就是让机械手带着一个标定针尖在相机视野内走9个均布位置每个位置记录一组数据图像坐标系下的像素坐标加上机械手坐标系下的实际坐标。双翌视觉系统自带标定工具操作流程是先把标定针装在机械手法兰上在系统里新建标定任务然后在视野的四个角和中心附近依次走9个点。每到位一个点系统拍照并记录当前机械手坐标。全部记录完成后双翌的标定算法会自动拟合出一个仿射变换矩阵把图像坐标映射到机械手坐标。为什么是9个点而不是3个点3个点只能解出基础的线性仿射变换够用但精度差尤其是视野边缘区域容易偏。6个点可以用多项式拟合做一阶校正9个点能进一步平均掉机械手重复定位误差的影响。理论上前3个好点就能算出映射但现场机械手每次走同一个点都有微小重复误差多取几个点平均拟合出来的矩阵更稳。标定针的选择有个小坑。普通刀尖针容易磨损针尖钝了之后机械手坐标和图像中心的对应对不上标定出来全是系统偏差。后来换成硬质合金锥形针尖径0.5毫米磨损很小标定一致性明显改善。2.2 大视野标定的验证方法标定做完不等于结束必须验证。我的习惯是标定完成后让机械手重新走一遍9个点同时系统输出每个点的计算坐标和实际坐标差值。经验标准是每个点的残差最好控制在0.15毫米以内最大残差不超过0.2毫米。如果某个点残差特别大优先检查标定针是否松动或者机械手走位时撞到过什么。还有一种验证方式更接近真实工况在视野内随机放几个工件让视觉识别计算坐标机械手按坐标吸工件看吸嘴中心和工件中心的偏差。这个测试最好在不同区域多做几次角落和中心都验一遍。我在一次项目中发现中心区域精度很好但左上角总是偏0.4毫米排查后才发现是镜头畸变在视野边缘明显标定点数不够。后来把标定范围从托盘中央扩大到托盘四个角问题才解决。大视野标定还要注意一个细节标定时机械手姿态要和抓取时姿态保持一致。如果标定时机械手末端是一个固定高度抓取时又是另一个高度由于相机是针孔成像模型高度变了视野范围就会轻微变化导致标定失效。所以标定时要把机械手调整到实际抓取高度再开始9点标定。3. 机械手旋转中心标定带角度抓取的核心3.1 旋转中心标定是什么为什么必须做很多第一次做带角度抓取的朋友会想当然认为视觉给了角度机械手把第六轴转到这个角度就行。实际远没有这么简单。机械手末端装的是吸嘴或夹爪这个末端工具的中心线并不一定通过机械手第六轴法兰的旋转中心。换句话说机械手旋转时真正执行抓取动作的末端中心点会绕着一个偏心圆旋转。如果事先不告诉控制器这个偏心量是多少机械手一旋转吸嘴中心跟着跑偏视觉给的坐标就白算了。举一个更直观的例子。假设吸嘴中心相对法兰旋转中心偏移了5毫米旋转角度30度时吸嘴中心绕旋转中心转了一个30度的弧。在机械手基坐标下这个偏移会分解成X方向约4.33毫米、Y方向约2.5毫米的位移。这意味着视觉算出工件中心坐标后机械手按这个坐标走转到30度后吸嘴中心已经偏离目标位置好几毫米了根本吸不住。旋转中心标定要解决的就是这个问题。测出吸嘴中心相对旋转中心的偏移量把它配置到机械手的工具坐标或视觉系统的旋转补偿参数里。这样机械手再做旋转运动时控制器能自动补偿偏心影响或者视觉给出的坐标在角度变化时自动换算。3.2 现场标定的实操步骤我采用的标定方法是基于视觉的旋转中心测定不需要额外的高精度仪器。第一步在机械手末端安装一个标记物最常用的是一个针尖或一个高对比度的十字标靶。如果末端是吸嘴可以用吸嘴吸住一个带有同心圆的小标定块。第二步把机械手移到相机视野中央区域。让机械手分别旋转到0度、正30度、正60度、正90度、负30度、负60度这几个角度每到一个角度相机拍一张图双翌视觉系统自动提取标记点中心的像素坐标。第三步把记录的多个像素坐标导入拟合算法用最小二乘法拟合一个圆。这些离散点所在的圆周的圆心就是机械手末端标记点绕法兰旋转中心旋转时对应的图像坐标位置。这个圆心在图像里的位置配合之前9点标定的变换矩阵就可以换算到机械手坐标系里得到旋转中心的机械坐标。第四步把旋转中心位置填到机械手控制系统或者双翌视觉系统的旋转中心参数里。填好后做一个触发测试机械手原地旋转90度观察末端标记点中心在相机画面中的位置有没有明显移动如果有移动说明标定参数还没找准需要重新拟合。这里有个细节拟合圆的点数越多越好。角度间隔不要只选正负90度尽量覆盖较大范围至少六个角度以上才能准确估计圆心。如果只测两个对称角度圆心位置往往有偏向。3.3 带角度抓取的坐标解算公式旋转中心标定完成后视觉输出的坐标和角度需要经过一次坐标变换才能给机械手使用。假设视觉识别出的目标在机械手基坐标系下的位置是Xt、Yt目标角度是θ。机械手当前法兰到TCP工具中心点的X方向偏置是dxY方向偏置是dy。那么当机械手从当前角度转到目标角度θ时视觉输出的位置应该修正为X_set Xt dx乘cosθ减dy乘sinθY_set Yt dx乘sinθ加dy乘cosθ这个公式的含义很简单机械手旋转后由于TCP偏置的存在工具中心点会绕法兰旋转中心产生一个圆弧位移。视觉计算出的目标位置是以工具当前姿态为基准的所以要逆推回法兰中心应该到达的位置。举个例子dx等于5毫米dy等于0θ等于30度时修正量X是5乘cos30度约4.33毫米Y是5乘sin30度约2.5毫米。如果视觉给出的目标是X等于500毫米、Y等于400毫米那么实际的机械手目标位置应该是504.33毫米和402.5毫米。不加这个修正机械手吸嘴中心就会偏离2.5到4.33毫米。计算公式里符号的正负取决于你用的坐标系方向尤其是视觉Y轴和机械手Y轴方向反了的情况。建议写程序的时候先做个开环测试把工件随便放几个角度对比加修正和不加修正的抓取偏差确认方向对不对再正式跑。如果项目里机械手的TCP偏移已经在控制柜里正确配置控制器本身就能做旋转补偿视觉系统只需要输出目标坐标和角度不用自己去算修正量。但很多中小型项目中机械手端的TCP配置不够规范或者换了末端工具没更新参数这时候视觉侧的补偿公式就是保底手段。我自己习惯在视觉程序里保留这个修正逻辑输出坐标直接是最终目标值这样即使机械手端参数没配也不会出大问题。4. 双翌视觉系统的定位与角度算法设置4.1 模板匹配与特征选择在双翌视觉系统里做单目标模板定位最忌讳的是把工件整个轮廓都拿去建模板。大视野下工件占比小整体轮廓受遮挡、反光、背景干扰的影响大尤其是角度稍有变化模板匹配分数就掉得厉害。我的做法是选取工件上最稳定的局部特征做模板。这个项目里选的是工件上的圆形工艺孔加一条刻线整个模板区域只占图像的百分之二左右但特征对比度高形状简单旋转匹配非常稳定。双翌的模板工具支持矩形ROI设置把ROI框在工艺孔附近然后设置旋转范围从负180度到正180度最小匹配分数设为0.7。角度计算双翌系统里可以直接输出模板匹配的角度值但如果你用的目标特征其实是圆加一个方向标记也可以用找圆工具加上找边工具组合方式。找圆工具先锁定圆心坐标找边工具确定一条直线的角度两者结合算出目标实际偏角。这种方式比纯模板匹配更快因为找圆和找边的计算量都比整体匹配小很多。4.2 角度跳变问题的处理用模板匹配输出角度时一个非常坑的问题就是角度跳变。双翌输出的角度范围默认是负180度到正180度但目标角度如果在正179度和负179度之间微小抖动程序会把这两个接近的角度识别成一次大幅度旋转。机械手收到这个值之后会以为目标转过了一个大角度直接朝相反方向猛转一大圈不仅浪费时间还可能把吸嘴上的工件甩飞。针对这个问题我做了一个角度平滑处理读取到当前角度后与上一次输出的角度做比较如果差值大于90度就把当前角度按360度的补角换算让它落在上一次角度的附近。这个逻辑用简单的条件判断就能实现但必须在双翌的脚本里或者PLC侧做不然现场早晚出事。4.3 通信格式与主控逻辑视觉系统和机械手之间我用了TCP Socket通信双翌视觉系统作为服务器端机械手控制器作为客户端。相机采到图像视觉计算出X坐标、Y坐标、角度和结果状态拼成一个固定格式字符串发送给机械手。通信格式设计成一行文本比如“0345.21,1023.45,25.36,OK”前3个数分别是X、Y和角度最后一个字段是识别结果。机械手收到之后按逗号拆分解析如果最后字段是NG就执行异常处理流程比如重新拍照或报警停机。主控逻辑要设计成防呆的。机械手每到一个拍照位向PLC发一个拍照请求信号PLC触发相机硬性采集视觉系统完成计算后自动发送结果不需要机械手额外请求。这样通信少了一次一问一答的往返节拍更快。为避免数据错乱每条数据前再加上一个简单的序号标记在机械手端做校验序号不连续就丢弃重发。5. 机械手节拍优化实录5.1 视觉计算与机械手运动并行流水线整线节拍要求3.5秒完成一次抓取一开始按“机械手停稳拍照等视觉算完再运动到目标点”的顺序执行单次节拍在4.8秒左右根本跑不上去。后来我把整个流程改成并行流水线模式。实际操作是这样的机械手在完成上一次放件动作后回程途中先移动到拍照位。在机械手还在运动时PLC提前触发相机拍照双翌视觉系统马上开始计算。等机械手完全到位时视觉结果已经在等待了机械手拿到坐标直接去抓取点。这个改动把视觉计算时间完全从等待链路里隐藏掉了。原来视觉计算约0.5秒现在这0.5秒和机械手运动时间重叠总节拍一下子缩短到不到4秒。5.2 旋转与平移同时进行另一处节拍优化是旋转动作的并行。很多流程里机械手到目标点之后先把末端转到目标角度再下降抓取。这里浪费了至少0.3到0.5秒。由于这之前已经把旋转中心标定做准了机械手完全可以一边从拍照位移动到抓取点一边旋转末端到目标角度。在机械手控制器里把移动和旋转动作写在一个运动指令里路径规划会自动插补到达目标点时角度已经到位。这样既保证了精度又不额外占用节拍时间。但前提仍然是旋转中心标定要准否则一边平移一边旋转的路径补偿计算会让偏差更明显。5.3 通信方式简化少一次握手TCP通信如果不加设计机械手发一次请求视觉回一次结果一来一回大约要几十毫秒。这个时间在单次循环里不算多但积少成多而且阻塞式等待容易受到网络延迟波动影响。我的做法是视觉系统每拍完一张图就主动把结果发给机械手机械手端持续监听接收不做请求应答。由于视觉数据和机械手动作在时序上是一一对应的机械手每次收到新数据就知道是当前抓取周期的结果。为了让数据更容易对齐数据最前面带上一个递增的流水号机械手校验不停机。这个改动把通信开销降到最低节拍又快了约0.1秒。整套优化跑下来实测单次抓取节拍从原来的4.8秒稳定降到3.2到3.3秒完全满足产线要求。核心就是让视觉、运动、旋转三段耗时尽量并行重叠而不是串行排队。6. 常见问题与排查技巧实录6.1 典型故障速查表项目调试和试运行阶段遇到过不少问题我把常见问题和排查方向整理成一张表方便对照处理。现象可能原因排查方法视觉反馈角度偶尔跳动5度以上光照变化、特征反光、模板匹配分数低检查光源稳定性调整模板匹配最小分数增加角度平滑处理抓取中心偏移随角度增大而增大旋转中心标定不准或TCP未配置重新做旋转中心拟合检查机械手TCP偏移量是否生效视野边缘定位偏差大镜头畸变、标定范围没有覆盖工作区域增加标定点覆盖范围考虑加畸变校正机械手偶发收到错误坐标通信数据错位、网线干扰增加流水号校验换屏蔽网线确认数据格式一致图像模糊导致计算超时曝光时间太长、机械手振动降低曝光时间开启频闪光源同步增加相机支架刚性同一个位置识别结果不一致光源亮度波动、外部环境光干扰检查光源控制器加遮光罩固定光源亮度参数6.2 独家避坑经验调试这类项目我总结了几条自己踩过坑后记下的经验。第一标定针尖必须定期检查。标定针是硬质合金的但吸嘴撞击过几次后也可能出现微量弯曲。针尖一旦歪斜标定结果就会出现固定偏差。建议每批量产前做一次快速定位测试用同一个工件放固定位置连续识别5次检测坐标漂移。第二大视野项目一定要在角落加特征点验证。纯9点标定在中心区域精度好但视野边缘因为镜头畸变和透视原因容易出问题。如果产品允许在工作区域四个角每班检查一次定位精度超过0.3毫米立刻重新标定。第三频闪光源模式是一个非常实用的选项。双翌视觉系统支持外触发模式相机曝光和光源频闪同步能有效减少环境光和机械手振动带来的影响。开频闪时曝光时间可以收到1毫秒以下动态抓拍也不容易糊。第四双翌的脚本里尽量保留原始图像日志。每次NG或偏差超标时自动保存当次图像和计算结果。现场排查问题时这些图像日志能节省大量时间。我每次都会把图像保存路径和流水号绑定方便回溯。7. 一点实际体会这套双翌视觉系统配合机械手的大视野定位案例技术框架本身并不复杂真正决定成败的是三个细节标定是否覆盖完整工作区域、旋转中心是否标定准确、视觉和机械手动作是否真正并行。三个环节只要有一个偷懒后面抓取精度和节拍都会暴露问题。我个人在多次调试中最深的体会是旋转中心标定是所有带角度抓取项目里最值得花时间的地方。很多现场反映视觉和机械手配合不好其实问题不在视觉算法而在机械手旋转中心根本没有标准。只要把这一步做扎实后面抓取角度再大吸嘴中心也不会跑偏。如果现在让我重做一遍这个项目我会在上线之前就把整条流水线的节拍模型拉出来把视觉计算时间、运动时间、旋转时间逐一拆分设计成并行流水线再开工。另外双翌系统的Log功能和图像保存功能从一开始就常开不要等项目出了问题再回头补数据。调试阶段吃亏最多的往往就是现场数据不够没法定位问题到底出在视觉这边还是机械手那边。
返回列表