继续上篇《勇哥的视觉实验:眼在手上(eye in hand)的标定实验(二) 相机位于机器人第3轴时,并且定位特征在相机视野内不可见》
在上篇中,勇哥让机器人走了四个位置:pt1, pt2, pt3, pt4
由于相机镜头视野较小,在这个四个位置相机看到的视野范围是不同的。
而我们标定时选择是在pt1时相机看到的视野内容进行标定的,当我们在这个视野内任选一个点时,转换出来的机械坐标都可以正确让笔尖戳到这个点。
在本篇,我们想让笔尖能准确戳到pt2,pt3,pt3相机视野范围内的点。
实际上,在第一篇,勇哥已经有了结论:对于不在标定位置的其它位置拍到的点, 用矩阵转换出机械坐标后要加上当前的机械位置.
http://www.skcircle.com/?id=1395
在下面的测试中,先走到pt2点,然后去戳标记点。
这个点像素坐标是: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
在这个位置相机看到的视野内容如下。
我选择了箭头所示的特征点,其像素坐标是:852, 256
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
结果是正确的!
[位置二]
pt1的机构坐标: 276.626,-10.189
位置2机械坐标:233.371, -44.140
相机看到特征的像素坐标:278,614
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
版权声明:本文为博主原创文章,转载请附上博文链接!

