Epson机器人同第三方相机校准方法
基本思路:
1. 相机通过以太网RS232同机器人通信
2. 按机器人校正指令的要求获取、分离相机发送过来的信息
3. 使用校准指令
准备工具:
1. 制作9宫图
2. 制作机器人工件坐标的校准工具(类似铅笔,装在Z轴或者抓手上)
一. 机器人与相机通过以太网通信(tcp/ip)
1. 制作如下9宫图,该图的大小尽量占满相机的视野范围,但是不能太靠近边界,可用打印机打印,为获得更高精度加工类似的高精治具。
注:以上数字为点的排列顺序,制作时可以省略,但是取点时一定要严格按照改顺序来取点。
2. 相机必须具备两个功能: a.收到某个命令或者输入点信号为校准模式 b. 收到某个命令或输入点信号为正常工作模式。
3. 相机的单位必须为像素:相机按顺序获得9个圆的中心点的像素坐标,这9个点的坐标可以用特殊符号隔开(常用:“+”,“-”,“ “等,不能用"," 这样用的目的是让机器人编程方便地把这些点的信息提取),然后发给机器人。如: p1+p2+....+p9
二. 机器人的tcp/ip通信
1. tcp/ip的参数设定:
在菜单栏"工具"->"控制器设置"->"tcp/ip"->"端口"
a. "ip地址”: 相机的ip地址。
b. "tcp/ip地址":相机Tcp/ip通信的端口号。
c. "终端”:信息的结束符;相机、机器人双方必须设置一致。
d. "超时":可以忽略。
2. 程序示例(测试通信,有些地方没完善)
Function tcpip OpenNet #201 As Client ‘以客户端方式打开tcp/ip端口 Print "Wating...." WaitNet #201 '等待Tcp/ip端口打开 Print "port have open" Print #201,"CC,21" '发送命令给相机指定工作模式 Print #201,"T1" '命令相机拍照并且返回结果,这里写的是基恩士智能相机交互的格式 if ChkNet(201)>0 Then '判断是否收到数据 Wait 0,1 Input #201,DATA$ '收到数据后存到DATA$ If Len(data$)>10 Then '下面是数据提取功能,不是通用的,仅供参考 Integer k For k=0 To 8 s$=Mid$(data$,k*12+1,12) Xccd(k)=Val(s$) '坐标分离, 思路就是提取每个点后,用P=XY()指令转存到点文件中去,如P21-P29 Print Xccd(k) Print DATA$ ElseIf ChkNet(201)=-3 Then '这里为通讯异常处理 CloseNet #201 OpenNet #201 As Server WaitNet #201 EndIf Fend
三. 校准,RC+5.4以后增加了支持第三方校准的功能,安装了对应的版本软件以后打开"SPEL+语言参考"里面有详细说明。指令包括: VxCalib,VxCalDelete,VxCalLoad,VxCalInfo,VxCalSave, VxTans这些命令。
1. 使用: 只要用VxCalib, VxTrans两个命令就可以完成校准。
VxCalib:建立一个校准,指令的详细说明阅读手册;
根据相机的像素点和机器人的毫米点来校准。假定上面的程序已经获得了9宫图的9个点的像素坐标,接下来也要按顺序示教机器人的9宫图的圆心点的坐标,也要按顺序保存如: P1-P9
注意:点坐标必须连续,使用TOOL 0, ARM: 0
VxTrans: 将当前点通过已经建立的校准转换成机器人坐标。
参考手册上的例子:
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

