还在调试自己的openpnp设备, 底部相机矫正不过. 就生生的卡在这里, 6周了. 每天都在想办法在调试(各种怀疑, 各种调整, 各种做零件来保证机械安装精度, 也尝试买不同的摄像头模组来替换), 没有一次能矫正通过.
今天, 又调整了一次底部相机模组的安装位置, 再矫正, 居然过了…
这个问题花了巨量的时间和小几千的实验费用, 恐怖.
总结一下, 底部相机矫正不过的一些可能原因. 不一定能总结到要点上.
就是好好想想到底哪里出了问题? 到底我做了啥? 突然底部相机就可以矫正通过了…
到底影响底部相机矫正不过有哪些的可能原因?
设备刚到手时, 底部相机的组成(Z方向从上到下) = (环形灯1个 + 亚克力安装板1个 + 铜螺柱4个 + 相机模组1个). 亚克力安装板安装在设备工作平面上, 其他件都挂在亚克力安装板上.
刚开始是可以调试通过的.
啥也没动, 等2个月之后的时候(此时, openpnp软件已经基本会用了, 官方资料也看了不少, 顶部相机矫正不过的问题也解决了), 再重新走流程, 到底部相机初次矫正时, 就过不去了. 以后就没通过一次.
同学让我跳过底部相机矫正, 直接贴板子. 我坚决没同意.
我能同意么? 如果openpnp自带的流程都走不全, 哪来的精度?(openpnp流程走完, 就带了补偿了, 即使设备本身有些精度差, 也能通过补偿拉回来). 这是作为生产设备, 又不是玩具. 太不严肃了. 如果仅仅以设备能不能贴片为标准(不提精度), 那不是耍流氓啊? 那我还定制个毛线.
官方推荐的型号为 USB100W03M(720p USB 相机),国内有一家出这种相机 RER-USB100W03M
总之, 720P USB相机(1280X720 MJPEG@ 30fps)就行, 能用在openpnp上.
在720P USB相机里面, 还有高帧率(60FPS, 120FPS), 全局快门的, 黑白相机(听实验过的同学说, 要配置红色的环形灯效果才好)/彩色相机(标准的相机都是彩色的)看自己的情况进行优化.
相机的焦距以mm为单位.
以清晰看清目标(对于底部相机而言, 目标就是吸嘴的中空内沿或外沿)为标准, 不同焦距的相机模组有以下表现:
相机焦距值越大(e.g. 8mm焦距), 视野范围越窄, 在openpnp软件的相机成像区显示的内容越少, 越不利于图像识别(如果视野内容有限, 当移动识别后, 可能要判断的图像不在相机视野范围内, 会导致subject not found报错).
相机焦距值越小(e.g. 3.6mm焦距), 视野范围越宽, 在openpnp软件的相机成像区显示的内容越多, 越有利于图像识别.
要选择一个和自己测量距离相适应的相机焦距的相机模组.
openpnp官方给出了一个估算相机焦距的软件(Pick and Place Lens Calculator), 可以根据自己设备的机械安装限制(相机镜头到目标的距离), 来估算大概要采用的相机焦距.
我的设备相机离目标的距离大概都在30~40mm(顶部相机镜头到PCB的垂直距离, 底部相机镜头到贴头N1轴28电机上的吸嘴)之间, 用官方软件来算, 相机焦距大概要3.6mm~2.8mm之间. 根据官方推荐, 只有3.6mm和8mm焦距, 那么我的设备相机应该就采用3.6mm焦距.
我自己买的相机模组, 差不多买了10个(不同焦距, 不同分辨率, 不同帧率), 都是从一家买的, 安装好, 调焦后, 都很清晰, 但是通不过底部相机矫正.
怀疑自己买的相机模组不适用, 问同学要我设备原始用的相机链接, 去买了2个. 同学一直说我设备的原始相机是8mm, 但是看了商品描述, 明确说了相机焦距是3.6mm. 这和我调试中观察到的原始相机视野范围是吻合的. 所以话不能偏听偏信(特别是和一些比较粗心的同学讨论时), 要有自己的判断.
底部相机模组是挂在安装底板上的, 如果将相机模组直接拧在底板上, 会导致镜头离目标太近(5~10mm). 所以要选择合适的支柱长度. 这个长度要算一下. 使(安装底板 + 支柱长度 + 相机模组(将相机镜头拧近模组, 使镜头最短))固定后, 使相机镜头离目标30至40mm, 最好接近或大于40mm. 相机有效可调范围为5mm左右, 使相机转到一半可调范围时, 大概能清晰对焦即可.
我这里选择的支柱高度为17mm(通过实验来估算).
不同家的相机镜头长度(17mm, 20mm, 24mm)不同, 同一家不同焦距的镜头也不同, 需要自己来选择支柱长度.
刚开始做的版本如下
M2螺纹孔周围的圆形面积太大了, 导致和相机模组PCB上的元件(相机模组安装孔丝印周围1mm可能有阻容元件或3端器件, 有一定高度)接触, 安装不平, 螺丝带紧了, 会导致PCB变形.
M2螺纹孔的外缘直径, 最多3.8mm. 要和PCB上安装孔的丝印相当, 不要超过.
相机模组的GND不能和设备上的GND接触, 否则会导致相机不能正常工作.
相机只是安装到设备上, 和设备没有电气联系. 直接连接到电脑端的USB口.
用POM材料做了一个新版本如下:
不要使用垫片! 垫片极其影响平整度.(开始使用了0.3厚度的钢垫片, 自己觉得会提高安装的垂直度…)
直接使用 安装底板 + 内六角圆头M2x10螺丝4个 + 4个安装支柱 + 相机模组 + 4个内六角螺丝/螺柱
先拧紧(安装底板 + 内六角圆头M2x10螺丝4个 + 4个安装支柱), 尽量保证支柱的垂直度.
将相机模组放在4个安装支柱上, 用螺丝轻轻带上, 使X/Y方向被正常限位.
用双手分别按住模组4个安装孔中相邻的2个安装孔上面, 上下按, 看看相连的2个安装孔处, 模组PCB是否会不平. 如果不平, 螺丝带进后, 就会引起PCB翘曲, 进而影响镜头的垂直度.
以前, 没注意过这个问题.
昨天发现模组安装平整度不好后, 将垫片去掉, 直接安装, PCB平整度好多了, 在2个安装孔处按压, 没有发现明显间隙和不平.
再校验, 就通过了.
我做的新版支柱零件还没回来, 现在通过的场景还是用的市面上能买到的外六角塑料螺柱, 上了2个M2*8的. 形成高度为16mm的支柱.
相机安装时的平整度影响挺大的.
如果想长期保证底部相机/顶部相机的垂直度, 用市面上能买到的塑料支柱肯定是不行的. 设备的震动, 相机模组的重力, 相机模组USB通讯线的长期拉扯. 都会使支柱变形, 如果超过了一定限度(具体限度不好测量, 估计就0.xmm, 确实是有影响的), 相机的矫正就通不过了.
塑料支柱长期受力变形, 可能是我没动设备, 底部相机再2个月后, 突然不能通过校验的原因.
安装相机模组时的平整度问题是我这台设备底部相机不能矫正通过的主要原因.
看同学的设备, 将N1吸嘴放到底部相机十字中心, 上下移动吸嘴20mm, 吸嘴在相机十字中心纹丝不动.
我现在底部相机虽然能矫正通过了, 但是Z方向上下移动吸嘴, 吸嘴在相机中心已经偏出吸嘴内缘了. X方向/Y方向移动N1吸嘴, 可以看到X方向/Y方向也产生了偏差.
这个问题稍后再调整, 当然将相机轴调整的完全垂直肯定没坏处. 现在看来, 对底部相机的矫正不是主要因素.
做了0.1mm的调整垫片40个, 垫在安装底板的4个角上, 就可以将相机Z轴调整的完全垂直. 不过这个要在我做的新支柱回来之后再优化.
为了做实验, 将相机成像时间改为了2000ms.
这个也有影响.
如果以后正常了, 用openpnp自带的功能, 就能自动确定一个合适的相机稳定成像时间.
我相机对焦时, 用的就是零点位置.
以前进行矫正时, 直接Z轴归零就开始校验.
这次有点区别:
除了硬件安装的垂直度问题, 感觉openpnp本身也是有bug的.
如果将各种影响openpnp矫正的因素都找出来, 也是一个挺有挑战性(吃饱了撑的)的任务.
作为个人, 只要能知道自己的设备, 使用哪种相机, 安装垂直, 然后软件在哪个姿势能矫正过, 这就O了.
感觉这次调设备的事特别多, 解决完一个问题, 就又出现一个新问题, 真无奈.
关于openpnp相机矫正的事情, 估计还没完. 等做的新版支柱零件(绝对没有形变, 原理上能保证安装稳固)回来之后, 还需要再验证.
又买了一些相机模组(官方推荐的型号(用于基础验证, 相机成像时间), 全局快门的720P相机模组(用于优化)), 等回来试试.
感觉相机矫正报错(大部分报错是移动后, 显示 subject not found), 根本原因还是相机没安装垂直(安装底座和安装支柱的垂直度, 4个安装支柱平面的平整度, 相机模组上的零件千万别和安装支柱有干涉), 这是主要原因, 要用自己设计的非标机械零件来保证.
剩下就是软件使用方面, 也有一定影响. openpnp软件还在进化, 看到网上有很多人说, openpnp下, 校验通不过之类的留言. 感觉openpnp软件还是有bug的, 等待更新的openpnp稳定版出来.