Robotstudio软件:ABB机器人机器视觉位姿引导虚拟仿真

本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注!

概述

近几年来机器视觉技术在工业生产中得到了广泛的应用,在工业机器人应用领域中,机器视觉被广泛应用于工件的特征检测,以及机器人的位姿引导。市面上大部分的机器人厂商也都在机器人控制器中开放了视觉集成接口,以便于机器人能够直接与智能相机进行数据交互。除了现实的机器视觉应用以外,在机器人仿真过程中也需要对机器视觉进行仿真。本期,就来为大家介绍一下,Robotstudio软件中使用机器视觉实现机器人位姿引导的操作方法。

机器人与视觉系统创建

在上一期创建的工件位置随机生成仿真环境中,添加一台IRB2600机器人,机器人工具与相机分别使用Robotstudio软件设备库中自带的焊枪AW_Gun_PSF_25、Integrated Vision camera Cam00X。同时使用“建模”菜单中的“圆锥体”建模工具创建一个圆锥体,并修改圆锥体透明度,作为相机光源。

将焊枪安装到机器人上,相机、相机光源分别放置到合适位置处,并创建机器人控制系统,机器人与视觉系统创建完成后,如下图所示。

机器人工件坐标系添加

对于机器人位置与姿态的视觉引导,大多数品牌的机器人都是基于工件坐标系实现的,ABB机器人也不例外,因此这里也需要添加一个工件坐标系。

“基本”菜单栏下,“其他”命令按钮的下拉菜单中,点击“创建工件坐标”,在弹出的创建工件坐标中,用户坐标框架下使用“取点创建框架”中的“三点”法,在工作台面中心点位置处,创建一个工件坐标系,坐标轴方向与大地坐标系保持一致。

工件坐标系创建完成后,使用“同步”功能将在仿真环境中创建的工件坐标系以及工具坐标系同步到机器人控制器中,同步时二者所属的模块均选择“Module1”。

机器人位置与姿态变量声明

在Robotstudio软件的“RAPID”菜单栏下,打开机器人程序模块Module1,然后在程序代码编辑窗口中声明机器人在X、Y轴上的位置偏移变量PosXY以及在Z轴上的旋转变量OrientRz,如下图所示。

完整变量声明代码如下。

    PERS pos PosXY:=[0,0,0];!声明机器人在X、Y轴上的位置偏移变量
    PERS orient OrientRz:=[0,0,0,0];!声明机器人在Z轴上的旋转变量

机器人视觉引导Smart组件创建

在上一期创建的工件位置随机生成仿真环境中的Smart组件中,添加2个RapidVariable子对象组件,其中一个用于向机器人发送视觉检测到的工件位置偏移数据、另一个用于向机器人发送视觉检测到的工件姿态偏移数据。

对两个RapidVariable子对象组件进行属性配置,以实现将视觉检测到的工件偏移数据分别发送到在机器人程序中声明的数据变量PosXY、OrientRz中。

对于相机的控制,这里使用2个LogicGate子对象组件、1个Show子对象组件、1个Hide子对象组件。

使用Show与Hide子对象组件对相机光源进行显示/隐藏操作,实现相机光源的闪烁仿真效果,二者属性参数配置如下。

用2个LogicGate子对象组件作为延时继电器,控制相机光源实现时间间隔为1s的闪烁,二者属性参数配置如下。

在Smart组件中删除之前创建的定时器子对象组件,添加1个脉冲信号输出子对象组件LogicSplit。然后再分别创建1个数字量输入信号di1与1个数字量输出信号do1,用来作为视觉引导Smart组件的控制与反馈信号。

对修改后的视觉引导Smart组件属性传递关系与信号控制逻辑分别进行设置,设置完成后,如下图所示。

机器人示教编程

在机器人控制器中分别创建1个数字量输入信号di1与1个数字量输出信号do1,可以是物理信号,也可以是虚拟信号,用于与Smart组件中的控制、反馈信号进行连接。

