概述

近几年来机器视觉技术在工业生产中得到了广泛的应用,在工业机器人应用领域中,机器视觉被广泛应用于工件的特征检测,以及机器人的位姿引导。市面上大部分的机器人厂商也都在机器人控制器中开放了视觉集成接口,以便于机器人能够直接与智能相机进行数据交互。除了现实的机器视觉应用以外,在机器人仿真过程中也需要对机器视觉进行仿真。本期,就来为大家介绍一下,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 Module1PERS 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_GunWObj:=wobj0;!机器人Home点WaitTime 1;!等待1sPulseDOPLength:=0.2,do1;!向机器视觉引导Smart组件发送200ms的控制脉冲信号,启动视觉检测功能WaitDI di1,1;!等待视觉检测完成反馈信号WaitTime 2;!等待2sWorkobject_1.oframe.trans:=PosXY;!更新工件坐标系Workobject_1的位置数据Workobject_1.oframe.rot:=OrientRz;!更新工件坐标系Workobject_1的姿态数据MoveJ Target_20,v500,fine,AW_GunWObj:=Workobject_1;!机器人工作点程序MoveL Target_30,v500,fine,AW_GunWObj:=Workobject_1;MoveL Target_40,v500,fine,AW_GunWObj:=Workobject_1;MoveL Target_50,v500,fine,AW_GunWObj:=Workobject_1;MoveL Target_60,v500,fine,AW_GunWObj:=Workobject_1;MoveJ Target_20,v500,fine,AW_GunWObj:=Workobject_1;WaitTime 0.5;!等待0.5sMoveJ Target_10,v500,fine,AW_GunWObj:=wobj0;ENDPROC
ENDMODULE

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

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

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

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

The End


上一篇:

IndRobSim:Robotstudio软件:基于Random组件的工件位置随机生成​zhuanlan.zhihu.com

abb机器人离线编程软件叫做_Robotstudio软件:ABB机器人机器视觉位姿引导虚拟仿真...相关推荐

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

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 概述 近几年来机器视觉技术在工业生产中得到了广泛的应用,在工业机器人应用领域中,机器视觉被广泛应用于工件的 ...

  2. 机器人离线编程画圆误差解决方案_机器人离线编程的误差来源分析与消除办法...

    随着机器人应用领域越来越广,传统的示教编程这种编程手段有些场合变得效率非常低下,于是离线编程应运而生,并且应用越来越普及.但初用离线编程的朋友,总会被最后生成轨迹的误差所困惑,而导致这些误差的原因,包 ...

  3. 机器人离线编程画圆误差解决方案_机器人离线编程技术浅析及未来展望

    龙源期刊网 http://www.qikan.com.cn 机器人离线编程技术浅析及未来展望 作者:刘梓航 来源:<中国校外教育 ( 下旬 ) > 2018 年第 01 期 [摘要]编程技 ...

  4. 埃夫特机器人离线编程软件_埃夫特ER-Factory数字化工厂软件重磅升级

    ER_RobotStudio正式升级为ER_Factory,支撑更多机器人品牌离线编程.出产工艺进程仿真.物流仿真(AGV.输送体系.Buffer等).CAM功用(喷涂.切开.打磨等).外部传感器功用 ...

  5. Motoman机器人离线编程——Motocom32开发简介

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

  6. Motoman机器人离线编程——MotocomES介绍

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

  7. Motoman机器人离线编程——Motocom32库函数的使用与封装

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

  8. Motoman机器人离线编程——Visio Studio环境配置

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

  9. Motoman机器人离线编程——Motocom32参考文献及注意事项

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

  10. abb机器人离线编程软件叫做_工业机器人离线编程(ABB)1-2 常用离线编程软件介绍.pptx...

    1-2 常用离线编程软件介绍;一.常用离线编程软件;1. ABB RobotStudio离线编程软件介绍RobotStudio 是一款 PC 应用程序,用于机器人单元的建模.离线创建和仿真.如图1-1 ...

最新文章

  1. ecshop订单-》待付款,待发货,待收货,收货确认
  2. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
  3. 获取字符串内双引号中的所有内容
  4. arcserver连接oracle,ArcSDE的二种连接方式(应用服务器连接,直接连接)
  5. 顺利通过EMC实验(13)
  6. uboot研读笔记 | 14 - uboot启动流程分析(2016.03版本)
  7. 学习OpenCV在SFM系统的使用
  8. ubuntu-22.04.1磁盘分区和挂载
  9. 我,马斯克:地球首富却要葬在火星
  10. 神州租车还有这些新玩法?打造了行业新标杆
  11. Virtualbox如何配置Linux的网络连接
  12. hadoop集群部署超级详细
  13. 13 Python总结之估值
  14. 理论计算机科学逻辑博导,清华大学计算机科学与技术系博士生导师简介:应明生...
  15. 【Lintcode】562. Backpack IV
  16. 南京热门美食网html,江苏南京十大特色美食排名榜单揭晓
  17. python中ra_consumers-在Python中并行化处理的一种简单、灵活的方法。-Andrew Rabert Documentation Example...
  18. C6678学习-EDMA
  19. 两个字符串拼接(不用strcat函数)
  20. 死亡金属重型混音教程视频|Feared 2013年的混音作品|混音母带处理 By JeromeAlanChan

热门文章

  1. Atitit.创业之uke团队规划策划 v9
  2. Atitti 数据库事务处理 attilax总结
  3. Atitit.在线充值功能的设计
  4. paip.输入法编程---词库多意义条目分割 python实现.
  5. paip.python错误解决6
  6. paip.提升用户体验---防止windows假死之CPU 100%解决
  7. paip.提升效率----几款任务栏软件vc59
  8. paip.JAVA的几大优点与缺点相比C#.NET.txt
  9. WSL:vi 的使用、只读下的修改操作
  10. (转)最近100年全球最顶尖公司的共性