CS 机器人搭配 2D 视觉偏移取料

1. CS 机器人搭配视觉工作流程

    CS 机器人搭配 2D 视觉,常用于偏移取料。常见流程:来料位置不固定,视觉在固定高位 对产品拍照,算出产品位置后把数据发给机器人,机器人走到对应取料位夹取产品后再去放料。

    如果没有视觉,也可以用电脑网口调试助手和电脑虚拟机搭配测试,模拟视觉,用网口助 手发对应偏移数据给到机器人运动。

2. 运行前准备

    2.1 检查网络是否连通

        插好网线,将机器人 IP 和视觉 IP 设置成同网段(前三位相同,后一位不同),然后在视觉电 脑终端 ping 机器人 IP,看是否能 ping 通,确认网络有连通。

    2.2 示教机器人的工具 TCP 和用户坐标系

        确认机器人的工具 TCP,可以用四点法把 TCP 点做到吸盘/夹爪中点,也可以不做,默认 在法兰中心,在做旋转中心标定时用这个工具 TCP。

确认机器人的坐标系,可以利用基座坐标系,也可以先新建用户坐标系,然后标定时使用 对应的用户坐标系

    2.3  9 点标定方向+3 点标定旋转 TCP 点

        本案例采用 9 点标定视觉方向与机器人 X/Y 方向一致,每次移动 5mm。采用 3 点标定视觉 旋转中心与机器人工具 TCP 相同。流程如图1:

                                                                        
                                                                                                    图1 标定流程

    机器人程序如图 2(程序名:biaoding.task)。机器人每到达一个点会停下来并弹窗提示,待操作员才视觉上记录后,然后在示教器上点击继续,机器人自动走下一个点。 

                                                    
                                                                                                        图2  标定程序

3. 机器人程序运行

    3.1 机器人动作流程

        机器人搭配视觉的动作流程如下图 3:

                                                                                      
                                                                                            图3  机器人搭配视觉动作流程

    3.2 机器人收相对坐标

        机器人收到视觉发送过来的坐标是相对值,也就是相对取料基准位的偏移,机器人在取料 基准位上加上视觉发过来的偏移量(dx,dy,rz),到达纠偏后的取料位。程序如下图 4。

                                                            
                                                                                                    图4  视觉相对偏移 任务

        网口通讯脚本程序 socket_tcpip.script 如下图 5:

ip="192.168.1.100" 
port=3000 
ret=socket_open(ip,port)#向服务器发起通讯 
while(ret==False): 
 ret=socket_open(ip,port)#当未通讯上时,每隔 1s 发起通讯 
 sleep(1) 
 textmsg(ret) 
textmsg("conncet successful")#打印通讯成功 

                        图5  socket_tcpip.script

        接收视觉坐标脚本程序 receive.script 如下图 6。视觉发过来的数据按照:”OK,1,2,3#” 格式,第 1 位数代表标志符,拍照成功发送”OK”,拍照失败发送”NG”;第 2,3,4 位数分别是 X,Y,RZ 方向的偏移,数据用”,”隔开,末尾用”#”作为结束符。

socket_send_string("Hello World")#向服务器发送数据 
textmsg("send data successful")#打印发送成功 
global recv 
global data 
recv=socket_read_string(suffix="#",timeout=0)#接收字符串数据,等待时间无现长 
textmsg("receive data=",recv)#打印接收到的数据 
data=recv.split(",")#字符串用逗号分割并赋值给 data 
textmsg(data)#打印分割后的字符串数组 
if (data[0]=="OK"):#收到"OK"的标志位才给偏移数据赋值 
 dx=to_num(data[1])#字符串转浮点型数据 
 dy=to_num(data[2]) 
 rz=to_num(data[3]) 
else: 
 popup(s="请检查产品是否超出视野范围",title="拍照 NG",blocking=True)#拍照 NG,弹窗提示 
end 

                       图6  receive.script

    3.3 机器人收绝对坐标

        机器人收到视觉发送过来的坐标是绝对值,也就是机器人的目标点坐标,机器人直接走收 到的坐标,到达纠偏后的取料位。程序如下图 7。

                                                    
                                                                                               图7  视觉绝对坐标 任务

        机器人接收数据脚本如下图 8。格式定义如图 6 脚本程序。

socket_send_string("Hello World")#向服务器发送数据 
textmsg("send data successful")#打印发送成功 
#global recv 
#global data 
recv=socket_read_string(suffix="#",timeout=0)#接收字符串数据,等待时间无现长 
textmsg("receive data=",recv)#打印接收到的数据 
data=recv.split(",")#字符串用逗号分割并赋值给 data 
if (data[0]=="OK"):#收到"OK"的标志位才给偏移数据赋值 
 dx=to_num(data[1])#字符串转浮点型数据 
 dy=to_num(data[2]) 
 dz=to_num(data[3]) 
 rx=to_num(data[4]) 
 ry=to_num(data[5]) 
 rz=to_num(data[6]) 
else: 
 popup(s="请检查产品是否超出视野范围",title="拍照 NG",blocking=True)#拍照 NG,弹窗提示 
end

                          图8  receive2.script

点击显示全文
赞同1
发表评论
分享

手机扫码分享
0
977
收藏
举报
收起
登录
  • 密码登录
  • 验证码登录
还没有账号,立即注册
还没有账号,立即注册
注册
已有账号,立即登录
选择发帖板块
举报
请选择举报理由
举报
举报说明