在Robotstudio软件的仿真环境中对机器人进行示教编程,机器人运行轨迹如下图所示,示教编程过程中除了Target10点以外,其他工作点全部使用创建的工件坐标系Workobject_1,工具全部使用焊枪工具。

将在仿真环境中示教完成的机器人程序同步到机器人控制器中,然后在“RAPID”菜单栏中将其打开,完整的程序代码如下图所示。

完整的程序代码如下所示。

MODULE Module1
	PERS tooldata AW_Gun:=[TRUE,[[119.5,0,352],[0.890213743,0,0.455543074,0]],[1,[0,0,100],[1,0,0,0],0,0,0]];
	TASK PERS wobjdata Workobject_1:=[FALSE,TRUE,"",[[935,0,830],[1,0,0,0]],[[-40.5511,-0.650765,0],[0.970459,0,0,0.241266]]];
    PERS pos PosXY:=[0,0,0];!声明机器人在X、Y轴上的位置偏移变量
    PERS orient OrientRz:=[0,0,0,0];!声明机器人在Z轴上的旋转变量
    CONST robtarget Target_10:=[[689.999962519,0,1034.999958384],[0.050592966,0,0.998719356,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_20:=[[-50.000031446,0,69.999996546],[0.050592981,0,0.998719355,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_30:=[[-50.000039757,-49.999997088,9.999981609],[0.050593041,-0.000000002,0.998719352,0],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_40:=[[49.999986089,-49.999997513,9.999975834],[0.050593071,-0.000000005,0.998719351,-0.000000003],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_50:=[[49.99998634,49.999993971,9.999986546],[0.050593101,-0.000000004,0.998719349,-0.000000008],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Target_60:=[[-50.000051431,49.999995421,9.999995587],[0.050593133,-0.000000004,0.998719347,-0.000000011],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    
    PROC main()
        MoveJ Target_10,v500,fine,AW_Gun\WObj:=wobj0;!机器人Home点
        WaitTime 1;!等待1s
        PulseDO\PLength:=0.2,do1;!向机器视觉引导Smart组件发送200ms的控制脉冲信号,启动视觉检测功能
        WaitDI di1,1;!等待视觉检测完成反馈信号
        WaitTime 2;!等待2s
        Workobject_1.oframe.trans:=PosXY;!更新工件坐标系Workobject_1的位置数据
        Workobject_1.oframe.rot:=OrientRz;!更新工件坐标系Workobject_1的姿态数据
        MoveJ Target_20,v500,fine,AW_Gun\WObj:=Workobject_1;!机器人工作点程序
        MoveL Target_30,v500,fine,AW_Gun\WObj:=Workobject_1;
        MoveL Target_40,v500,fine,AW_Gun\WObj:=Workobject_1;
        MoveL Target_50,v500,fine,AW_Gun\WObj:=Workobject_1;
        MoveL Target_60,v500,fine,AW_Gun\WObj:=Workobject_1;
        MoveJ Target_20,v500,fine,AW_Gun\WObj:=Workobject_1;
        WaitTime 0.5;!等待0.5s
        MoveJ Target_10,v500,fine,AW_Gun\WObj:=wobj0;
    ENDPROC
ENDMODULE

机器人视觉引导工作站仿真运行

在“工作站逻辑”中,将视觉引导Smart组件的控制、反馈信号与机器人控制器的数字量输出信号、数字量输入信号互相连接。

在“仿真设定”中,同时勾选“视觉引导”smart组件、机器人控制器,并将机器人“运行模式”设置为“连续”。

对视觉引导机器人仿真工作站进行仿真运行,可以看到工件在工作台面上随机改变位姿,相机对工件拍照检测后,机器人按照引导数据移动到工件位置,对工件进行加工操作,仿真效果如下图所示。

The End


上一篇:Robotstudio软件:基于Random组件的工件位置随机生成

  • 27
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IndRobSim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值