贴合机总贴歪先别怪算法八成是标定模型选错了前阵子帮朋友看一台贴合机。视觉程序从头翻到尾愣是没毛病九点标定也做了可机构一转角度补偿就是差那么点。折腾到最后发现问题压根不在代码——标定方案跟机械结构没对上。定位、贴合的项目做得多了总结下来常规的就5种本文将常用的标定方式总结出来供大家参考讨论如果有不对的欢迎指正批评由于我们主要用Halcon所以文章示例均为Halcon代码但是标定主要讲的是思路算法用哪家都可以。如果是多相机组合定位贴装思路其实是一样的把各个相机单独标定最后折算到一起计算出整体偏移补偿。常见的五种结构结构特征标定需求A相机固定夹具不旋转只需九点标定B上相机固定夹具旋转九点标定 示教标准位C下相机固定夹具旋转九点标定 示教标准位 旋转中心标定D上相机随平台 U 轴旋转通常简化成 BE上下相机结合贴合项目上相机定位来料 下相机定位物料A相机固定夹具不旋转——最简单最基础的一种。XY 平台来回动没有旋转轴相机装好就不动。标定简单到没什么好展开的九点标定完事。相机朝下拍也好、朝上拍也好路子一样——九组像素和机械坐标的对应点vector_to_hom_mat2d矩阵就出来了。坑倒是有两个提前说。矩阵只在标定那一个 Z 高度上有效工作距离一动就得重来——不少人换了产品厚度才想起来这事。九点拟合的是相似变换镜头畸变它治不了精度抠得紧的项目要么直接上远心要么先做畸变校正再说。另外心里要有数它只能补 XY。项目里没有旋转轴无所谓有的话别指望它。图A 模型结构示意——XY 移动、无旋转机构B上相机固定夹具旋转——用示教标准位绕开旋转中心结构上多了个 Z 轴和旋转夹具。相机在上方不转只跟着 Z 轴升降——相机和旋转中心的相对位置是死的要补的就是 x、y、θ。图B 模型结构示意——绿色为示教标准位所有补偿的目标都是把任意姿态拉回这个位置做法是先示教一个标准位置出来后面所有补偿都奔着把任意姿态拉回这个位置去。示教想做准有个笨办法拿真件。把样品放到目标位置按生产那一套——同一个夹爪、同样的夹持力、同样的真空——夹起来移到拍照位拍一张图存下来。这张图就是标准位置。实物建的基准比程序里手敲一个数可靠得多。有个现象值得单独说B 模型一般不用标旋转中心九点标定就够。但不用标是有条件的。相机就在正上方产品转完还留在视野里可以再拍一次位置偏差重新实测掉剩下的就是纯 XY 平移。说白了 B 吃的是二次拍照的闭环红利不是结构上真绕开了旋转中心。哪天转大了产品出视野或者工艺只让你拍一次照开环补偿B 也得乖乖回去标旋转中心当然如果夹爪和旋转轴同心在精度要求不高的场合也是可以不用标定旋转中心的。C 为什么躲不掉往下看。C下相机固定夹具旋转——贴合项目的常客坑也最多相机装在台面底下从下往上拍夹具夹着产品到拍照位定位。贴合项目里这结构非常常见。图C 模型结构示意——相机在台面下方从下往上拍为什么要标定旋转中心做法还是从标准位置夹取目标物到拍照位拍照这样准。旋转中心和目标中心不重合这个事B 一样有。C 的麻烦在别处——它的补偿是开环的。下相机拍完产品就得去贴合位了贴合位上没有相机旋转带出来的 XY 位移没法二次实测只能靠已知的旋转中心提前算出来扣掉。没得选C 想补得准旋转中心必须先标出来。位移好算绕旋转中心转 θ目标点位移 δ ≈ 半径 × θ。旋转中心知道了一次刚体变换角度位置一起算。图旋转中心与目标中心不重合——角度补正了中心却多出一段 XY 偏差顺序上有个建议先九点标定再标旋转中心。有了像素到机械的转换拟合圆可以全程在机械坐标下做直接得出mm。旋转中心的两种标法目标物能在视野里转大角度的。转几度记几个点用点拟合个圆圆心就是它。图大角度场景——视野内记录多个位置拟合圆圆心即旋转中心转不出大角度的麻烦点。多半是机械限死了或者工艺不让——一转产品出视野。圆拟合做不成换个思路取同一个特征点旋转前后的两个位置 P₁、P₂必须是同一个点再拿 U 轴反馈的旋转夹角 θ解旋转中心。有两个点需要特别注意。一是这个解其实有俩对称分布在 P₁P₂ 连线两侧得按实际旋转方向挑——挑反了半径和弦长都对圆心却在镜像位置光看数据根本发现不了。二是小角度把误差放大半径 r 弦长 / (2·sin(θ/2))θ 越小分母越吓人。转 2° 的场合0.05° 的角度误差就能让圆心飘出几毫米。图FOV 受限场景——旋转中心落在视野外靠 P₁、P₂ 两点加夹角 θ 建立方程组求解补偿计算的一个忠告网上搜来的示例十个里九个拿像素坐标当旋转中心。矩阵换算本身不引入误差那是确定性的算法问题在别处——像素坐标下的旋转中心跟那次标定绑死了换个镜头、动个焦距、重做九点。但是如果用机械坐标则不用只要夹爪不拆旋转中心可以不用重复标定。这步数学 Halcon 有现成的vector_angle_to_rigid注意Halcon的大部分算子均是弧度机械系统需要角度单位转换不要忽略否则容易出错。图网上常见的补偿写法——旋转中心用了像素坐标能用但不推荐理由见上文D上相机随平台 U 轴旋转相机挂在机械手 Z 轴末端从上往下拍还跟着 U 轴转。图D 模型结构示意——相机挂在机械手 Z 轴末端随 U 轴旋转真做过会发现多数项目拍照的时候 U 轴根本不动锁在固定姿态就行旋转的事全交给运动规划那层视觉只管测偏差——跟B模型一样的。所以接到 D 类项目我的第一反应永远是先琢磨能不能按 B 模型处理。E上下相机结合——贴片机的标准答案贴合项目的完全体两个相机一起上。上相机管来料——PCB 板这种下相机管要贴的元件。产品进工位轨道流入也好机器人抓进来也好反正是先到位。然后上相机拍来料上的 Mark 点把来料坐标系建起来。接着供料位抓料转到下相机位。这里有个细节吸嘴要先转到一个固定的拍照角度再拍算出物料偏差。为什么角度要固定不固定的话下相机每次看到的姿态都不一样偏差没法比。最后到贴合位。结合来料坐标系和物料偏差做一次刚体变换解出贴装的目标点贴下去出料等下一件。上下相机不能各标各的就完事得找个基准件让两个相机各看一次同一个物理点做一次关联标定两套坐标才算在一个基准上。而且这个变换会漂——温度、机械松动量产时建议定期标定上位机尽可能做到一键标定方便操作。如果不做关联标定则需要示教标准位置上下相机各补各的。图E 模型结构示意——上相机看来料下相机看物料写在最后所有的贴装项目上位机实现时均需要做补偿量管控防止异常发生时突然给一个非常大的补偿量直接用该补偿量导致撞机。这篇就写到这。标定上踩过什么坑评论区聊聊。
阅读完成 · 觉得有帮助?