工程经验系列:视觉定位(标定设计,及应用)
影响定位的因素; 视觉定位的原理; 视觉定位的分类; 标定设计; 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赞。

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

工程经验系列:视觉定位(很干,请自备饮料)

下一篇

相机,镜头选型相关知识。一篇全搞定

评论请先登录 登录
全部评论 19

要是有图片或者视频讲解就好了,干货文字太多有点晕

2024-01-12 11:03:24 广东省
回复

CB和DX的差异,仅仅是3*3和4*4网格的区别吗?两者还有哪些不同?

2023-11-01 19:34:17 浙江省
回复

阅读大佬的文章真是如醍醐灌顶😁

2023-09-25 13:21:43 四川省
回复

能分享一下程序吗

2023-08-24 16:47:07 广东省
回复

以后使用时候,先拍照得到(C,R,U),乘以M2D 得到(X,Y,U)
旋转U1: U+offsetU。
旋转U1后的offsetX为offsetX1,旋转U1后的offsetY为offsetY1,
取料坐标(X+offsetX1, Y+offsetY1,U1)

旋转U1后 offsetX1,和offsetY1怎么算?

2023-08-08 22:26:34 未知地区
回复

我是第一百个点赞的,跟vm自带的例子好像不太一样,定位算法思路不太一样,,,😀

2023-08-06 22:38:08 未知地区
回复

是不是用单点纠偏模块就好了,配置下,不用自己去计算偏差啊?

2023-07-26 17:19:19 未知地区
回复

大佬能不能出个视频讲解一下, 看文字有点把自己搞晕的感觉

2023-06-27 10:05:44 未知地区
回复

大佬有微信群?,拉一下我呗,18308351023

2023-02-20 10:47:38 未知地区
回复

取到一片新料,到固定位置拍照。得到Mark点坐标:(C,R),角度α。
计算旋转变化,(C,R)以(CenC,cenR),旋转α*-1。后,得到新坐标(C1,R1)
在用(C1,R1)*M2D = (ΔX,ΔY)
(ΔX,ΔY), -α 就是 新料纠偏位置和角度。
如果有offsetX,Y, 就最后加上。
offsetU,在计算旋转的时候就要加上。

我是新手能解释一下吗

2022-09-09 18:10:45 未知地区
回复

如果有offsetX,Y, 就最后加上。
offsetU,在计算旋转的时候就要加上。

请问这个offsetX,Y, offsetU是什么偏差

2022-08-19 08:13:11 未知地区
回复

😁

2022-08-08 16:23:54 未知地区
回复

感谢分享,学习一下

2022-07-13 12:12:23 未知地区
回复

我叫旅客我立志要走遍所有评论区

2022-07-07 19:15:02 未知地区
回复

😨

2022-07-07 19:08:08 未知地区
回复

讲的挺好

2022-07-07 15:54:54 未知地区
回复

见标题识大佬系列

2022-07-06 16:41:19 未知地区
回复

大佬都是经验之谈,感谢分享

2022-07-04 17:48:51 未知地区
回复

感谢分享,已关注楼主。

2022-07-03 20:33:09 未知地区
回复
  • 1
Lv.0
0
关注
442
粉丝
28
创作
843
获赞
所属专题
  • 常见的标定方法简介
  • VM应用之平移旋转标定使用
  • 3D轮廓仪如何进行系统标定
  • 双目相机标定原理
  • 工程经验系列:视觉定位(标定设计,及应用)
  • 浅谈VisionMaster中的畸变矫正工具(以及VM标定板二的灵活应用)
  • 相机旋转,代替机械爪旋转,标定旋转中心。
  • 【共享学习】单相机位与多相机定位分析
  • 平移旋转标定模块与绝对坐标
相关阅读
  • [共享学习]VM之角度纠正问题
    2024-03-07 浏览 0
  • 机器视觉菜鸟指南
    2024-02-29 浏览 0
  • 基于C++OpenCV实现VisionMaster中的“直线边缘缺陷检测”
    2024-03-04 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器