ABB机器人与视觉通信发送数据

导读:在工作中,通常会使用机器人去实现物料的抓取,而物料的颜色、形状、大小、角度等参数,机器人无法去实现,而视觉相机有可以实现这一功能。但是双方交换数据时,需要编程人员去规约或者提取。今天就和大家聊聊ABB机器人与视觉的通信及数据处理。

本次机器人与视觉这边,我们采用的是Socket通信。这种协议我们在这不作介绍,主要的重点是给大家介绍双方数据的提取和转换过程。

如图1,机器人欲抓起物料,但是物料的角度只能通过视觉相机这边提供给机器人(2D相机,可以识别平面旋转角度)。

图1

在编程之前,我们要掌握机器人去准确抓取一个物料的条件有两个:1.物料的位置值 2.物料的旋转角度值。所以,需要视觉这边提供3个数据,分别是:物料的X和Y位置数据和Z旋转角度值。但是ABB机器人工具的旋转姿态由q1/q2/q3/q4四个参数(四元素)决定,而视觉相机发过来的值是旋转角度值(欧拉角),所以要通过欧拉角转换为四元素机器人才能调整适合的工具姿态去抓取物料。

MODULE Module1

VAR num cam_x:=0;定义视觉发送X位置数据值

VAR num cam_y:=0; 定义视觉发送y位置数据值

VAR num cam_angle:=0; 定义视觉发送旋转角度数据值

