各类标定,都在这里
9篇
- 常见的标定方法简介
- VM应用之平移旋转标定使用
- 3D轮廓仪如何进行系统标定
- 双目相机标定原理
- 工程经验系列:视觉定位(标定设计,及应用)
- 浅谈VisionMaster中的畸变矫正工具(以及VM标定板二的灵活应用)
- 相机旋转,代替机械爪旋转,标定旋转中心。
- 【共享学习】单相机位与多相机定位分析
- 平移旋转标定模块与绝对坐标
才10来个赞,预期与实际相差有点大呀。是本论坛本来就人少,还是其他呢?
正片开始:
一、固定位置纠偏 固定相机。(以固定下相机居多)
应用场景说明:
相机固定,吸爪盲取到料。每次到拍照位置(固定拍照位置)拍照。目的是纠正盲取料的偏差。(其他例子,比如针式点胶,擦针头后,针头纠偏)
标定过程,如下图所示。
取一片料。假设,当前料,为标准位置。第五点位置,固定拍照位置。
做九宫格标定,得到变化矩阵:M2D。(标定时,机械坐标,第五点取值为0,其他坐标为与第五点的差值)如下图红色九点。
然后回到第五点。旋转数次,拟合出旋转中心。并记录旋转中心。可以直接用像素坐标。cenC,cenR。
使用:(工作流程时)
取到一片新料,到固定位置拍照。得到Mark点坐标:(C,R),角度α。
计算旋转变化,(C,R)以(CenC,cenR),旋转α*-1。后,得到新坐标(C1,R1)
在用(C1,R1)*M2D = (ΔX,ΔY)
(ΔX,ΔY), -α 就是 新料纠偏位置和角度。
如果有offsetX,Y, 就最后加上。
offsetU,在计算旋转的时候就要加上。
二、1,一致性取放 固定相机。(以固定上相机居多)
应用场景说明:(相机固定)
取料:拍摄来料,来料不一致。通过识别来料偏差,调整取料位置,使每次取料,吸爪与料的相对位置保持一致。实现取料一致。
放料:拍摄放料治具,治具位置不一致,通过识别治具偏差,调整放料位置,使每次放料,吸爪与治具相对位置保持一致。实现放料一致。
标定过程,如下图所示:
先计算旋转中心。得到旋转中心像素坐标(cenC,cenR)以及第五点与旋转中心的差值(ΔC,ΔR)
再做九宫格标定
注意细节,机械坐标使用绝对坐标,像素坐标,使用mark点坐标+(ΔC,ΔR)。即第五点坐标就是(cenC,cenR)
得到,标定吸爪旋转中心的变化矩阵。M2D。
使用:(取料工作流程时)
由于,取料中心,并不是旋转中心。所以要做一个,offsetX,Y,U示教。
即,取一个OK料(这时料与吸爪的相对位置是OK的)。放到相机视野内。
记录放料位置。(X,Y,U)。再用相机取拍摄,得到(C,R,U1),用M2D直接转换,
得到(X1,Y1,U1)。(X,Y,U)与(X1,Y1,U1)的差值,就是offsetX,Y,U。
以后使用时候,先拍照得到(C,R,U),乘以M2D 得到(X,Y,U)
旋转U1: U+offsetU。
旋转U1后的offsetX为offsetX1,旋转U1后的offsetY为offsetY1,
取料坐标(X+offsetX1, Y+offsetY1,U1)
注意正负号。(offsetX1,与offsetX,是不一样的,特别是U1越大,
差距越大,很多工程师搞不清楚这个,导致定位不准。
二、2,一致性取放 同轴移动相机。(以模组居多)
应用场景说明:(相机固定在移动模组,该模组与吸爪是同一模组)
取料:拍摄来料,来料不一致。通过识别来料偏差,调整取料位置,使每次取料,吸爪与料的相对位置保持一致。实现取料一致。
放料:拍摄放料治具,治具位置不一致,通过识别治具偏差,调整放料位置,使每次放料,吸爪与治具相对位置保持一致。实现放料一致。
这个过程,与固定相机方式,几乎一致,唯一区别,就是每次相机拍照位置在变化。但因为相机运动模组与吸爪取放料模组,是用一个模组。共用一套运动轴。那就好办,只需要把这个运动参数补上,就可以。
标定原理,与固定相机方式一样。只是相机在运动轴上,取像不方便。这个要根据实际设备,考虑如何取像。如何取像,引入的非必要误差少。(这个我们以后单独拿出来讲,比如可以用移动拍照位置,代替移动mark点)
唯一不同,是机械轴坐标,
标定的时候使用相对坐标。(绝对坐标 - 拍照坐标)
使用的时候,也使用相对坐标。(计算坐标+拍照坐标)
其余使用方式,与固定相机,一模一样。
再次强调区别,
标定的时候,减去拍照坐标,
使用的时候,加上拍照坐标。
拍照坐标是当前拍照坐标,一直在变动。
二、3,一致性取放 同轴移动旋转相机。(以机械手居多)
应用场景说明:(相机固定在移动旋转机械手上,该机械手与吸爪的机械手是机械手)
取料:拍摄来料,来料不一致。通过识别来料偏差,调整取料位置,使每次取料,吸爪与料的相对位置保持一致。实现取料一致。
放料:拍摄放料治具,治具位置不一致,通过识别治具偏差,调整放料位置,使每次放料,吸爪与治具相对位置保持一致。实现放料一致。
这个过程,与同轴移动相机方式,几乎一致,唯一区别,相机不止可以移动,还可以旋转。
这时,我们有2种解决思路。
第一,我们让标定时候,相机U的姿态,与工作拍照的时候,相机U的姿态,保存一致。其实这时相机的旋转量,就是0。完全可以用同轴移动相机的方式去做。完全不考虑相机会旋转。这种方式,也是我们最常用的方式。
第二,我们去计算相机的旋转中,并记录,标定时候的U,与工作拍照U1,的差值ΔU,用旋转中心计算,ΔU产生的ΔX,ΔY。把这个值加到XY上。
(相机在U上,还有一个好处,就是标定旋转取像的时候,用相机旋转,替代Mark点旋转,减少取像带来的误差)。
(因为相机会移动,考虑最多的就是如何取像,产生不必要的误差尽量少)
相机三种不同姿态,其实是递进的关系,最基础的是固定相机,然后再固定相机的基础上,给相机加上移动。
然后,给相机,加上旋转。
所以要先掌握,固定相机,然后再掌握,移动,旋转相机。在标定的时候,如何用相机的移动旋转,替换Mark点的移动旋转,降低标定误差。
二、4,一致性取放 异轴移动相机。(只在模组上应用过,暂时没在机械手上应用)
应用场景说明:(相机固定在运动模组上,这个运动模组,与吸爪运动模组不是同一模组)
取料:拍摄来料,来料不一致。通过识别来料偏差,调整取料位置,使每次取料,吸爪与料的相对位置保持一致。实现取料一致。
放料:拍摄放料治具,治具位置不一致,通过识别治具偏差,调整放料位置,使每次放料,吸爪与治具相对位置保持一致。实现放料一致。
相机运动轴,与吸爪运动轴,不同轴。好处就是,两运动轴,可以同时运动,不必相互等待,提高ct。
坏处就是,图像坐标与吸爪坐标,不能直接建立关系。
解决思路有2种:
1,图像坐标与相机移动动轴,建立转换关系,让相机移动轴某个坐标点位基准点。其他坐标映射到图像坐标系上。形成一个大的扩展图像坐标。然后用扩展图像坐标,与吸爪坐标系建立关系。
2,使用标定板。用一个大标定板,使图像坐标+相机运动轴坐标,与标定板坐标,建立关系。再用标定板坐标,与吸爪坐标建立关系。推荐使用这种方法。
关于二,2,3,4。没有配图,详细讲标定过程。全部是在二,1的基础上叙述。
我认为,只要你二,1,懂了。234,应该也能懂。如果有问题,请留言。我们再单独开贴讲。
PS:
(请记住,你的验证定位误差大于做数据时候的总误差DX 的时候,你就要注意,你的旋转计算是不是有问题。当误差数倍大于DX的时候,不要怀疑,肯定是你的旋转计算出问了。一定要故意用可接受的大角度纠正来验证旋转,旋转是最容易出错的地方。也是影响精度的关键。虽然旋转并不属于标定。)
好的标定,是定位的关键。
好的标定,首先,毫无疑问,要正确。推理计算都要正确。
然后,是要考虑标定过程中,如何尽可能少的引入非必要误差。(你会引入的误差,都你认为的必要误差,区别在于,你认为的必要误差,在别人看来是非必要误差,通过设计标定,可以不引入这个误差)
(因为我们每人的能力不一样,有的人,能看到非必要误差,有些人看不到,或者你压根搞不清楚,哪个是必要误差,哪个是非必要误差,只会套用几种标定模式。这个就是我们要持续学习的地方。)(后面会开贴,讲一下,我理解的一些标定方式,有哪些必要误差,哪些非必要误差)
定位的应用,不难,但是非常灵活。你要根据自动化设备结构,设计好的标定方式。这就是你价值的体现。
想一想,以前缺陷检测是不是很难搞。现在各方势力都推出深度学习解决这个难题。而且它还做到端到端。应用工程师需要做到事情,越来越少。到最后,就剩下选择一个模型,然后标注就可以了。那应用人员,还有什么价值?不要看深度学习很高端。现场应用需要的人员,其实是越来越低的要求。最后就是无要求。彻底傻瓜化操作。如果你搞深度学习,不是在设计,引入或优化模型 这一层面。只是搞现场应用,你要有危机意识。其实现场越来越不需要你,而且这个趋势不会停下来,直到彻底不需要你。
这一贴,希望大家能够保证 标定的正确。推理计算正确。再此基础上,再考虑设计误差更小的标定方式。
以上就是本帖全部内容,vm实现,将在下一贴。请点赞关照转发。小目标100赞。
以后使用时候,先拍照得到(C,R,U),乘以M2D 得到(X,Y,U)
旋转U1: U+offsetU。
旋转U1后的offsetX为offsetX1,旋转U1后的offsetY为offsetY1,
取料坐标(X+offsetX1, Y+offsetY1,U1)
旋转U1后 offsetX1,和offsetY1怎么算?
取到一片新料,到固定位置拍照。得到Mark点坐标:(C,R),角度α。
计算旋转变化,(C,R)以(CenC,cenR),旋转α*-1。后,得到新坐标(C1,R1)
在用(C1,R1)*M2D = (ΔX,ΔY)
(ΔX,ΔY), -α 就是 新料纠偏位置和角度。
如果有offsetX,Y, 就最后加上。
offsetU,在计算旋转的时候就要加上。
我是新手能解释一下吗
如果有offsetX,Y, 就最后加上。
offsetU,在计算旋转的时候就要加上。
请问这个offsetX,Y, offsetU是什么偏差