问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ABB创新项目——随机物料抓取设计

创作时间:
作者:
@小白创作中心

ABB创新项目——随机物料抓取设计

引用
CSDN
1.
https://blog.csdn.net/fantasyxyg/article/details/140515950

本文将详细介绍一个基于ABB工业机器人的随机物料抓取设计项目。该项目通过仿真软件实现瓶装物品的自动化码垛,不仅可以应用于普通瓶装产品,还能扩展到其他类型的瓶装产品,从而减少人力资源消耗。

一、项目设计思路

实现思路主要包括三个方面:

  1. 机器人夹具的夹紧与松开,以及工件安装与拆除
  2. 随机物料的产生,以及实时工件坐标位置转换
  3. 程序实现环形码垛,已知圆心位置坐标、半径大小,以及每个点和圆心所处夹角为45°(360除8个位置得出),利用三角函数关系算出每个点的坐标然后保存至数组中。

二、设计意义

此设计用于实现瓶装物品的另类装箱码垛,不仅可以运用于普通瓶装,也可以用于其他瓶装产品,实现自动化,减少人力资源消耗。利用RobotStudio仿真软件,在工作台上产生随机物料,用机器人夹取物料至环形码盘中。

三、设计步骤

1. 建立夹爪Smart组件

利用仿真软件中自带的爪手,导入至视图中。操作步骤:点击基本菜单,点击导入模型库,选择设备这一栏,拖动鼠标滚轮,选择ABB Smart Gripper 。

2. 设置Smart Gripper工具属性

右键选择工具Smart_Gripper_Servo,断开与库的连接,并且去掉可由传感器检测,点击选择修改机械装置,设置同步位置为25,原点位置为0。

3. 建立Smart组件

点击建模菜单,点击Smart组件,修改名字为夹爪,点击添加组件,选择本体中PoseMove组件,一共添加两个PoseMove组件,重命名为PoseMove夹紧和松开,再添加一个取反信号LogicGate组件属性Operator选项为NOT非。以及新建一个DI_Open信号。编辑一下组件属性,机械装置为上一步的Smart_Gripper_Servo工具,Pose为同步位置和远点位置。相关组件设计如下图所示,用线连接即可,不用再去设置属性和连接以及信号和连接。最后把上一步的工具拖入至Smart组件中,点击信号仿真,看是否有夹紧松开的动作。

4. 选择机器人并创建机器人系统

选择1200这款机器人,这里不详细介绍怎么创系统及建I\O板及信号,新建两个DI和两个DO信号,目的是控制随机物料的产生和夹爪夹取动作。接下来介绍把夹爪工具安装到机器人六轴法兰盘上,设置好夹爪的本地原点后,右键点击安装至机器人中即可。

5. 建立工作台和工件

建立工作台和工件,以及事先准备好的码盘导入库文件即可,相关素材关注并私聊给出。完善夹爪Smart组件安装与拆除功能,新添加组件Attacher和Detacher。以及新添加一个信号锁定组件LogicSRLatch,作用是线传感器感应到信号就 往外输出一个信号。相关组件连接设计看下图,连接好设计后测试一下夹爪的夹取工件动作是否正常。

6. 新建一个smart组件

把工件拖入至组件中,我们需要添加两个随机数组件Random,产生X和Y方向的偏移,需要一个产生位移组件Positioner以及向量与XY之间的数值VectorConverter,还需要一个设置Rapid中工件坐标的Pos值RapidVariable以及一个复制对象Source,并在Rapid程序中新建变量PERS pos PosXY:=[0,0,0];

7. 设置Random组件属性

2个Random组件属性,如下图设置,Min和Max最大最小值设置为0.1米也就是100mm,X和Y设置一样即可。

设置Source属性,如下图所示

设置RapidVariable属性,数据类型为pos,控制器为默认新建的控制器,任务为默认T_ROB1,模块也为默认Module1,值为新建变量值PosXY。如图所示:

