0 引言
在某制药厂项目中,机器人码垛系统采用的是ABB码垛机器人,具有多机器人,多工位,多箱型,多跺型的特点,为了方便产品的输送,储存,销售和管理,该机器人码垛不但具有操作简单,运行稳定,可视性强,维修方便,而且还具有增加箱型简单等优点。它通过与PLC和触摸屏的连接,能够实现信息实时追踪,信息传递,远程诊断和方便WMS,EMS管理。下面结合实例,综合分析码垛的算法,比较其优缺点,分析码垛的应用范围,掌握编程的思路,这样可以在安装调试阶段减少大量人力物力,降低劳动强度,提高生产效率,节约成本。
1 包装码垛工艺流程简介
某制药厂项目是纸箱码垛,采用3台ABB公司IRB460机器人,其中每台机器人完成4工位码垛任务,即2条产品拾取工位和4个产品码垛工位,机器人码垛布置图如图1所示。
其中,L0为左侧拾取工位,对应码垛放置工位L11和L12;R0为右侧拾取工位,对应右侧码垛放置工位R11和R12。
2 影响机器人码垛放置顺序的因素
在实际应用中,机器人在码垛过程中,影响机器人码垛放置顺序的主要因素有:
图1 机器人码垛布置图
1)机器人卡具的影响。常用的机器人卡具主要有钩爪式,真空吸盘式和夹抱式等。若采用钩爪式卡具,在放置时,要考虑钩爪的位置,否则有可能会压箱子,损坏设备;
2)箱子尺寸的影响。箱子的尺寸应在机器人卡具的工作变径范围内,若箱子的长度小于机器人卡具的长度时,箱子被夹在卡具内部,在放置时应考虑卡具对已码跺型的影响。
3)条码标签的影响。为便于操作,客户要求标签朝外,方便手持扫码拼盘。
最后,综合工艺流程和现场因素,确定了左右放置工位的奇数层偶数层的“32跺型”码垛顺序,如图2所示。其他跺型不在赘述。
图2 码垛工位顺序图
在图2中,(a)为左侧工位码垛奇数层顺序,(b)为左侧工位码垛偶数层顺序,(c)为右侧工位码垛奇数层顺序,(d)为右侧工位码垛偶数层顺序。
3 参考点选择
3.1 拾取参考点设定
拾取参考点选择如图3所示。由于拾取工位箱子定位的对称性,所以,觉得码放位置码放的对称性,使左右放置工位位置的不一致,决定拾取参考点选择的对称性,所以引入码垛算法比例系数K。在L0拾取工位,箱子靠右侧定位,K=1;在R0拾取工位,箱子靠左侧工位,K=-1。
图3 拾取参考点选择
3.2 放置基准点选择
3.2.1 基于放置位置的码垛算法放置基准点选择
基于放置位置的码垛算法,就是要求在工具坐标系中,要求放置基准点pbase0与放置位置点1重合,放置基准点pbase90与放置位置3重合。
L11号栈板的放置基准位置pbase0,如图4(a)中1位置,此栈板的上其他位置若姿态与此基准相同,则可以通过偏移算法得出。示教时使用工具坐标系tGripper,工件坐标系Wobj0。
L13号栈板的放置基准位置pbase90,如图4(c)中3位置,此栈板的上其他位置若姿态与此基准相同,则可以通过偏移算法得出。示教时使用工具坐标系tGripper,工件坐标系Wobj0。
右侧栈板与此类似,不再赘述。
3.2.2 基于栈板位置的码垛算法放置基准点选择
基于栈板位置的码垛算法,就是要求在工具坐标系中,要求放置基准点pbase0,pbase90, pbase180,pbase270栈板的角位置重合。
L11号栈板的放置基准位置pbase0,如图4(b)中1位置,此栈板的上其他位置若姿态与此基准相同,则可以通过偏移算法得出。示教时使用工具坐标系tGripper,工件坐标系Wobj0。
L13号栈板的放置基准位置pbase90,如图4(d)中3位置,此栈板的上其他位置若姿态与此基准相同,则可以通过偏移算法得出。示教时使用工具坐标系tGripper,工件坐标系Wobj0。
右侧栈板与此类似,不再赘述。
图4 放置基准位置图
4 常用码垛算法
4.1 基于放置位置的码垛算法
以左侧工位L11为例说明,放置位置的顺序如图2(a)和图2(b)所示。
首先,位置1和位置3分别是需要示教位置的放置基准点pbase0和pbase90。
其中,位置1与创建好的放置基准点pbase0重合,则直接将pbase0各项数据赋值给当前的放置目标点;相对于放置基准点pbase0,位置2只是在X正方向偏移了一个产品长度,只需要在pbase0目标点X数据上面加上一个产品长度即可;位置3则和pbase90重合,以此类推,则可计算出剩余的全部码放位置。
在码垛应用过程中,通常奇数层跺型一致,偶数层跺型一致,这样只要算出第一层和等二层,三层及其以上奇数层位置是可以直接复制第一层各项X,Y轴位置,然后在Z轴正方向上面叠加相应产品码垛高度(通常为箱子高度整数倍)即可完成。四层及其以上偶数层,则直接复制第二层各项X,Y轴位置,然后,在Z轴的基础正方向上叠加相应产品的码垛高度即可完成。这样即可完成整个跺型的码放位置,如表1所示。
其次,为方便对各箱型码放位置进行调整,利用Offs功能在已经计算好的码放位置基础上,沿X,Y,Z再进行微调,其中调用的是已创建好的三维数组Compensation,例如码放不同类型箱型,nBoxType不同,第一个位置时,则拍Target:=Offs(pTarget,Compensation{nBoxType,1}, Compensation{nBoxType,2},Compensation{nBoxType,3})。
表1 码垛算法1放置目标点位置计算表
注: L表示箱子的长度;W表示箱子的宽度;H表示箱子的高度;Cx表示箱与箱之间在X轴方向的间隙;Cy表示箱与箱之间在Y轴方向的间隙。nLayer表示层高,计算公式nLayer:= (nCount-1) div 10;其中nCount表示当前已码垛箱子计数。
4.2 基于栈板位置的码垛算法
以左侧工位L11为例说明,放置位置的顺序如图2(a)和图2(b)所示。
首先,位置1和位置3分别是需要示教位置的放置基准点pbase0和pbase90,但是,考虑到栈板尺寸的影响,要求放置基准点的参考点与栈板的顶点重合,箱子的边缘与栈板的边缘平行。
表2 码垛算法2放置点目标位置计算表
注释:TL,表示栈板长度;TW表示栈板宽度。
其中,位置1的放置目标点,其姿态与放置基准点即是pbase0一致,位置也即是在其X,Y,两个方向偏移了箱子边缘与栈板边缘之间的距离。
表3 码垛算法总结
X轴方向偏移距离为:
Delta X:=0.5*(TL-2*nBoxSize{nBoxType,1}-Compensation{nBoxType,1})
Y轴方向偏移距离为:
Delta Y:=0.5*(TW-nBoxSize{nBoxType,1}-nBoxSize{nBoxType,2}-Compensation {nBoxType,2});
位置2的放置目标点,其姿态与放置基准点pbase0一致,位置2是在位置1的基础上在X轴方向便移了箱子长度的距离,Y轴与位置1一致。
X轴方向偏移距离为:
Delta X :=0.5*(TL-2*nBoxSize{nBoxType,1}-Compensation{nBoxType,1})+ nBoxSize{nBoxType,1}+C ompensation{nBoxType,1}
位置3的放置目标点,其姿态与放置基准点即是pbase90一致,位置也即是在其X,Y两个方向偏移了一定的距离。即X轴方向偏移距离为:箱子上长边边缘与栈板上宽边边缘之间的距离。
Delta X :=0.5*(TL-2*nBoxSize{nBoxType,1}-Compensation{nBoxType,1})
Y轴方向偏移距离为:箱子右短边边缘与栈板右长边边缘之间的距离。
Delta Y :=0.5*(TW-nBoxSize{nBoxType,1}-nBoxSize{nBoxType,2}-Compensation {nBoxType,2}) +nBoxSize{nBoxType,2}+Compensation{nBoxType,2};
以此类推,则可计算出剩余的全部码放位置,如表2所示。
5 结束语
基于放置位置的码垛算法,虽然计算简单,易于理解,但是适用品种单一,增加跺形不便,后期工作量比较大,影响效率;而基于栈板位置的码垛算法,程序算法复杂,前期编程工作量比较大,但是适用于多箱型的码垛,增加跺形方便。因此可以根据项目实际应用的要求,针对具体作业方案,选择具体算法。