勇哥的视觉实验:眼在手上(eye in hand)的标定实验(三) 定位相机移动范围内的任意点


继续上篇《勇哥的视觉实验:眼在手上(eye in hand)的标定实验(二) 相机位于机器人第3轴时,并且定位特征在相机视野内不可见


在上篇中,勇哥让机器人走了四个位置:pt1, pt2, pt3, pt4

由于相机镜头视野较小,在这个四个位置相机看到的视野范围是不同的。

而我们标定时选择是在pt1时相机看到的视野内容进行标定的,当我们在这个视野内任选一个点时,转换出来的机械坐标都可以正确让笔尖戳到这个点。


在本篇,我们想让笔尖能准确戳到pt2,pt3,pt3相机视野范围内的点。


实际上,在第一篇,勇哥已经有了结论:对于不在标定位置的其它位置拍到的点, 用矩阵转换出机械坐标后要加上当前的机械位置. 

http://www.skcircle.com/?id=1395


在下面的测试中,先走到pt2点,然后去戳标记点。

image.png

这个点像素坐标是:547,730

用pt1的矩阵HomMat2D转换为机械坐标为:192.788,81.7104

我们把这个值减去pt1的机械坐标,就是正确的结果:172.788,81.7104

正确答案是:171.594, 81.002,有点误差,不过原因是因为实验时Z轴抬得比较高,笔尖位置用人眼对不是太准。


由于pt2相对于pt1机器人是往x方向减少,所以这里是减去。


*********************************************************************************
*这一部分标定用的是pt1视野中的四个点标定的。

//266,170
//966,163
//970,869
//269,875
px:= [266,966,970,269]
py:=[170,163,869,875]

//185.277,78.074
//185.277,87.222
//194.692,87.222
//194.692,78.074

mx:=[185.277,185.277,194.692,194.692]
my:=[78.074,87.222,87.222,78.074]

vector_to_hom_mat2d(px, py, mx, my, HomMat2D)

affine_trans_point_2d(HomMat2D,272,688 , Qx, Qy)
*污渍点的像素坐标
//272,688
*正确答案
//192.09, 77.917

**********************************************************************************

stop()

//pt2的标记点的机械坐标,即正确答案
//171.594, 81.002
//它的像素坐标是:547,730
affine_trans_point_2d(HomMat2D,547,730 , Qx2, Qy2)
//计算结果为:192.788,81.7104


//pt1: 276.626,-10.189
//pt2: 256.262,-10.189

//当前位置-基准坐标-像素转出来的机械坐标
cx:=276.262-256.262
cy:=-10.189--10.189

qx:=192.788-cx
qy:=81.7104-cy
//结果:172.788,81.7104


最后再理一下我们的结论:

假设是在pt1下做的标定,那么相机走到其它任何位置,你都应该把特征点的像素坐标用pt1下的矩阵转为机械坐标,然后用它减去pt1下的机械坐标就是正确的绝对位置了。


现在勇哥让机器人随便走两个位置,来验算一下上述推论是否准确。


[位置一]


pt1的机构坐标: 276.626,-10.189

位置1的机械坐标:243.233, 22.805


image.png

在这个位置相机看到的视野内容如下。

我选择了箭头所示的特征点,其像素坐标是:852, 256

image.png

affine_trans_point_2d(HomMat2D,852, 256 , Qx3, Qy3)

结果是:186.501, 85.724


Qx=186.501-(276.626-243.233)=153.108

Qy=85.724-(-10.189-22.805)=118.718


//正确答案是:153.064, 117.710


结果是正确的!


[位置二]


image.png

pt1的机构坐标: 276.626,-10.189

位置2机械坐标:233.371, -44.140

相机看到特征的像素坐标:278,614

image.png

affine_trans_point_2d(HomMat2D,278,614 , Qx3, Qy3)

结果是:186.501, 85.724


Qx=191.207-(276.626-233.371)= 147.952

Qy=78.2052-(-10.189--44.140)=44.2542


//正确答案:147.823, 44.184


可以看到结果是正确的。


有了这个结论,我们就可以移动相机拍任何位置的特征进行定位了!!


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!

本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864