一种动态优化箱子码垛方法、信息数据处理终端与流程

文档序号:17497487发布日期:2019-04-23 21:44阅读:659来源:国知局
本发明属于物流
技术领域
:,尤其涉及一种动态优化箱子码垛方法、信息数据处理终端。
背景技术
::目前,业内常用的现有技术是这样的:在现代物流行业中,码垛耗费大量人力,人们一直尝试用机器人取代人进行这一繁重而又重复的工作。而现有的各种码垛方法,在面临实际的应用场景还有很大的局限。现有的码垛方法大多根据经典的三维装箱(3d—bp)问题发展而来,在经典的三维装箱问题中,需码垛箱子的数量和尺寸信息是完全掌握的,码放箱子的次序是可以任意调整的,对于箱子支撑性问题和整个垛的稳定性问题都没有做硬性约束。而实际的码垛场景中,需要码垛的箱子是连续不断的放到传送带上,机器人再从传动带上抓取货物,最后整齐的码放到托盘上,在码垛的过程中,必须确保箱子被支撑,并且保证整个垛的稳定性。也就是说,要让码垛方法能适应实际场景,就必须设计出能处理箱子信息不完全、箱子码垛次序不能调整、箱子支撑性和垛的稳定性得到保证的方法。综上所述,现有技术存在的问题是:(1)现有的物流技术中,箱子信息不完全、箱子码垛次序不能调整,而传统的箱子码垛算法需要掌握所有箱子的尺寸信息并能够任意调整箱子的码垛次序。这就导致了传统的码垛算法不能适应实际的码垛需求。而且由于传送带上的箱子尺寸的不确定性,让动态规划箱子的码放位置变得十分困难;(2)现有的物流技术中,箱子支撑性和垛的稳定性不能得到保证,在实际的使用中,如果不能确保支撑性和稳定性,机器人码垛将无法确保能持续进行下去。解决上述技术问题的难度和意义:在现有技术中,处理箱子信息不完全、箱子码放次序确定条件下的自动码垛方法还没有相关研究成果。而利用传统的3d-bp方法无法解决箱子信息不完全约束和箱子码垛次序固定约束。将箱子信息不完全约束和码垛次序固定约束加入到码垛方法中,就决定了不能使用传统的启发式方法,而是要根据实际情况设计出适应传动带上机器人自动抓取码垛的方法。满足上述约束的码垛算法能在实际的物流场景中进行自动码垛。技术实现要素:针对现有技术存在的问题,本发明提供了一种动态优化箱子码垛方法、信息数据处理终端。本发明是这样实现的,一种动态优化箱子码垛方法,具体包括以下步骤:步骤一:将托盘进行空间划分,对空隙信息表进行初始化;步骤二:将箱子信息按照顺序放入到动态箱子队列中,建立/更新空隙信息表gap_table;步骤三:寻找放置箱子的可用空隙:结合box尺寸,在gap_table表中找出所有能容纳该箱子的空隙;步骤四:对gap_usable中的空隙进行优先排序:对于即将放置的箱子box,尝试放置到gap_usable中的每个空隙中,每放入一个空隙,对放置后的效果进行评估,根据评估状况进行排序,给出优先顺序;步骤五:启发式动态规划箱子放置位置:将获取的传送带上的箱子信息按照机器人的可抓取顺序放到箱子动态队列中,机器人每次抓取(或者确定放弃抓取)的箱子是队列中的第一个箱子,每当机器人抓取箱子后,队列中删除第一个箱子信息,再从传送带上补充一个箱子进入队列最尾端;步骤六:换托盘:当托盘空间不能容纳任何箱子或当前的状况满足设定的换托盘条件时,发送指令,拉走当前托盘,换上新的空托盘。进一步,步骤一中,当前托盘的所有可承载箱子的空隙信息,由于空隙要确保能承载箱子,就需要满足以下条件:(1)该空隙范围中,所有体素都未被占用;(2)该空隙范围必须有支撑,即空隙下方必须有托盘支撑或者有其他箱子表面支撑,确保码垛方法的稳定性约束。进一步,步骤二中,在二维平面上找出所有独立的空隙信息的具体步骤为:(1)首先根据空间划分的体素被占用情况结合平面所在的z坐标的下方是否有支撑计算出二维矩阵matrix,如果未被占用且有支撑,则该则该体素在matrix中的值设为1,否则为0;(2)初始化:m表示矩阵列数,n表示矩阵行数,left[n]记录当前空隙x方向最小值,初始化全为零,right[n]记录当前空隙x方向最大值,初始化全为n,height[n]记录当前空隙y方向连续未被占用的体素个数,初始化全为零;cur_left=0,cur_right=n,记录当前left值和当前right值,i=0,表示当前行;(3)遍历matrix中每一行,根据每一行中matrix的值,计算出对应每个点的height、left、right值;(4)根据height、left、right值,计算出空隙的范围;(5)判断计算出的空隙是否被之前的空隙包含,或者包含空隙表中的任何一个空隙,进行相应的放弃和删除处理,如果不被包含且不包含已有空隙,则将计算出的空隙存入空隙表中;(6)重复步骤(3)至步骤(5),直至遍历完每一行。进一步,步骤三中,对于一个指定的箱子box,寻找可用空隙gap_usable的方法具体:(1)判断当前空隙的x维度是否大于box的x维度,如果是,进入步骤2,否则,进入步骤3;(2)判断当前空隙的y维度是否大于box的y维度,如果是,进入步骤5,否则进入步骤3;(3)判断当前空隙的x维度是否大于box的y维度,如果是,进入步骤4,否则放弃当前空隙,判断下一个空隙;(4)判断当前空隙的y维度是否大于box的x维度,如果是,进入步骤5,否则放弃当前空隙,判断下一个空隙;(5)判断当前空隙上所处的高度加上box的z维度,是否超过托盘的最大高度,如果是,放弃当前空隙,判断下一空隙,否则进入步骤6;(6)将当前空隙存入到gap_usable表中,作为可用空隙。进一步,步骤四中,对gap_usable中的空隙进行优先排序具体步骤为:(1)每次放入一个空隙,评估函数根据更新后的托盘空间情况进行评分;(2)然后再恢复到未放置box的状态,再将box放入到下一个空隙中进行评估,直至gap_usable中的每个空隙都进行了评估;(3)根据评估状况进行排序,并给出优先顺序。进一步,步骤四中,评估的依据是放置后对托盘承载能力的影响。进一步,步骤四中,评估函数具体为:(1)从gap_usable中取一个空隙,在此空隙中放入箱子后,更新空隙表;再判断录入的各种箱子类型是否能放入到更新后的空隙表,计算出能放入更新后的空隙表的箱子类型数目;用zero_num、one_num、two_num、…..all_num来记录能容纳箱子类型的数目,zero_num=1表示该空隙不能放入任何一种类型的箱子,three_num=1表示能容纳三种类型的箱子,all_num=1表示能容纳所有类型的箱子;(2)将每个空隙的评估值evaluate_value进行计算,然后将所有evaluate_value进行累加,各个变量前的系数是通过实验得出的经验值evaluate_value=6*all_num+4*four_num+3*three_num+2*two_num+one_num-3*zero_num;(3)通过评估函数,计算出箱子放入每个待选空隙的评估值evaluate_value,按照累加后的评估值evaluate_value的大小顺序,将空隙信息存入到gap_order中。进一步,步骤五中,动态队列中箱子的数目设置为5,规划的目标设置为:(1)尽可能多的让队列中的箱子放入到托盘中;(2)如果队列中所有的箱子都能够放入到托盘中,则比较各种方案中经过评估函数评估后最好的方案;(3)如果搜索的方案都不能放入所有箱子,则选取放入箱子数量最多的方案,并在这些方案中,选取经过评估函数评估后最好的方案。进一步,步骤五中,动态规划箱子放置位置具体步骤为:(1)取出队列中第一个箱子box,计算出该箱子对应的gap_usable,并按照第四个步骤中的方法对gap_usable进行排序;(2)按循序将box放入到gap_usable中的空隙中,对于每次放置,再依次取队列中的第2-5个箱子,放置箱子时,也评估对应的可用空隙,选取评估值最高的空隙放入;(3)遍历了所有gap_usable中的空隙并在随后放入动态箱子队列中的箱子后,在遍历的结果中,选取放入箱子最多的方案,并在这些方案中,最终选择最后一个箱子放入后评估值最高的方案。进一步,步骤六中,换托盘采用的换托盘策略为:(1)当放置一个箱子后,检查当前托盘的空隙情况,如果在剩余的空隙中,不能容纳下任何一个类型的箱子时,换托盘。(2)当前托盘能够容纳部分类型的箱子,但放弃抓取的箱子较多,且空间利用率达到一定条件时,表明当前的托盘已经码放了一定数量的箱子,而且放弃码放了部分箱子,可以换一个托盘进行码垛。进一步,步骤六中,如果当前抓取的箱子无法放入到托盘中,进行换托盘判断,换托盘的条件如下:(1)如果空间利用率超过0.7,且放弃抓取的箱子数量大于5;(2)如果空间利用率超过0.65,且放弃抓取的箱子数量大于6;(3)如果空间利用率超过0.6,且放弃抓取的箱子数量大于7;(4)放弃抓取的箱子数量大于8。综上所述,本发明的优点及积极效果为:本发明为了适应实际的码垛场景,在传统的三维装箱问题的基础上,加了三个必要的约束:箱子数量和尺寸信息不完全约束:传统的三维装箱问题中,掌握了所有箱子数量和尺寸。而实际的物流场景中,传送带上的箱子数量有限,我们能掌握的只有放到传送带上的箱子数目和尺寸,不可能完全掌握码放到托盘的所有箱子数目和尺寸。码垛次序约束:在传统的三维装箱问题中,箱子码放的次序是可以任意调整的。而现实场景中,机器人码放箱子的次序只能根据传送带上箱子的次序来确定,不能够调整箱子的码放次序。稳定性约束:每个放到托盘的箱子,都必须确保得到托盘或者其他箱子表面的支撑,包括完全支撑和部分支撑,完全支撑是指箱子底部与托盘或其他箱子顶部完全接触,部分支撑允许箱子底部存在部分悬空,但要确保在物理上能支撑起箱子,保证整个垛保持稳定,不垮塌,本发明中采用的是完全支撑。本发明在实现的过程中确保箱子数量和尺寸信息不完全约束、码垛次序约束和稳定性约束这三个约束,本发明采用完全支撑,保证整个垛保持稳定,不垮塌;本发明能适应实际的码垛场景,并且保证了良好的托盘空间利用率。对本发明的方法进行测试,根据物流企业的实际情况,将托盘尺寸设置为120cm*100cm,托盘限制高度180cm,箱子的尺寸的长、宽、高的范围从15cm至65cm,这些尺寸范围能基本覆盖50kg码垛机器人码垛货物的尺寸。取某物流企业的零食配送仓的真实箱子尺寸数据进行测试,将测试数据分为三批,分别是尺寸较小的一类箱子码垛、尺寸较大的一类箱子码垛、尺寸相差较大的箱子码垛。(1)尺寸较小的一类箱子码垛:箱子1(长:39,宽:29,高:17),箱子2(长:41,宽:32,高:21),箱子3(长:42,宽:32,高:21),箱子4(长:29,宽:27,高:22),箱子5(长:42,宽:31,高:20),箱子6(长:39,宽:28,高:13)。让计算机在6种箱子中进行随机挑选,确定好5000个箱子的尺寸和顺序。然后再安装本发明的方法进行模拟码垛。通过对5000个箱子进行模拟测试,平均的托盘利用率(即托盘上箱子的体积除以托盘的承载空间)为68.32%,计算每个箱子的放置位置以及空隙更新的时间在200ms~700ms之间,平均时间为437ms。(2)尺寸较大的一类箱子码垛:箱子1(长:52,宽:35,高:20),箱子2(长:47,宽:51,高:34),箱子3(长:52,宽:42,高:21),箱子4(长:66,宽:42,高:33)。让计算机在4种箱子中进行随机挑选,确定好5000个箱子的尺寸和顺序。然后再安装本发明方法进行模拟码垛。通过对5000个箱子进行模拟测试,平均的托盘利用率(即托盘上箱子的体积除以托盘的承载空间)为61.87%,计算每个箱子的放置位置以及空隙更新的时间在150ms~620ms之间,平均时间为385ms。(3)尺寸相差较大的一类箱子码垛:箱子1(长:39,宽:29,高:17),箱子2(长:41,宽:32,高:21),箱子3(长:42,宽:32,高:21),箱子4(长:29,宽:27,高:22),箱子5(长:42,宽:31,高:20),箱子6(长:39,宽:28,高:13),箱子7(长:52,宽:35,高:20),箱子8(长:47,宽:51,高:34),箱子9(长:52,宽:42,高:21),箱子10(长:66,宽:42,高:33)。让计算机在10种箱子中进行随机挑选,确定好5000个箱子的尺寸和顺序。然后再安装本发明方法进行模拟码垛。通过对5000个箱子进行模拟测试,平均的托盘利用率(即托盘上箱子的体积除以托盘的承载空间)为50.22%,计算每个箱子的放置位置以及空隙更新的时间在250ms~820ms之间,平均时间为461ms。实验结果表明,本发明方法对不同尺寸箱子的码垛,均可以获得满意的效果,如果对箱子类型按尺寸大小进行简单的分类,效果会更好。附图说明图1是本发明实施例提供的动态优化箱子码垛方法流程图。图2是本发明实施例提供的动态优化箱子码垛方法技术路线图。图3是本发明实施例提供的空隙信息表格示意图。图4是本发明实施例提供的建立空隙信息表的流程图。图5是本发明实施例提供的启发式动态规划箱子放置位置的程序流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。下面结合附图对本发明的应用原理进行进一步详细说明;如图1所示,本发明实施例提供的动态优化箱子码垛方法,具体包括以下步骤:s101:将托盘进行空间划分,对空隙信息表进行初始化;s102:将箱子信息按照顺序放入到动态箱子队列中,建立/更新空隙信息表gap_table;s103:寻找放置箱子的可用空隙:结合box尺寸,在gap_table表中找出所有能容纳该箱子的空隙;s104:对gap_usable中的空隙进行优先排序:对于即将放置的箱子box,尝试放置到gap_usable中的每个空隙中,每放入一个空隙,对放置后的效果进行评估,根据评估状况进行排序,给出优先顺序;s105:启发式动态规划箱子放置位置:将获取的传送带上的箱子信息按照机器人的可抓取顺序放到箱子动态队列中,机器人每次抓取(或者确定放弃抓取)的箱子是队列中的第一个箱子,每当机器人抓取箱子后,队列中删除第一个箱子信息,再从传送带上补充一个箱子进入队列最尾端;s106:换托盘:当托盘空间不能容纳任何箱子或当前的状况满足设定的换托盘条件时,发送指令,拉走当前托盘,换上新的空托盘。步骤s101中,本发明实施例提供的当前托盘的所有可承载箱子的空隙信息,由于空隙要确保能承载箱子,就需要满足以下条件:(1)该空隙范围中,所有体素都未被占用;(2)该空隙范围必须有支撑,即空隙下方必须有托盘支撑或者有其他箱子表面支撑,确保码垛方法的稳定性约束。步骤s102中,本发明实施例提供的在二维平面上找出所有独立的空隙信息的具体步骤为:(1)首先根据空间划分的体素被占用情况结合平面所在的z坐标的下方是否有支撑计算出二维矩阵matrix,如果未被占用且有支撑,则该则该体素在matrix中的值设为1,否则为0;(2)初始化:m表示矩阵列数,n表示矩阵行数,left[n]记录当前空隙x方向最小值,初始化全为零,right[n]记录当前空隙x方向最大值,初始化全为n,height[n]记录当前空隙y方向连续未被占用的体素个数,初始化全为零;cur_left=0,cur_right=n,记录当前left值和当前right值,i=0,表示当前行;(3)遍历matrix中每一行,根据每一行中matrix的值,计算出对应每个点的height、left、right值;(4)根据height、left、right值,计算出空隙的范围;(5)判断计算出的空隙是否被之前的空隙包含,或者包含空隙表中的任何一个空隙,进行相应的放弃和删除处理,如果不被包含且不包含已有空隙,则将计算出的空隙存入空隙表中;(6)重复步骤(3)至步骤(5),直至遍历完每一行。步骤s103中,本发明实施例提供的对于一个指定的箱子box,寻找可用空隙gap_usable的方法具体:(1)判断当前空隙的x维度是否大于box的x维度,如果是,进入步骤2,否则,进入步骤3;(2)判断当前空隙的y维度是否大于box的y维度,如果是,进入步骤5,否则进入步骤3;(3)判断当前空隙的x维度是否大于box的y维度,如果是,进入步骤4,否则放弃当前空隙,判断下一个空隙;(4)判断当前空隙的y维度是否大于box的x维度,如果是,进入步骤5,否则放弃当前空隙,判断下一个空隙;(5)判断当前空隙上所处的高度加上box的z维度,是否超过托盘的最大高度,如果是,放弃当前空隙,判断下一空隙,否则进入步骤6;(6)将当前空隙存入到gap_usable表中,作为可用空隙。步骤s104中,本发明实施例提供的对gap_usable中的空隙进行优先排序具体步骤为:(1)每次放入一个空隙,评估函数根据更新后的托盘空间情况进行评分;(2)然后再恢复到未放置box的状态,再将box放入到下一个空隙中进行评估,直至gap_usable中的每个空隙都进行了评估;(3)根据评估状况进行排序,并给出优先顺序。步骤s104中,本发明实施例提供的评估的依据是放置后对托盘承载能力的影响。步骤s104中,本发明实施例提供的评估函数具体为:(1)从gap_usable中取一个空隙,在此空隙中放入箱子后,更新空隙表;再判断录入的各种箱子类型是否能放入到更新后的空隙表,计算出能放入更新后的空隙表的箱子类型数目;用zero_num、one_num、two_num、…..all_num来记录能容纳箱子类型的数目,zero_num=1表示该空隙不能放入任何一种类型的箱子,three_num=1表示能容纳三种类型的箱子,all_num=1表示能容纳所有类型的箱子;(2)将评估值evaluate_value进行累加,各个变量前的系数是通过实验得出的经验值evaluate_value=6*all_num+4*four_num+3*three_num+2*two_num+one_num-3*zero_num;(3)通过评估函数,计算出箱子放入每个待选空隙的评估值,按照评估值的大小顺序,将空隙信息存入到gap_order中。步骤s105中,本发明实施例提供的动态队列中箱子的数目设置为5,规划的目标设置为:(1)尽可能多的让队列中的箱子放入到托盘中;(2)如果队列中所有的箱子都能够放入到托盘中,则比较各种方案中经过评估函数评估后最好的方案;(3)如果搜索的方案都不能放入所有箱子,则选取放入箱子数量最多的方案,并在这些方案中,选取经过评估函数评估后最好的方案。步骤s105中,本发明实施例提供的动态规划箱子放置位置具体步骤为:(1)取出队列中第一个箱子box,计算出该箱子对应的gap_usable,并按照第四个步骤中的方法对gap_usable进行排序;(2)按循序将box放入到gap_usable中的空隙中,对于每次放置,再依次取队列中的第2-5个箱子,放置箱子时,也评估对应的可用空隙,选取评估值最高的空隙放入;(3)遍历了所有gap_usable中的空隙并在随后放入动态箱子队列中的箱子后,在遍历的结果中,选取放入箱子最多的方案,并在这些方案中,最终选择最后一个箱子放入后评估值最高的方案。步骤s106中,本发明实施例提供的换托盘采用的换托盘策略为:(1)当放置一个箱子后,检查当前托盘的空隙情况,如果在剩余的空隙中,不能容纳下任何一个类型的箱子时,换托盘。(2)当前托盘能够容纳部分类型的箱子,但放弃抓取的箱子较多,且空间利用率达到一定条件时,表明当前的托盘已经码放了一定数量的箱子,而且放弃码放了部分箱子,可以换一个托盘进行码垛。步骤s106中,本发明实施例提供的如果当前抓取的箱子无法放入到托盘中,进行换托盘判断,换托盘的条件如下:(1)如果空间利用率超过0.7,且放弃抓取的箱子数量大于5;(2)如果空间利用率超过0.65,且放弃抓取的箱子数量大于6;(3)如果空间利用率超过0.6,且放弃抓取的箱子数量大于7;(4)放弃抓取的箱子数量大于8。如图2所示,本发明实施例提供的动态优化箱子码垛方法技术路线图。具体技术路线为:(1)将托盘进行空间划分,对空隙信息表进行初始化;(2)将箱子信息按照顺序放入到动态箱子队列中,建立/更新空隙信息表gap_table;(3)从队列中取出第一个箱子box;(4)结合box尺寸,在gap_table表中找出所有能容纳该箱子的空隙,并存储到gap_usable中。如果gap_usable为空,看是否满足换托盘条件,如果满足,则换托盘,进入1,如果不满足换托盘条件,放弃放入此箱子,进入2,同时abandon_num++;(5)将box尝试放入到gap_usable中的每一个空隙,并放入队列中的第2-5个箱子,然后利用空隙质量评估函数评估放置后的最终效果;(6)选取可放置箱子数量最多的方案中,评估函数评估最终效果最好的方案;(7)是否停止抓取,若是,则结束,否则继续抓取箱子,进入3。如图3所示,本发明实施例提供的空隙信息表格示意图。对于托盘为空的情况,只需设置gap_table中的最底层为一个面积长宽和托盘长宽相等的,也就是说,托盘为空时,只有最底层才可以放置箱子,而且最底层放置箱子的面积为整个托盘面积。当机器人抓取箱子并放置到托盘后,就需要对托盘空隙表进行更新,由于存储到空隙信息表中的空隙必须保证有支撑,所以在放置箱子后,只需更新箱子的最底层和箱子最顶层的上一层的空隙信息。空隙信息包含了此平面上所有未被占用且底面有支撑的面,空隙互相之间不能被完全包含,如图3所示,用颜色标记出来的面为独立的空隙(1表示未被占用,0表示被占用)用颜色框标记出来的面就是需要存储的独立空隙信息。如图4所示,本发明实施例提供的建立空隙信息表的流程图。如图5所示,本发明实施例提供的启发式动态规划箱子放置位置的程序流程图。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1