有轨制导车堆垛的动态稳定性研究
2024-02-21董益民和红杰
尹 昊,董益民,冯 卓,和红杰,陈 帆+
(1.西南交通大学 信息科学与技术学院,四川 成都 611756;2.西南交通大学 计算机与人工智能学院,四川 成都 611756)
1 问题的提出
随着机器人、自动控制、人工智能和大数据等技术的发展,智慧物流已成为我国物流业供给侧结构性改革的重要发展方向[1]。智能仓储是智慧物流的重要组成部分,其设备自动化,是企业降本增效、提高利润的有效手段[2-3]。基于有轨制导车(Rail Guided Vehicle,RGV)[4]调度的智能立体库,是智能仓储设备自动化的重要体现,其结构如图1a所示。图中除立体仓库外,还包括轨道、RGV、托盘、机器人等设备,以及基于视觉导引的机器人自动拆垛/码垛系统[5-6],以实现基于订单的货物自动调度与出库。RGV和托盘是智能仓储自动调度的基本运输单元,装载货物的托盘被固定在RGV上,实现货物的临时短距离搬运。因此,货物装载效率、RGV运动速度等直接影响着智能仓储的工作效率。
图1 基于RGV调度的智能立库
货物装载效率与以RGV上托盘为容器的三维装箱问题[7]的求解息息相关。本文将该类三维装箱问题称为RGV装箱问题(RGV Bin Packing Problem,RGV-BPP),将装箱后形成的箱子整体称为RGV堆垛。RGV-BPP从切割与布局角度,研究如何将一组长方体箱子(货物)码放至RGV上固定尺寸的托盘,使得RGV堆垛所占托盘空间最大,在其他场景中也被称作托盘装载问题[8]。RGV运动速度受限于RGV堆垛承受加速度的能力,由于RGV在有限长度轨道上的快速度带来的大加速度,易导致堆垛倒塌,如图1b所示。由图1b可知,尽管RGV完成了该次没有倒塌货物的搬运,但掉落货物无疑阻塞其他RGV的运行,甚至导致自动系统瘫痪,严重影响仓储自动调度的效率。显然,准确计算不使RGV堆垛中任何箱子倒塌的最大加速度值,对提高智能仓储自动调度效率,降低物流阻塞风险具有积极的现实意义。
在装箱问题研究领域中,堆垛承受水平方向惯性(加速度)的能力被称作堆垛的动态稳定性[9]。与静态稳定性仅考虑箱子底部支撑情况[10-11]不同,现有装箱问题的动态稳定性评估的设计角度分为箱子支撑、工具模拟、力学平衡3种。
(1)箱子支撑 该角度的研究主要考虑箱子在各方向的支撑情况。早在1985年,CARPENTER等[12]就提出了两个动态稳定性准则:①每个非底层箱子至少被两个箱子支撑;②穿过堆垛接缝的长度不能超过堆垛长或宽的某一百分比。他们认为箱子间的“联锁”能够保障堆垛的稳定。随后,BISCHOFF[13]将准则①进一步弱化,只要求每个非底单层最外围的箱子被至少两个箱子支撑。BISCHOFF等[14]提出非底层箱子的平均支撑箱数和至少3个侧面未与其他物体接触的箱子百分比两个动态稳定性指标,首次引入横向支撑概念,并将动态稳定性进行量化。JUNQUEIRA等[15]以由每个箱子左侧和前侧被其他物体横向支撑的面积分数定义的支撑系数β和γ判别是否动态稳定,该方法也被最新研究关注并优化[16-17]。以上研究将箱子支撑情况作为装箱算法的约束条件,使算法计算出满足动态稳定的解,但是,他们并未验证所提出动态稳定性约束的准确性。甚至有学者认为[9,18],箱子的支撑无法保证其动态稳定(即使是在完全横向支撑的情况下)。
(2)工具模拟 该角度的研究使用物理工具模拟箱子的运动状态,分析堆垛倒塌的条件。RAMOS等[18]通过StableCargo工具模拟得到落箱数(the Number of Fallen Boxes,NFB)和破损边界曲线内箱数(the Number of Boxes within the Damage Boundary Curve fragility test,NB_DBC)两个动态稳定性指标,再使用多元线性回归对指标建模,并在后续研究[19]中验证了StableCargo运算的精确性。NFB指标也在BRACHT等[20]的研究中得到应用,但同时该文献指出,如果需要精确的结果,物理工具可能会导致较高的计算成本。并且,NFB和NB_DBC指标是针对集装箱装载问题提出的,它们在以四周不被遮挡的托盘为容器的装箱场景中的适用性未知。
(3)力学平衡 该角度的研究主要分析箱子的受力情况,提出力学平衡公式,找出箱子稳定的条件。QUEIROZ等[21]在其前期静态稳定性研究[22]的基础上,考虑加速度、向心力、阻力,提出一种二维装箱问题的水平静态平衡判断方法。OLIVEIRA等[23]后续将QUEIROZ等[21]在动态稳定性方面的工作扩展至三维,提出一种考虑箱子运动向心力的平衡检测方法,该方法可有效检测堆垛中单箱的动态稳定,但仍存在不足:①未考虑“单箱稳定但箱子所在整体不稳定”的情况,该问题在QUEIROZ等[21]的研究中被“寻找垂直连通箱子集”的方法解决,但OLIVEIRA等[23]并未沿用;②对箱子侧面支持力考虑不充分,OLIVEIRA等[23]默认箱子所受侧面支持合力作用于与质心等高的箱子侧表面,但实际作用位置会随箱子的接触高度变化,并且,他们未考虑因向心力(加速度)导致的侧面支持力变化。
以上动态稳定性研究中,部分方法[12-15]没有考虑堆垛承受加速度的能力,另一部分方法[18,21,23]将加速度作为输入来判断堆垛是否满足动态稳定,尚未见到直接以堆垛承受加速度的能力定量评估动态稳定性的方法。而在智能仓储自动调度场景中,RGV的运动加速度关乎货物出库效率与安全,是十分重要的。因此,本文针对已有动态稳定性评估方法的不足,面向智能仓储自动调度场景,从RGV堆垛中箱子位置和刚体受力的角度,提出一种RGV堆垛的可承载加速度(即不使任何箱子倒塌的最大加速度值)计算方法,以定量评估堆垛的动态稳定性,并限制RGV的运动加速度。本文的主要研究工作如下:
(1)设计了一种基于堆的箱子归类方法,将堆垛中形成稳定整体的多个箱子划分为堆,以堆为单位进行堆垛的动稳定性态分析,解决单箱稳定但箱子所在整体不稳定的问题;
(2)分析并指出了堆垛以特定加速度运动时,堆垛中各堆之间的一种通过刚体树传递的横向作用力——阻倒力,考虑因刚体接触高度或加速度改变带来的侧面支持力变化,进而给出更精确的可承载加速度计算方法;
(3)通过计算堆垛的可承载加速度与对应Unity仿真堆垛的动态稳定性之间的皮尔逊相关系数,并与现有动态稳定性评估方法对比,证明了本文可承载加速度的有效性。
2 问题的描述
图2 货物运输基本单元示意图
设码放在托盘上的RGV堆垛S为n个长方体箱子b1,b2,...,bn的有序集合,其中bi表示第i个箱子的信息,包括箱子的坐标(箱子左—前—底角相对于托盘左—前角的位置)、尺寸、质量、质心坐标等。结合智能立库中箱子与托盘的主流材质、箱子码放方式和RGV运动方式,基本运输单元和堆垛S应具有以下特点:①RGV加速度始终平行于托盘的边;②箱子正交码放于托盘;③箱子码放不重叠,且不超出托盘边界;④每个箱子底部被100%支撑;⑤箱子不会因受压力而形变,可视为刚体;⑥箱子与托盘和其他箱子之间的摩擦因数足够大,加速时不会相对于托盘水平滑动。
堆垛S码放在托盘上的示意图如图3所示,其中白色长方体表示S中的箱子。当RGV向x轴负方向运动的加速度足够大时,S会向x轴正方向倒塌。也就是说,S是否倒塌与RGV的加速度大小直接相关,理论上存在一个不使S中任何箱子倒塌的最大加速度值(可承载加速度)。
图3 堆垛码放示意图
(1)
(2)
其中:|·|表示向量的模;td(·)表示当前加速度下箱子是否倒塌,若是,则为1,否则为0。
RGV堆垛的可承载加速度可用于限制RGV的运动加速度,防止RGV堆垛在运动时倒塌,还可作为动态稳定性评估指标,约束RGV-BPP的求解,提高方案堆垛的动态稳定性。下一章介绍可承载加速度算法。
3 可承载加速度算法
对任意给定的堆垛S,其Tac与S中所有箱子的受力相关,而S的箱子数量可能较多,且受力复杂,以箱子为单位的分析十分困难。为降低分析难度,对S中的箱子进行归类,将归类形成的箱子整体(堆)视为刚体。为便于计算S的Tac,以树结构记录S中的刚体,生成S对应的刚体树集。最后,分析刚体树集中树的根节点刚体的阻倒力,通过阻倒力计算S的Tac。本章先给出可承载加速度算法的整体框架,再分别介绍各个子算法的具体过程,子算法包括箱子归类、刚体树生成和可承载加速度计算。
3.1 算法框架
可承载加速度算法框图如图4所示,虚线框表示子算法,实线框表示子算法的步骤,箭头表示数据传递。
图4 可承载加速度算法框图
可承载加速度算法包括箱子归类、刚体树生成和可承载加速度计算3个子算法。
(1)箱子归类 输入堆垛S,首先将S中箱子归类成堆,得堆集,再将中的堆视为刚体,输出刚体集。箱子归类的具体过程在3.2节介绍。
3.2 箱子归类
由刚体平面运动的质心动量矩定理
(3)
实际观察发现,堆垛中同时倒塌的多个箱子大多在z轴相互接触,重力使得它们紧密连接成为一个整体——称为堆。堆在倒塌时可视为一个刚体,以堆为单位对堆垛的可承载进行分析,可极大地降低分析难度。为找出堆垛中的所有堆,设计一种基于堆的箱子归类(Heap Based Classification,HBC)方法。
HBC方法为:对任意堆垛S,初始化堆集=∅,查找S中最容易倒塌的箱子整体(堆),记为箱子集合H,=∪{H}。令新堆垛S′=SH,再查找S′的最容易倒塌的堆,重复以上步骤,直至新堆垛中没有箱子,最终可得堆垛S的堆集,完成归类。其中,堆垛S的堆H的查找步骤如下:
步骤1初始化候选堆集*=∅。找出S中顶部和x轴正方向侧面均不与其他箱子接触的箱子,称其为自由箱,得自由箱集F。
步骤2对F中每个自由箱bfree,执行步骤2.1~步骤2.4。
步骤2.1令已搜索箱集P={bfree},未搜索箱集Q=S{bfree}。令初始候选堆H*=P,*=*∪H*。
步骤2.2搜索Q中与P中箱子底部有接触、x坐标最大、z坐标最小(优先级由高至低)的箱子bbttm,令P=P∪{bbttm},Q=Q{bbttm}。
步骤2.3搜索Q中与P中箱子顶部或x轴正方向侧面接触的所有箱子Babv,令P=P∪Babv,Q=QBabv。重复该步骤,直至P和Q不再变化。
步骤2.4令H*=P,*=*∪H*,若Q中仍存在与P中箱子底部有接触的箱子,则返回步骤2.2。
步骤3删除*中一起倒塌的可能性较小的候选堆,该类候选堆具有如下特点:H*的所有非最底箱子中,存在箱子底部在y轴被H*中其他箱子支撑的长度小于该箱自身在y轴长度的70%。
步骤4找出*中(l/h)g最小的候选堆最后令输出H。其中,l表示在x轴上,H*的质心与其底部的x轴正方向边界之间的距离,h表示H*质心与H*底部之间的距离,g表示重力加速度大小。(l/h)g是指将H*视为独立刚体时不使其倒塌的最大加速度值,该式可反映H*倒塌的难易程度,其原理在3.4节说明。
堆垛S最容易倒塌的堆H的查找(部分)过程示意图如图5所示。
图5 S的H的查找过程示意图
箱子归类伪代码如算法1所示,其中SearchHeap函数用于查找堆垛S的堆H。
算法1箱子归类。
输入:S={b1,b2,...,bn} //堆垛;
1:function HBC(S)
3: while S≠∅ do
4: H←SearchHeap(S) //获取H(步骤1~4)
6: S←SH //将H中箱子从S移除
7: end while
9: end function
3.3 刚体树生成
对任意堆垛S,其刚体集中存在顶部和x轴正方向侧面均不与其他刚体接触的刚体,称其为自由刚体。自由刚体是堆垛S中最容易倒塌的部分,由于它们的倒塌不被其他刚体阻止,它们在某一加速度下是否倒塌直接反映堆垛能否承受该加速度。
自由刚体(记为Rfree)的倒塌,除受自身属性影响外,还可能受另外两类刚体影响:
(1)Rfree的底部接触刚体Rb;
(2)Rfree的x轴负方向侧面接触刚体Rx。
其中,Rb对Rfree的倒塌产生影响的前提是Rb自身出现倒塌趋势,使得Rb对Rfree的支持力集中在Rfree底部靠x轴负方向的区域,导致Rfree产生顺时针方向的力矩,如图6所示。但是,根据HBC算法的特点,位于某一刚体下方的刚体,一般高度较低,难以倒塌。因此,可忽略Rb对Rfree的倒塌产生的影响。
图6 Rb对Rfree倒塌的影响
图7 Rx示意图
图8 刚体树示意图
步骤1搜索中所有的自由刚体,分别生成根节点,加入刚体树集。初始化叶子节点集=。
步骤2遍历,若有不位于其他刚体下方的刚体R,与中节点L刚体的x轴负方向侧面接触,则以R生成节点,并将该节点作为L的子节点。
步骤3将更新为中的所有叶子节点。若变化,则返回步骤2,否则输出。
另外,为便于后续可承载加速度的计算,刚体树中节点除记录刚体本身外,还需记录与刚体相关的一系列参数,如表1所示为节点具体的属性定义。其中,R、h、l、m、core在节点生成时确定,parent、z、p在将节点作为其他节点的子节点时确定,children在添加子节点时确定。这些参数在3.4节可承载加速度计算中介绍。
表1 节点属性定义
刚体树生成伪代码如算法2所示。
算法2刚体树生成。
4: while true do
6: if R不位于其他刚体下方
7: and R与L刚体的x轴负方向侧面接触 do
8: 以R生成节点,并将该节点作为L的子节点
9: end if
10: end foreach
13: break
14: end if
15: end while
17:end function
3.4 可承载加速度计算
堆垛S的Tac为不使S中任何箱子倒塌的最大加速度值,即不使S的刚体树集中任何树的根节点刚体(自由刚体)倒塌的最大加速度值。自由刚体的倒塌会受树中其他刚体的影响,本文将这种影响抽象为刚体之间的阻倒力的传递。阻倒力表示阻止刚体倒塌需要的力的大小,阻倒力越大,刚体倒塌趋势越大。本节首先分析倒塌不受其他刚体影响的刚体(称为独立刚体)的阻倒力,随后分析刚体树中阻倒力的传递方式,最后给出基于阻倒力的可承载加速度计算方法。
3.4.1 独立刚体的阻倒力
图9 托盘上放置独立刚体场景
ma=f;
(4)
JCε=fh-Nl。
(5)
N=mg。
(6)
联立式(4)~式(6)可得:
JCε=mah-mgl。
(7)
ma=f+φ;
(8)
JCε=fh-Nl-φd。
(9)
由于R持续处于临界倒塌状态,角加速度ε=0。联立式(6)、式(8)和式(9)可得,
(10)
当a<(l/h)g时,加速度不足以使R倒塌,阻倒力φ=0。因此,独立刚体R的阻倒力φ的计算式为:
(11)
由式(11)可知,φ可视为随a和d变化的变量,即φ=φ(a,d)。不使独立刚体R倒塌的最大加速度值,就等于使它的阻倒力φ=0的a的最大值,即(l/h)g。
3.4.2 刚体树中阻倒力的传递
图10 托盘上放置两个相邻刚体场景
m2a=f2-ψ1+φ2;
(12)
f2h2-m2gl2+ψ1e1-φ2d2=0。
(13)
(14)
等号右侧可由加号分为两个子式:①将R2视为独立刚体时的阻倒力;②R1传递给R2的阻倒力。在计算②时,还需另添加一权重p1,取值范围为(0,1],命名为阻倒力传递系数。添加该权重的原因是:R1的x轴正方向侧面除了与R2接触外,还可能与其他刚体接触,导致R1仅将部分阻倒力传递至R2,另外部分传递至其他刚体。本文以接触面积的比例表示阻倒力传递系数,即
(15)
其中:c12表示R1与R2的接触面积,∑c1表示R1在x轴正方向侧面的总接触面积。
又因为阻倒力非负,且随加速度的增大而增大,可得φ2的计算式,
(16)
其中α为下式的解,
(17)
当R2存在R11,R12,...,R1k等多个子节点刚体时(如图11),不难推断,φ2的计算式为:
(18)
图11 R2存在多个子节点刚体示意图
其中α为下式的解,
(19)
由式(18)可知,在刚体接触面的最高位置已知的前提下,R2的阻倒力φ2可视为随a和d2变化的变量,即φ2=φ2(a,d2)。若需进一步将R2的阻倒力传递至它的父节点刚体R3,可再通过式(18)将φ2(a,d2)作为R3的阻倒力φ3的子式进行计算。
3.4.3 可承载加速度计算
堆垛S的Tac,等于不使S的刚体树集中任何树的根节点刚体倒塌的最大加速度值,等于使中所有树的根节点刚体阻倒力为0的最大加速度值。
由树的结构和阻倒力的传递方式可知,刚体树中的阻倒力是从叶子节点刚体开始,逐步往上层刚体传递,直至根节点刚体。因此,根节点刚体的阻倒力的计算涉及刚体树中的所有刚体。本文使用深度优先搜索算法实现根节点刚体阻倒力的计算。
可承载加速度计算伪代码如算法3所示,其中GetPhi为阻倒力计算函数。树中节点属性的定义见表1。
算法3可承载加速度计算。
输出:Tac//可承载加速度。
2: TAC←∅
4: TAC←TAC∪{使GetPhi(T.root,a,0)=0的a的最大值}
//根节点刚体的d不影响计算结果,默认为0
5: end foreach
6: return TAC中的最小值Tac
7:end function
8:function GetPhi (node,a,d) //阻倒力计算函数
9: (h,l,m,p,core)←node.(h,l,m,p,core)
10: if node没有子节点 do
11: return max(0,(m/(h+d))(ah-gl))
12: end if
13: φ←(m/(h+d))(ah-gl)
14: foreach child∈node.children do
15: e1←child.z-core.z
16: d1←child.z-child.core.z
17: φ←φ+(h+e1)/(h+d)GetPhi(child,a,d1)
18: end foreach
19: return max(0,φ·p)
20:end function
4 实验测试
为验证本文提出的可承载加速度的有效性,将本文和文献[14-15]、文献[23]提出的动态稳定性评估方法对比。其中,文献[14]提出的非底层箱子的平均支撑箱数记为M1;文献[15]中所有箱子在x轴正方向侧面的平均支撑系数记为M2;文献[23]中使所有箱子保持平衡的x轴负方向最大加速度值记为M3;本文提出的可承载加速度记为Tac。对比分析RGV堆垛的M1、M2、M3、Tac与RGV堆垛的真实动态稳定性之间的相关性,相关性越强,则表明对应方法在智能仓储自动调度场景中的性能越好。为提高测试效率,利用Unity仿真环境测试得到不使RGV堆垛倒塌的最大加速度值,记为Sim,表示RGV堆垛的真实动态稳定性。本文可承载加速度算法由C#语言实现,使用的Unity版本为2017.4,内置PhysX物理引擎,实验计算机的CPU为Intel(R) Core(TM) i5-7300HQ CPU @ 2.50 GHz。
4.1 RGV堆垛的动态稳定性仿真
为测试得到RGV堆垛的Sim,使用Unity生成托盘和箱子,给与它们碰撞器、摩擦材质和刚体属性,搭建RGV堆垛运动的虚拟场景。虚拟场景中,托盘、箱子和地板的具体参数设置如表2所示(未声明的参数为默认设置)。为使仿真测试更接近现实,设置箱子的质量正比于体积;为使托盘运动平稳,设置其质量足够大(100倍箱子总质量)。
表2 Unity虚拟场景中托盘、箱子和地板的具体参数设置
对给定的RGV堆垛,将托盘放置在地板上,再将堆垛放置在托盘上,利用Unity库的AddForce()函数对托盘施加x轴负方向的力,力的大小等于(托盘质量+箱子总质量)×给定加速度值,以此模拟给定加速度下的RGV堆垛运动。RGV堆垛的Sim的测试步骤如下:
步骤1选择一个合适的加速度大小范围[alow,ahigh](本文选择[0,10]);
步骤2若ahigh-alow<0.1,结束查找,取Sim=alow;
步骤3取amid=(alow+ahigh)/2,使托盘以大小为amid的加速度向x轴负方向加速;
步骤4若5 s内有箱子往x轴正方向的旋转角度大于15°,取ahigh=amid,否则取alow=amid,还原场景,返回步骤2。
4.2 示例测试
为介绍M1、M2、M3、Tac与Sim的相关性测试的具体过程,本节在小样本上进行示例测试。由文献[24]三维装箱算法,根据OR-Library中的BR1前4个算例[14]生成4个堆垛,在虚拟场景中的显示如图12所示,其(箱子种类,箱子个数,总质量)分别为(3,105,269),(3,122,281),(3,112,266)和(3,153,273)。以这4个堆垛构建样本,测试M1、M2、M3、Tac与Sim之间的相关性。
图12 4个堆垛在虚拟场景中的显示
对任一堆垛S,首先,将S中的箱子归类,得堆集,归类结果可视化如图13所示,其中以颜色区分不同的堆,将中各个堆视为刚体,得刚体集;其次,生成对应的刚体树集;再次,根据计算S的可承载加速度Tac;最后,分别计算S的M1、M2、M3,并使用4.1节中的方法测试得到Sim。
图13 4个堆垛的归类结果可视化
4个堆垛的M1、M2、M3、Tac计算结果和Sim测试结果如表3所示。由表3可知,随着堆垛的变换,M1和M2的变化趋势与Sim有一定差别,M3和Tac均与Sim有着大致相同的变化趋势。因此,在该样本上,M1、M2与Sim的相关性不明显,M3、Tac与Sim之间可能存在一定相关性。
4.3 统计测试对比
为深入分析M1、M2、M3、Tac与Sim之间的相关性,由文献[24]三维装箱算法根据OR-Library中的BR1~BR10算例[14]生成1 000个样本堆垛,并改变堆垛的码放方向以提高样本随机性,每个堆垛有4种码放方向,分别对应堆垛的4个侧面靠近x轴正方向,因此可得4 000个样本。另外,为分析堆垛的异构强度(箱子种类数)对本文可承载加速度算法性能的影响,根据箱子种类的不同将4 000个样本堆垛划分为10组,每组有400个堆垛,分别对应算例BR1~BR10,异构强度分别为3、5、8、10、12、15、20、30、40、50。计算10组样本堆垛的M1、M2、M3和Tac,并测试Sim。
本文采取与RAMOS等[18]相同的相关性分析方法,即以皮尔逊相关系数[25](Pearson’s correlation coefficient,Pearson’s r)表示两变量之间的相关性。Pearson’s r∈[-1,1],其绝对值越大,表明两变量的线性相关性越强。另外,计算p-value以进行显著性分析,其值越小,表明结果越显著。在10组样本(每组400个堆垛)和总体样本(共4 000个堆垛)分别计算M1、M2、M3、Tac与Sim之间的Pearson’s r和对应的p-value。
相关性测试结果对比如表4所示(其中“<”符号表示p-value<2.2e-16)。由表4可知,M1在BR1、BR2、BR4、BR5、BR7~BR10上的p-value<0.05,Pearson’s r∈[0,0.4),在BR3、BR6上的p-value>0.05,在总体样本上的p-value<0.001,Pearson’s r∈[0,0.4),表明M1在大部分样本组与Sim在0.05水平上显著正相关性,但相关性弱[25],在小部分样本组(BR3、BR6)与Sim的相关性不显著,在总体样本与Sim在0.001水平上显著正相关性,但相关性弱[25]。同理可知,M2在所有样本组与Sim在0.01水平上显著正相关性(相关性弱),在总体样本与Sim在0.001水平上显著正相关性(相关性弱);M3在弱异构样本组(BR1~BR6)与Sim在0.01水平上显著正相关性(相关性弱),在强异构样本组(BR7~BR10)与Sim的相关性不显著,在总体样本与Sim在0.001水平上显著正相关性(相关性弱)。本文提出的Tac在所有样本组上的p-value<0.001,Pearson’s r∈[0.8,1],在总体样本上的p-value<0.001,Pearson’s r∈[0.8,1],表明Tac在所有样本组和总体样本均与Sim在0.001水平上显著正相关性,且相关性极强[25]。同时由表4可知,Tac与Sim之间的Pearson’s r不因堆垛异构强度的改变产生明显变化。
以上测试结果表明,本文提出的可承载加速度能够有效评估RGV堆垛的动态稳定性,在智能仓储自动调度场景中的性能优于多数同类型算法。需要注意的是,Unity仿真堆垛的运动规律与真实堆垛存在差距,笔者发现当Unity中竖直叠放箱子数较多时,它们会变得过于不稳定,甚至出现仿真堆垛的动态稳定性等于0的情况,这使得部分堆垛测试的Sim偏小,影响Pearson’s r的计算。
5 结束语
本文对RGV堆垛的动态稳定性进行了研究,提出一种RGV堆垛的可承载加速度(使任何箱子都不倒塌的最大加速度值)计算方法。算法过程为:①将RGV堆垛中箱子归类为堆,将堆视为刚体;②根据刚体间的位置构建刚体树,生成刚体树集合;③根据刚体树集合中树的根节点刚体阻倒力计算RGV堆垛的可承载加速度。为了验证本文提出的可承载加速度的有效性,测试了RGV堆垛可承载加速度计算结果Tac与Unity仿真堆垛的动态稳定性Sim之间的皮尔逊相关系数,结果表明两者呈现极强线性相关性,优于现有动态稳定性评估方法。本文提出的可承载加速度可用于约束RGV运动加速度,以减少倒堆垛倒塌事件的发生,还能够定量评估RGV堆垛的动态稳定性,约束RGV-BPP的求解,从而兼顾堆垛的装载效率和动态稳定性。未来的工作将专注于将可承载加速度用于实际的三维装箱问题的求解。高效且满足动态稳定需求的装箱算法,将是后续研究的重点。