CONST robtarget p10:=[[-1.289131E-05,3.351449E-06,237.1972],[0.01633704,-3.806521E-08,0.9998665,-3.595199E-08],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

定义安全位置点数据

Var robtarget 定义抓取位置点数据

ppick:=[[24.6736,49.99907,19.99434],[0.01633701,-5.075877E-09,0.9998665,-2.882863E-08],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

VAR socketdev Socket1;定义套接字数据

VAR string received_string;定义字符串数据

VAR num startBit1; 定义num数据startBit1

VAR num startBit2; 定义num数据startBit2

VAR num startBit3; 定义num数据startBit3

VAR num startBit4; 定义num数据startBit4

VAR num startBit5; 定义num数据startBit5

VAR num EndBit1; 定义num数据

VAR num EndBit2; 定义num数据

VAR num EndBit3; 定义num数据

VAR num LenBit1; 定义num数据

VAR num LenBit2; 定义num数据

VAR num LenBit3; 定义num数据

VAR num Lenstring; 定义num数据

VAR string XData:=""; 定义num数据

VAR string yData:=""; 定义num数据

VAR string AngleData:=""; 定义num数据

PERS num X; 定义num数据

PERS num Y; 定义num数据

PERS num Angle; 定义num数据

以下是ABB机器人程序编写:(视觉发送给机器人的数据以字符串的格式发送并分号进行隔开,例如“12.3;33.5;24.2”

PROC main()

SocketCreate Socket1; 创建套接字

SocketConnect Socket1, "127.0.0.1", 3000; 连接套接字

WHILE TRUE DO

SocketSend Socket1\Str:="hello server";发送数据给视觉相机

SocketReceive Socket1\Str:=received_string; 接收数据到机器人

TPWrite "server wrote-"+received_string; 写屏

DecodeData; 数据解析程序

cal_data;  欧拉角四元素转换程序

r_move;   抓取程序

ENDWHILE

ERROR        出错将关闭通信

SocketClose Socket1;

ENDPROC

PROC DecodeData()数据转换程序

VAR string Strread:="";  定义字符串数据

VAR bool datatrue:=FALSE;定义布尔数据

Strread:=received_string; !接收来的数据存入Strread

Lenstring:=StrLen(Strread); !判断接收来的数据长度

startBit1:=1;

EndBit1:=StrFind(Strread,startBit1,";"); 查找第一个分号

LenBit1:=EndBit1-startBit1; 确定第一个数据的长度

startBit2:=EndBit1+1;

EndBit2:=StrFind(Strread,startBit2,";");查找第二个分号

LenBit2:=EndBit2-startBit2;确定第二个数据的长度

startBit3:=EndBit2+1; 查找第三个分号

EndBit3:=StrFind(Strread,startBit3,";"); 确定第三个数据的长度

LenBit3:=EndBit3-startBit3;

XData:=StrPart(Strread,startBit1,LenBit1); 截取第一个数据

yData:=StrPart(Strread,startBit2,LenBit2); 截取第二个数据

AngleData:=StrPart(Strread,startBit3,LenBit3); 截取第三个数据

datatrue:=StrToVal(XData,cam_x); 字符串转换为num

datatrue:=StrToVal(yData,cam_y); 字符串转换为num

datatrue:=StrToVal(AngleData,cam_angle); 字符串转换为num

ENDPROC

PROC cal_data()欧拉角四元素转换程序

VAR num rx;定义num数据

VAR num ry; 定义num数据

VAR num rz; 定义num数据

ppick.trans.z:=0; 2D视觉平面旋转,Z为0

rx:=EulerZYX(\X,ppick.rot); 四元素转换为欧拉角X

ry:=EulerZYX(\Y,ppick.rot); 四元素转换为欧拉角Y

rz:=EulerZYX(\z,ppick.rot); 四元素转换为欧拉角Z

ppick.trans.x:=cam_x; 相机X位置值给到抓取点X

ppick.trans.y:=cam_y; 相机Y位置值给到抓取点Y

ppick.rot:=OrientZYX(cam_angle,ry,rx); 欧拉角转换为四元素

ENDPROC

PROC r_move()抓取程序

MoveL Offs(ppick,0,0,30),v1000,z50,xipan\WObj:=Workobject_2;

移动到抓取点上方

MoveL ppick,v1000,fine,xipan\WObj:=Workobject_2; 移动到抓取点

WaitTime 0.5;等待0.5秒

MoveL Offs(ppick,0,0,30),v1000,fine,xipan\WObj:=Workobject_2; 移动到抓取点上方

MoveL p10,v1000,fine,xipan\WObj:=Workobject_2;回到安全点

ENDPROC

ENDMODULE

结束语:ABB机器人与视觉相机的通信并且实现抓取,主要掌握以下几个知识点即可解决:

1.视觉会发送哪几个数据给机器人,以什么格式进行发送?

2.视觉发送数据给了机器人,如何提取出来?

3.视觉发送的数据欧拉角如何转换成机器人的工具旋转角度

没有视觉的话我们可以采用调试软件进行测试。如图2

来源:PLC发烧友,作者:眭相建,未经授权不得转载

更多知识可关注公众号“PLC发烧友”

(0)

相关推荐

  • ABB机器人字符串拆分转换数值指令

    ABB机器人 字符串拆分转换数值指令 说明:ABB机器人在通讯时候,会用到字符串,发送字符串给其他设备或者其他设备发送字符串给ABB机器人,这时候ABB机器人需要对字符串进行处理.一般ABB机器人处理 ...

  • ABB机器人Socket与视觉通讯

    转载请先后台留言,大家一起支持原创,推动机器人使用和发展 本公众号对各类ABB机器人应用,仿真,毕业设计提供技术支持,详细后台留言 机器人与相机视觉通讯,主要包括: 1. socket通讯建立及收发数 ...

  • ABB机器人 | 数据备份与恢复

    智能方在线学院&助力提高您的技术能力您身边的机器人服务专家定期对ABB机器人的数据进行备份,是保证ABB机器人正常工作的良好习惯.ABB机器人数据备份的对象是所有正在系统内存运行的RAPID程 ...

  • 【干货】ABB机器人编程技巧8:ABB机器人数据存储类型区别

    CONST VAR PERS 区别 1)ABB机器人任何数据都有存储类型,分为常量CONST,变量VAR和可变量PERS 2)常量CONST,即程序内不能赋值 3)变量和可变量程序都能赋值,区别如下 ...

  • ABB机器人使用profinet传输real类型数据的问题

    ABB机器人使用profinet传输real类型数据的问题 profinet即为实时数据通信,以IO的形式对应二进制数. ABB机器人编程中real数据为4byte,即对应32个IO. ABB机器人使 ...

  • ABB机器人一键回HOME

    PLC电气自动化 PLC实用干货.编程技巧,一触即达! 公众号 99%工控人会关注的公众号▲ 一键回HOME 前言:今天给大家分享的是ABB机器人一键回 HOME 方法,为什么要一键回HOME,当机器 ...

  • ABB 机器人 | 输送链跟踪配置和编程步骤

    ABB&ROBOT使用输送链跟踪功能的配置和编程步骤输送链跟踪硬件安装DSQC377A(B)模块安装编码器安装触发开关安装机器人校准探针??安装输送线上的校准针??连接编码器线缆到DSQC37 ...

  • 关于ABB机器人24种故障与处理方法

    描述 1.机器人报警"20252" 电机温度高DRV1故障处理 处理方式:检查电机是否过热,如电机温度正常则检查连接电缆是否正常(可能是控制柜处航空插头没插好λ如果査不出问题,又着 ...

  • 支持鸿蒙系统又多一理由,爱尔兰研究员:安卓手机向谷歌发送数据

    中国通讯设备制造商华为为何要坚定地研发鸿蒙系统现在我们支持鸿蒙系统又多一个理由,爱尔兰的研究员表示:安卓手机会向谷歌发送数据,而且还不少! 中国的华为公司目前正在集中其精英力量努力研发中国产的鸿蒙系统 ...

  • ABB机器人搬运项目程序的分析,这么详细,看完就会了!

    PLC发烧友 478篇原创内容 公众号 随着自动化产线的升级,工业机器人在生产线上使用越来越频繁.当然,工业机器人在各行业中都扮演者不同的角色,机器人可以胜任搬运.码垛.涂胶.焊接.切割等不同的工作. ...

  • 零基础入门ABB机器人,仅需掌握6大编程技巧~

    工业机器人的发展以及机器人智能化水平的提高,机器人的应用范围还在不断地扩大.那么机器人能干啥?自动识别.在线生成包含工艺参数的轨迹.自动作业. 只有你想不到没有他们做不到!今天小编就带大家见识下,AB ...