关于Epson机器人视觉引导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、建立TCPIP通信,从视觉系统获取可使用的像素坐标字符串,一
般机器人控制器作为客户端client,而视觉系统作为server。
涉及指令【OpenNet WaitNet LineInput Print # Parsestr Val】
Function TCPIP
OpenNet #201 As Client
WaitNet #201
LineInput #201……
Parsestr…………..
FEND
2、确定相机的安装位置,此处以相机安装在#4 joint为例子,此时
吸嘴也不在原来的Tool0中心,所以此时需要确立新的两个坐标系,此中最必要的是确立吸嘴的工具坐标系Tool1,在机器人控制中的工具坐标系向导进行示教保存,这是前期必要的准备工作。
3、有了以上步骤作为辅助后,根据Epson视觉标定的需求,具体见
VxClib函数,需要9个机器人坐标系下的点,总而言之就是,在新建的Tool1下示教9个点,且获取这九个点下的像素坐标,这样的就可以生成具体的视觉标定caa文件了
涉及指令【VxClib LoadPoints SavePoints VxCalSav VxCalInfo】
4、利用上面生成的标定caa文件就可以进行之后的操作了,标定文
件是之后坐标转换的基准,也就是说,像素坐标对应的机器人坐
标均由此产生。
涉及指令【VxCalLoad VxTrans XY CX CY CZ CU CV CW】5、基于以上步骤,要注意实际运行时工具的选用,以免造成工具坐
标系的不匹配而位置错误
6、关机触发拍照,最好使用视觉系统触发,这样的话配合内部存储
IO指令指令即可形成循环的逻辑判断,知道相机的进程,以及对拍照失败等情况做出反应
7、其他需要注意的地方是程序的容错性,不能中途进行不下去就一
直等待或者没有别的相应操作,全局变量和局部变量的使用
'该项目中相机固定在机器人的4#轴上,为移动相机,利用相机拍照识别托盘中的工件
'放在一固定的模具内,每次放置为角度位置确保一致
Global String pixel_string$;
Global String rec_string$(10);
Global Real data_x, data_y, data_u;
Integer camara_id;
Function main
'Call intialization
Call TCPIP
Call creat_calib_data
Call point_trans
Call working
Fend
'初始化
Function intialization
If Motor = Off Then
Motor On
EndIf
SpeedS 500; AccelS 1000, 1000
Home; Reset;
Power High; Speed 60; Accel 60, 60
SpeedS 500; AccelS 1000, 1000
Fend
'[点位的对应关系,计算出来的是否足够准确]
'创建标定数据,准备好标定需要的像素坐标,机械坐标各9个点,[参考点的使用与否]
Function creat_calib_data
Integer i, j, k;
Real info(10);
LoadPoints ""
Pallet 1, robot_cal1, robot_cal3, robot_cal7, robot_cal9, 3, 3
'生成9个机器人坐标点P20-P28,换顺序
For i = 1 To 9
P(i + 19) = Pallet(1, i)
Next i
P13 = Pallet(1, 6)
P15 = Pallet(1, 4)
SavePoints ""
'基于刚才生成的9个机器人坐标点,拍照9次,获取对应点的像素坐标P10-P18
For j = 20 To 28
Go P(j)
On light1, ; On camara1, '执行拍照
Call parsestr_str '拍完照后进行解析
P(j - 10) = XY(data_x, data_y, 0, data_u)
Print "P(j-10)", P(j - 10)
Next j
SavePoints ""
'开始生成标定数据
'vxcalib 0[1-15标定数据ID号],5[安装方式:mobile on joint#4],P[指定的像素坐标xy only],P[指定的机器人坐标],P[参考点,也不一定要]
VxCalib 0, 5, P(10:18), P(20:28), P9
If (VxCalInfo(0, 1) = True) Then
For k = 0 To 7
info(k) = VxCalInfo(0, k + 2)
Next k
Print "Calibration_0 result:"
Print "X Avg Error [mm]:", info(0)
Print "X Max error [mm]:", info(1)
Print "X mm per pixel [mm]:", info(2)
Print "X tilt [deg]:", info(3)
Print "Y Avg error [mm]:", info(4)
Print "Y Max error [mm]:", info(5)
Print "Y mm per pixel [mm]:", info(6)
Print "Y tilt [deg]", info(7)
Else
Print "calibration failed!"
EndIf
VxCalSave ""
Fend
'创建TCP/IP通信,解析发送来的像素坐标字符串Function TCPIP
pixel_string$ = "12000,,2121212,";
OpenNet #201 As Client
Print "waiting for connect"
WaitNet #201