在现代工业物流自动化领域中, 使用机器人来进行码垛装箱、拆垛搬运已经成为一种高效、快捷的方式[1,2,3,4]。机器人技术的应用[5,6]是企业间相互竞争和未来发展的重要因素, 托盘码垛技术已成为高效物流的关键技术之一。
对于托盘码垛技术, 国内外学者进行了大量研究[7,8,9], 但大多集中在单一尺寸物料方面, 而对于多尺寸物料的场景, 虽也有少部分研究[10,11,12], 但模型却较为简单, 使用条件有限。笔者结合实际物流自动化领域码垛应用的需要, 从新的角度对机器人混箱码垛问题展开探讨。针对多货品不同尺寸的混箱码垛场景, 基于各种箱子和托盘的尺寸, 设计了一种工业机器人码垛算法, 能分析出最佳的码垛序列。
混箱码垛指面对多个尺寸不同的箱子, 需要计算出如何选择最多的箱子码放在固定的托盘上, 并保证码垛整齐。码垛工作将由工业机器人来完成。
定义一个托盘, 其长度为L, 宽度为W, 需要在托盘上尽可能多地摆放各种不同尺寸的箱子。以某电商的托盘为例, 其长度固定为1 200 mm, 宽度为1 000mm, 托盘自身高150mm, 可摆放的最大高度为1 350mm。所有箱子的长宽尺寸在200mm×200mm至600mm×600mm的范围内, 高度不确定。
所有可抓取箱子的尺寸通过上位机传给机器人, 机器人根据所有箱子的尺寸, 完成垛型的规划, 并进行码垛。
为了实现将尽可能多的箱子搬运至托盘内, 在算法设计时, 需满足以下约束条件:
(1) 摆放至托盘上的箱子不得超出托盘的边界;
(2) 摆放至托盘上的箱子不得发生重叠;
(3) 摆放至托盘上的箱子应尽可能贴着托盘边存放;
(4) 摆放至托盘上的箱子, 其长边与短边应与托盘边界平行;
(5) 摆放至托盘上的箱子只有两种姿态, 箱子的长边与托盘的长边平行, 或箱子的长边与托盘的短边平行, 不得出现倾倒或倾斜摆放的现象;
(6) 底层箱子放满后, 上层箱子落位在底层箱子上, 依次类推, 最大高度不得超出限制。
定义所有可抓取的n个箱子的集合S={S1, S2, S3, …, Sn}, 对应编号集合I={1, 2, 3, …, n}。每个Si (i∈I, Si表示第i个箱子) 都具备自己的属性, 如长度Li、宽度Wi、高度Hi及原始位置的旋转角Ri, Ri=0或90°。为方便计算, 定义所有箱子的长度不小于宽度。计算完成之后, 每个Si又会产生新的属性, 如顺序Oi、坐标Pi、层级Qi等。
要建立针对混箱码垛的工业机器人码垛算法模型, 并寻求最优的垛型, 对底层码垛规则的定义尤为重要。现对托盘进行区域划分, 如图1所示, 划成若干个区域, 并建立坐标系。
定义托盘长边方向为X轴, 短边方向为Y轴。对于区域1, 选择集合{Si}中箱子占地面积最大的那一个, 如Sa (1≤a≤n, 且a∈Z) , 占用整块区域1, 且Sa长边放在X轴方向, 短边放在Y轴方向。
对于其它区域, 分别建立最优化模型, 并加上约束条件, 来求取最优解。例如, 对于区域2, 其长度为L-La, 其中L为托盘长度, La为落位在区域1中箱子Sa的长度。为使区域2的长边能摆放更多的箱子, 且保证区域2内的箱子尽可能整齐, 将所有箱子{Si}的长和宽合并成一个集合C={Ci, j}, 其中j=1或2, 且Ci, 1=Li, Ci, 2=Wi。此外, 定义已经完成落位的箱子的编号集合为D, 并定义尚未落位的箱子的编号集合为E, 且E=I-D。例如, 当5号箱子落位在区域1之后, D={5}, E={1, 2, 3, 4, 6, 7, …, n};再当3、7、10号箱子落位在区域2之后, D={3, 5, 7, 10}, E={1, 2, 4, 6, 8, 9, 11, 12, …, n};依次类推。随着箱子在各区域上的落位, 集合D会发生变化, 同时E也会发生变化, 因此集合D和集合E不是固定元素的集合。
根据托盘和所有箱子的尺寸, 可以判断沿区域2的X方向摆放的箱子数量范围为1~4个。区域2箱子的摆放可横放, 旋转角为0°, 也可竖放, 旋转角为90°, 所以计算能摆放在区域2内的箱子的总长时, 需同时考虑使用每个箱子的Li或Wi来计算, 并记录旋转角。
建立区域2最优化模型如下为:
式中:p=1, 2, 3, 4;j=1, 2;ik∈E;Ap为区域2的X方向摆放了p个箱子以后剩余的长度;Bp为区域2摆放了p个箱子之后, Y方向各箱子的最大尺寸差, 其值越小, 说明箱子摆放得越整齐;g为各箱子之间需要留出的间隙;Cik, j为从尚未落位的箱子集合E中取出一个箱子, 编号为ik, 且1≤k≤p, 当j=1时, Cik, j=Lik, Cik, 3-j=Wik, 当j=2时, Cik, j=Wik, Cik, 3-j=Lik。
按照如图2所示计算流程, 最终可输出一组最优化结果。值得注意的是, 每个箱子间需留有一定的间隙, 即参数g, g需要提前设定, 作为已知的参数。即使g发生1mm的变化, 计算出来的最优化结果也会发生改变。
当区域2内的箱子落位之后, 其区域尺寸就确定了, 记录各ik和j的值, 并更新集合D和E。下面进行区域3的规划, 在进行区域3规划之前, 需要先考虑区域6的情况。由于区域1~区域5内箱子摆放的不确定性, 在进行区域6规划的时候需考虑如图3所示的几种情形。
为避免箱子之间可能存在的干涉, 在进行区域3计算时需加上一个额外的限制条件, 即max{Cik, 3-j}≤La。如此, 可避免情形B和情形D的出现, 进行区域6规划的时候只需考虑情形A和情形C。
考虑边界条件, 区域3在Y方向的尺寸应小于W-Wa, 且根据箱子及托盘的尺寸, 可以判断区域3 Y方向摆放的箱子数量范围为1~3个。
建立区域3最优化模型为:
式中:p=1, 2, 3;j=1, 2;ik∈E。
计算出最优的ik和j之后, 区域3的箱子就可以落位了, 同时记录j的值以判断落位时是否需要旋转90°, 并更新集合D和E。
区域4、区域5的箱子也可采用相同的方法, 最后剩下托盘中心的区域6。
对于区域6, 首先计算其X方向和Y方向的尺寸, 然后选择两者中较大的那一个作为长边, 采用类似区域2的最优化算法, 最后针对剩下的空间, 如仍有大于150mm×150mm的空间, 则可以再次在没有落位的箱子中选取合适的箱子。
整个过程需要五六次最优化建模及求解。为缩短求解时间, 如有m个尺寸相同的箱子, 则在计算时只有4个箱子参与, 其它箱子不进入计算搜索范围。
通过求解, 将会使托盘区域内存放的箱子数量最多, 从而使托盘平面上箱子的占有率最大。在求解结果时, 当一个箱子落位后, 应在集合Si中删除。所得最优解不仅确定了托盘上箱子的数量, 而且确定了每个箱子在托盘上的存放位置。
以上是底层码垛的方法, 对于高层码垛, 由于底层箱子高度可能参差不齐, 因此无法将高层的箱子同时落位在底层多于1个箱子之上。对于高层码垛, 将底层箱子的上表面作为一个区域, 再使用最优化算法对高层箱子进行落位, 例如, 将区域1的箱子Sa作为底层箱子, 其上表面的尺寸将作为高层码垛优化算法的边界条件。
建立高层最优化模型为:
式中:p=1, 2;j=1, 2;ik∈E。
上述设计的算法, 不仅适用于混装的不同尺寸箱子, 而且适用于同尺寸箱子。对于全都是400mm×300mm×350 mm的箱子, 设置间隙为3 mm。使用所设计的算法, 可得到最优化结果如图4~图7所示。
按照区域1~区域6的算法, 数字1~8为箱子的落位顺序。三层箱子高度为1 050mm, 未超过总高1 200mm的限制条件。
在混箱码垛例子中, 共有50种可被码垛的不同尺寸的箱子, 见表1。
按照所述算法, 表1中码垛了27个箱子, 没有落位顺序的另外23个箱子没有办法存放在同一个托盘上。计算结果如图8~图11所示。所生成的混箱码垛序列和每个箱子的位置可以发送给机器人, 由机器人来完成码垛作业。
由于间隙的不同, 所产生的的结果也会不同, 间隙分别设置为2mm、3mm、4mm时所产生的计算结果依次如图12、图13、图14所示。
表1 混箱尺寸 下载原表
比较间隙为2mm、3mm、4mm时的优化计算结果, 可以发现虽然顺序的前几个箱子编号相同, 但放第六个箱子时, 编号已经不同了, 这说明间隙对优化的顺序影响是很大的。另外, 间隙2 mm的条件下, 只能放25个箱子, 但这并不能说明2mm间隙时箱子放得少这种结果不是最佳的。这是因为间隙小时, 需填充的各区域面积会变大, 所选择的箱子尺寸也就会大, 这样可能会减少能够选择的箱子数量。因此, 需要根据实际情况来决定间隙值, 而不是根据能摆放的总数来决定。
针对在仓储物流行业中出现的混箱码垛问题, 设计了一种工业机器人码垛算法。通过算法, 对托盘进行区域划分, 在每个区域中分别建立最优化模型, 计算出最优解, 最终生成整个托盘的码垛序列及码垛位置, 为工业机器人的实际码垛提供了指令, 实现了工业机器人码垛的智能化。
上一篇: 关于智能化仓储物流示范基地的六点思考
下一篇: 第三方仓储服务商如何破局