Epson机器人标定后验证标定的精度(七)

这一次勇哥使用Epson机器人的标定来进行验证标定后的精度。


首先按下图做九点标定。注意对于Epson机器人自己的标定指令来说,它认下面的顺序,不要乱搞。

image.png

一般流程是:

(1)你打印一张九点标志的纸,尽量能铺满视野范围。

(2)在吸盘下装一个铅笔一样的针尖,去扎九个点的十字中心

经过上面的步骤,你就能获得九组像素坐标与机器人坐标。


但勇哥这台机器是背光的,这样搞不了。所以我只能先工具坐标标到标准片的Mark点上去,Mark点是可以在背光上拍出来。

这样我拍一次图,可以同时获得Mark点的像素坐标与对应的机器人坐标。


工具坐标的创建上几篇中有说明,这里就不赘述了。




把9组特征点的像素位置与对应的Robot的位置(就是Tool 1下的坐标),新增到机器人的点里面。

注意其点的名字可以是任意,不重复即可。我们只需要X,Y的坐标。

接下来就可以使用指令VxCalib来进行标定。

image.png


机器人中敲入如下代码:

Function cal1()
  LoadPoints "robot1.pts"
  'VxCalib 0,2,p(35:43),p(44,52)
  VxCalib 0, 2, P(35:43), P(44:52)
  If VxCalInfo(0, 1) = True Then
		Print "向下固定相机校准成功,结果如下:"
		Print "					X方向的平均偏差[mm]:", VxCalInfo(0, 2)
		Print "					X方向的最大偏差[mm]:", VxCalInfo(0, 3)
		Print "	X方向每像素的长度 ( mm ):", VxCalInfo(0, 4)
		Print "					X方向的傾角 ( deg ):", VxCalInfo(0, 5)
		Print "					Y方向的平均偏差[mm]:", VxCalInfo(0, 6)
		Print "					Y方向的最大偏差[mm]:", VxCalInfo(0, 7)
		Print "	Y方向每像素的长度 ( mm ):", VxCalInfo(0, 8)
		Print "					Y方向的傾角 ( deg ):", VxCalInfo(0, 9)
	Else
		Print "向下相机校准失败,请重新示教点校准相机!"
	EndIf
  VxCalSave "1.caa"
  
  
Fend

标定指令VxCalib执行前,要先载入点文件,这里是robot1.pts。

这个指令的第一个参数是类似标定的句柄,后面的指令如VxTrans都要用到这个句柄。

第二个参数是表示视觉相机的安装方式:

1: Standalone                 独立安装(相机坐标与机械手坐标不需要相互转换)

2: Fixed downward          固定安装的相机(固定向下)

3: Fixed upward                固定安装的相机( 固定向上)

4: Mobile on Joint #2       移动安装的相机( 安装在关节2)

5: Mobile on Joint #4 

6: Mobile on Joint #5 

7: Mobile on Joint #6 

VxCalib指令的第三,四个参数分别为像素坐标与机械人坐标,必须使用连续的点位进行保存。


运行函数cal1,标定成功,结果如下:

image.png


机器人标定完成后,我们来测试一下标定后的精度。

我没在屏幕上任选一个点,这里勇哥选择:700,580

机器人里写如下程序,执行它。

Function cal2()
	P55 = VxTrans(0, P53)
    Print P55
    
Fend


VxTrans是把像素按标定结果转为机器坐标。

结果是:-8.200,288.799

关于这个指令说个题外话:你可能会发现在代码编辑器里敲这个指令没有语法提示,是不是很恼火?

其实是因为你必须输入”变量=“再敲指令,就发现有语法提示了。

image.png


在机器人里面增加一个-8.200,288.799的点,走过去。

然后视觉拍照,取特征点的像素坐标。

在下面的图中,绿色的十字为特征点的像素位置,红色十字为特征点的像素位置。

下图中你只看到了红色十字,证明绝色十字几乎与绿色十字完全重合。


目标点位置(像素):x= 700,y= 580

实际位置(像素):x= 697.982, y=579.289

x偏差2个像素

y偏差1个像素


image.png


对比第四篇的结果:

我们对比移动到后的像素坐标:  
  目标为: 685, 451
  实际为: 690.251, 458.546
  row差5.2个像素
  column差 7.5个像素


相比之下,机器人自己的标定功能,其精度高得让人惊讶!


但是epson的VxCalib和VxTrans也有不方便之处。

如VxTrans它要求把像素坐标放到一个点中作为参数再调用它。取得的结果需要回写到另一个点中,然后才能读取。

过程繁索,你得在机器人中专门为此写一个function,然后外部调用。

如果机器人为上位机调用,就方便这样搞。如果机器人是plc控制,就麻烦了,那就变成上位机只给像素坐标plc,plc再去调用这个Function,

而plc一般是通过远程命令的方便调用机器人,执行一个Function不太方便。(有办法,但也是麻烦)



下一篇勇哥把机器人交给上位机来控制,来应用VxCalib, VxTran完整的流程。


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

作者: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