设置Positioner属性,这里需要新建一个框架,在工作台中心,安装至工件,然后点击是。目的是已该框架为中心进行位置移动。

8. Smart组件设计连接

需要先建立一个启动信号触发随机物料产生,相关连接如下图所示:

9. 建立一个工件坐标

并安装至工件上,然后点击否。

10. 仿真设定及工作站逻辑设计

仿真设定选择连续,全部勾选。工作站逻辑设计如下图,要事先建立好IO板及IO输入输出信号,然后才能添加连接。目的是为了机器人程序控制。

测试工件是否随机产生,点击di输入信号,会产生如下图所示效果:

11. 创建原点,以及取料点和放料点

取料点需要带上工件坐标创建,其他的用默认wobj0就好。放料点需要创建在码盘的中心,也就是8个点的圆心上,半径这里测量为70mm,夹角为45度。点位示意如下图所示:

创建点位时每个点绕Y轴旋转180度。

最后记得同步到工作站中,选择为Module1中,包括工件坐标工具坐标。

12. 程序编写

MODULE Module1
PERS pos PosXY:=[-24.6073,35.4348,0];
PERS tooldata Servo:=[TRUE,[[0,0,114.2],[1,0,0,0]],[0.215,[8.7,12.3,49.2],[1,0,0,0],0.00021,0.00024,0.00009]];
TASK PERS wobjdata Workobject_1:=[FALSE,TRUE,"",[[500,-300,600],[1,0,0,0]],[[35.7578,-98.6632,0],[1,0,0,0]]];
CONST robtarget Target_20:=[[413.722,-2.479,690.887],[0,0,1,0],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR num nCount:=0;
VAR num nOffs_Rz:=1;
VAR num number_count;
PROC main()
Reset doOpen;
Reset do_Start;
nCount:=1;
nOffs_Rz:=1;
number_count:=1;
nOffs_Rz:=1;
!产生8个放料点位放到数组中保存
FOR index FROM 1 TO 8 DO
P_Place{nOffs_Rz}:=Target_30;
P_Place{nOffs_Rz}.trans.x:=P_Place{nOffs_Rz}.trans.x+70*cos(index*45);
P_Place{nOffs_Rz}.trans.y:=P_Place{nOffs_Rz}.trans.y+70*sin(index*45);
P_Place{nOffs_Rz}:=RelTool(P_Place{nOffs_Rz}, 0, 0, 0 \Rz:= index*45);
Incr nOffs_Rz;
ENDFOR
WHILE nCount<=8 DO
!原点
MoveJ Target_20,v1000,z100,Servo\WObj:=wobj0;
!产生随机工件
PulseDO\PLength:=0.5, do_Start;
WaitDI di_End,1;
!把偏移产生的数值转换到工件坐标中去
Workobject_1.oframe.trans:=PosXY;
WaitTime 0.5;
MoveJ offs(Target_50,0,0,100),v500,fine,Servo\WObj:=Workobject_1;
!取料
MoveJ Target_50,v1000,fine,Servo\WObj:=Workobject_1;
Set doOpen;
WaitTime 0.5;
MoveJ offs(Target_50,0,0,100),v1000,z100,Servo\WObj:=Workobject_1;
MoveJ Offs(P_Place{number_count},0,0,250),v1000,fine,Servo\WObj:=wobj0;
! 放料
MoveL P_Place{number_count},v500,fine,Servo\WObj:=wobj0;
Reset doOpen;
WaitDI diClose,0;
WaitTime 0.5;
MoveJ Offs(P_Place{number_count},0,0,100),v1000,z10,Servo\WObj:=wobj0;
Incr number_count;
Incr nCount;
ENDWHILE
MoveJ Target_20,v1000,fine,Servo\WObj:=wobj0;
Stop;
ENDPROC
ENDMODULE

13. 同步到工作站中,仿真运行

14. Robot1示教器编程

15. I/O口配置

注意输入输出口的分配。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号