自动化集装箱码头多自动引导车辆路径冲突消解方法与流程

文档序号:12460512阅读:248来源:国知局
自动化集装箱码头多自动引导车辆路径冲突消解方法与流程

本发明涉及自动化集装箱码头多自动引导车辆路径冲突问题的解决方法,更具体地说,涉及一种自动化集装箱码头多自动引导车辆路径冲突消解方法。



背景技术:

自动化集装箱码头是采用自动化设备的集装箱码头。集装箱码头是集装箱进行海陆中转的场所,其设备系统由岸边起重机(简称岸桥,下同)、堆场起重机(简称场桥,下同)和水平运输设备组成:岸桥主要负责码头岸边的集装箱装卸作业,场桥主要负责码头堆场的集装箱装卸作业,水平运输设备则负责岸边和堆场之间的集装箱水平运输作业。传统集装箱码头的各种设备都是由人工操作的;随着近年来世界范围内人工成本的不断上升,集装箱码头的各种设备正逐渐由人工操作转向自动化作业,自动化集装箱码头已经成为集装箱码头的发展趋势。

自动引导车辆,即AGV(Automated Guided Vehicle,下同)是自动化集装箱码头的主流水平运输设备。本发明所述的AGV属于一类二轴四轮机器人,一般长15米左右,宽3米左右,能够一次搬运一个40英尺集装箱、一个45英尺集装箱或者两个20英尺集装箱。注意本发明所指的AGV可能将集装箱放置在车体上方移动,也可能自带吊具抓着集装箱移动(后一种情况也可能指自动跨运车,Automated Shuttle Carrier,通常缩写为ASC)。AGV的四个车轮都是转向驱动轮,每个车轮都能够独立地在一定转向角范围内转动。AGV只在码头岸边和堆场之间的水平运输区域范围内移动。每当有水平运输任务分配给AGV时,总是先确定可用的终点,接着在AGV当前位置和终点之间规划路径,然后AGV沿路径行驶,最终到达路径终点。按此方式,AGV可以在集装箱在码头岸边和堆场之间的水平运输区域范围内,完成各种可能的水平运输任务。

自动化集装箱码头的水平运输区域属于一类面积较大的无控制冲突区域,是一类特殊的交通网络。“冲突区域”和“控制”是交通领域的两个概念:冲突区域是指交通系统内,存在多处路径交叉或者路径过分接近的区域,控制则是指区域内的某种规定车辆通过优先级的手段。以城市交通系统内带信号灯的十字路口为例:经过十字路口的车辆路径可能在多个位置过分接近或者交叉,车辆通过路口的优先级则受到交通信号灯和交通规则的控制,因此带信号灯的十字路口属于有控制的冲突区域。集装箱码头的水平运输区域长度接近于岸线的长度,普遍超过300米,宽度则接近堆场到岸边的距离,普遍超过100米。码头的水平运输区域范围内存在大量可能发生AGV路径交叉的位置,然而并没有类似于信号灯的交通控制装置。

图1是对集装箱码头水平运输区域的一个抽象,码头的堆场在图的上方,岸线则在图的下方。图中的点划线表示无控制冲突区域的边界。图中的带圆点和箭头的虚线表示AGV的路径,以罗马数字编号;虚线的原点表示路径的起点,箭头则表示路径的终点和方向。图中的打点直线方框表示允许AGV暂时停车的区域,称为车道(下同),以阿拉伯数字编号。车道可能在无控制冲突区域的范围内(例如车道34到车道41),也可能在范围外(例如车道1到车道33);路径总是从车道开始,到车道结束。车道是无冲突的区域,AGV只能沿车道的长边方向进入或者离开车道。AGV对车道有独占权,一个车道只能同时服务于一台AGV:可能AGV的车身范围正与车道范围重叠,也可能AGV正在某条路径上行驶,且路径的终点就在车道范围内。在无控制冲突区域范围内,不同AGV的路径可能在某些部分过分接近甚至发生交叉(例如路径I和路径II、路径II和路径IV等),也可能在某些部分反向重合(例如路径IV和路径V)。

在自动化集装箱码头的日常运营中,几十台到上百台AGV同时行驶的情况经常出现,因此多AGV的路径冲突问题是自动化集装箱码头必须解决的关键问题。自动化集装箱码头配置的AGV数量一般是岸桥数量的4到6倍;为了尽量提高岸桥的作业效率,一般要求充分利用AGV进行水平运输,以避免岸桥作业因等待AGV而产生停顿。AGV执行水平运输任务时,总是先在任务的起点和终点之间规划行驶路径,然后沿着路径行驶直至到达终点。大量AGV同时在无冲突控制区域内按规划路径行驶时,可能发生的路径冲突可以归纳为以下三类:

(1)碰撞

AGV沿规划路径行驶,车身与其他某台AGV的车身接触时,这两台AGV发生碰撞。图2给出了一个两台AGV的碰撞案例。图中的两个方框表示AGV车身,方框左上角的数字为AGV的编号;带箭头的虚线则表示AGV的路径。1号AGV从A点向B点移动,2号AGV从C点向D点移动,两条路径存在交叉。两台AGV的车身在路径交叉点附近接触,即意味着1号AGV与2号AGV发生碰撞。

(2)逆向死锁

若两台AGV的路径存在反向重合的部分,则当两台AGV同时通过这一部分时,将由于相互阻挡而同时停下。图3给出了一个两台AGV的逆向死锁案例,图中的方框和带箭头虚线的含义与图2中相同。图中1号AGV从A点向C点移动,2号AGV则从C点向A点移动,它们的路径正好反向重合。由于相互阻碍,两台AGV均无法沿自身路径向前通过B点,形成逆向死锁。

(3)闭环死锁

多台AGV同时沿路径行驶时,若对于其中的每台AGV,均存在另一台AGV在其路径前方阻挡,使其无法继续向前行驶,则这些AGV均无法继续行驶形成闭环死锁。闭环死锁总是在3台以上的AGV群体中产生,且并不要求群体中的AGV路径存在反向重合。图4给出了一个6台AGV的闭环死锁案例,图中方框和带箭头虚线的含义与图2中相同。该案例中,1号AGV跟着2号AGV沿路径AB行驶,路径前方被3号AGV阻挡;3号AGV跟着4号AGV沿路径KL行驶,路径前方被5号AGV阻挡;5号AGV沿路径EF行驶,路径前方被6号AGV阻挡;6号、7号、8号AGV的情况则与5号AGV类似。由于相互阻挡,图中的8台AGV全部无法继续沿路径前进,形成闭环死锁。

多AGV路径冲突问题的难点在于,如何避免多台AGV在同时行驶过程中出现死锁。现有文献中的多AGV死锁避免方法,可以分为预防方法(Prevention)和消解方法(Prediction And Avoidance)两种类型。

预防方法是在AGV移动开始前避免死锁的方法,其特点是,仅在不可能产生死锁的前提下,才允许AGV开始沿路径行驶。银行家算法是最为经典的死锁预防方法。该方法将路径视作资源(可能是指路径的一部分或者路径交叉点)的集合,仅当AGV路径上的所有资源均不被占用时,才允许该AGV开始沿路径移动;AGV移动开始时占用路径上的所有资源,经过某资源后才将该资源重置为不被占用状态。这种方法能够保证AGV通过路径需要的资源不会被其他AGV占用,因此不会产生死锁。针对自动化集装箱码头多AGV的路径死锁问题,Kap Hwan Kim等人和Max Klimm等人分别提出了基于静态划分和预约计划(reservation scheduling/schedule)的路径死锁预防方法。这两种方法将AGV路径划分为静态路径资源的集合(路径资源分别用路径段和网格空间表示),根据各路径对资源的占用顺序和资源占用唯一性约束归纳预约计划,并将预约计划作为判断多条路径之间是否可能出现死锁的依据。每当系统中有新路径生成时,首先根据预约计划判断,加入新路径后现有路径集合中是否存在产生死锁的可能性:仅在不可能出现死锁的条件下,才允许新路径投入使用;否则,新路径暂时不被采用,新路径上的AGV将在新路径的起始点等待。

预防方法是避免多AGV路径死锁的有效方法,但存在死锁控制过于严格的缺陷,对AGV系统的整体作业效率具有负面影响。以闭环死锁为例,即使是根据预约计划判断为可能产生死锁的路径集合,也不一定必然在AGV行驶过程中产生死锁。图5给出了预约方法缺陷的一个例子,图中的方框表示AGV,A和B表示两台AGV的路径交点,其他符号的含义与图1相同。图中I号AGV的路径从车道12开始,到车道7结束,AGV尚未开始移动;II号AGV的路径从车道8开始,到车道16结束,AGV的移动已经开始。根据预约计划判断,认为此时两台AGV的路径存在死锁的可能性;因此若采用预防方法避免死锁,则I号AGV必须等待,直到II号AGV经过A点之后才能开始移动。然而,即使I号AGV立刻开始移动,只要其到达B点之前II号AGV已经经过A点,就不会产生两台AGV死锁的情况。显然,采用预防方法将导致的AGV在路径起点的等待,但这种等待并不是避免死锁的必要条件。

消解方法是在AGV行驶过程中避免死锁的方法。与预防方法相比,消解方法并不要求AGV在起点等到不存在路径冲突时才开始移动,因此这类方法有利于AGV系统效率的充分发挥。消解方法一般按照固定的时间间隔执行,每次执行前都会将AGV路径划分为首尾相连的若干部分;每次执行时,AGV会对路径的下一部分进行申请,申请通过后才允许进入。消解方法包括冲突预测(Prediction)和冲突避免(Avoidance)两种机制:前者用于预测各台AGV的申请是否会产生死锁,后者则用于制定特定的申请处理方案:这种方案能够在不引起死锁的条件下,通过尽可能多的申请。采用消解方法时,仅在没有预测到死锁、或者预测到的死锁能够避免的条件下,才会通过AGV的申请,允许其进入路径的下一部分路径,因此也不会产生死锁。然而,现有文献中的多AGV路径冲突消解方法都不是面向无控制冲突区域的,因此对自动化集装箱码头的多AGV路径冲突问题并不适用。

综上所述,自动化集装箱码头的多AGV路径冲突在无控制冲突区域内产生。现有的自动化集装箱码头多AGV路径冲突的预防方法存在缺陷,可能造成AGV在路径起点不必要的等待。现有的多AGV路径冲突消解方法并不符合无控制冲突区域的特点,对自动化集装箱码头并不适用。



技术实现要素:

本发明的目的是提供一种针对自动化集装箱码头多自动引导车辆路径冲突问题的消解方法,以弥补现有预防方法的缺陷。

为实现上述目的,本发明采用如下技术方案:

一种自动化集装箱码头多自动引导车辆路径冲突消解方法,包括:步骤1,设定自动引导车辆路径的路径特征;步骤2,将自动引导车辆的路径离散化为特征点和特征方向,特征点是从路径轨迹上取出的有限数量的点,特征方向是特征点的方向;步骤3,对自动引导车辆路径进行动态划分,将路径的特征点集按行驶顺序划分为四个子集:已过点子集、占用点子集、申请点子集和探测点子集;步骤4,依据方向包围盒方法检测特征点冲突;步骤5,预测路径冲突,并在可能发生路径冲突时,调整部分路径以避免冲突;步骤6,有新的自动导引车辆路径生成时,对新生成的路径执行步骤1和步骤2;步骤7,按照确定的时间间隔反复执行步骤3到步骤5,直至所有自动引导车辆都到达终点结束运动。

进一步地,步骤3进一步包括:步骤3.1:自动引导车辆的路径生成后,在第一次动态划分之前,将路径的起始点加入占用点子集,其余点加入探测点子集;步骤3.2:动态划分开始,此时探测点子集应为空;根据当前的自动引导车辆车身中点位置,将占用点子集中靠近路径起点且到车身中点的距离大于预设值的所有特征点转移到已过点子集中(预设值大于车身长度的一半),转入步骤3.3;步骤3.3:根据当前的自动引导车辆车身中点位置和瞬时速度计算最远申请距离,得到路径前方到自动引导车辆车身中点距离小于该距离的最远特征点T;如果该点在探测点子集范围内,转入步骤3.4;否则,该点应在占用点子集范围内,转入步骤3.5;步骤3.4:如果T点所在的子路径为直行子路径,则将T点自身和探测点子集内排在T点后方的特征点转移到探测点子集;否则,将T点所在子路径的所有特征点全部转移到探测点子集,转入步骤3.5;步骤3.5:本次动态划分结束,转入路径占用点子集更新阶段;一段时间以后开始一次新的动态划分,转入步骤3.2。

进一步地,步骤4进一步包括以下判断原则:第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的申请点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的申请点子集存在冲突关系;第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的占用点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的占用点子集存在冲突关系;第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的探测点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的探测点子集存在冲突关系;第i次动态划分后,若路径j的占用点子集中的某个特征点与路径j’的探测点子集中的某个特征点冲突,则认为路径j的占用点子集与路径j’的探测点子集存在冲突关系。

进一步地,步骤5的路径冲突包括碰撞、逆向死锁和闭环死锁。

进一步地,碰撞的预测方法为:第i次动态划分后,如果路径j的申请点子集与路径j’的占用点子集冲突,则认为碰撞将要发生。

进一步地,碰撞的消解方法为:在预测到碰撞将发生时,不允许路径j的占用点子集更新。

进一步地,逆向死锁的预测方法为:在第i次动态划分后,路径j的占用点子集与路径j’的探测点子集之间、以及路径j’的占用点子集与路径j的探测点子集之间不同时存在冲突,且路径j的占用点子集和申请点子集的并集与路径j’的探测点子集冲突,且路径j’的占用点子集和申请点子集的并集也与路径j的探测点子集冲突,则认为逆向死锁发生。

进一步地,逆向死锁的消解方法为满足以下约束公式:

αxij+α′xij′+αα′|1-xij-xij′|=0,α=(1-σijj′)vijδijj′,α′=(1-σij′j)vij′δij′j

;其中,δijj’表示申请点子集Cij与探测点子集Dij’冲突关系的0-1变量,若Cij与Dij’冲突,则有δijj’=1,否则δijj’=0;σijj’表示占用点子集Rij与探测点子集Dij’冲突关系的0-1变量,若Rij与Dij’冲突,则有σijj’=1,否则σijj’=0;vij为中间变量,Cij=φ时vij=0,否则vij=1;xij为决策变量,在第i次动态划分后,若决定将路径j的申请点子集并入占用点子集,则有xij=1,否则xij=0。

进一步地,闭环死锁的预测方法为:如果在第i次动态划分后,存在由N条路径构成的序列P={j1,j2,…,jN}且同时有下式成立,则认为,若把该序列中所有路径的申请点子集并入占用点子集,将可能在路径序列范围形成闭环死锁:其中,δijj’表示申请点子集Cij与探测点子集Dij’冲突关系的0-1变量,若Cij与Dij’冲突,则有δijj’=1,否则δijj’=0;σijj’表示占用点子集Rij与探测点子集Dij’冲突关系的0-1变量,若Rij与Dij’冲突,则有σijj’=1,否则σijj’=0;vij为中间变量,若Cij=φ则有vij=0,否则vij=1。

进一步地,闭环死锁的消解方法为:所有可能的路径序列P内,都满足:其中,xij为决策变量,在第i次动态划分后,若决定将路径j的申请点子集并入占用点子集,则有xij=1,否则xij=0。

在上述技术方案中,本发明提出一种基于路径动态划分的多AGV路径冲突消解方法,在AGV的行驶过程中,每过固定的时间间隔对路径进行动态划分,并在此基础上,以不引起路径冲突为约束,动态调整各条路径上允许AGV到达的最大路径长度(简称许用长度,下同),以此控制AGV沿路径行驶的过程,避免路径冲突的出现。

附图说明

图1是集装箱码头无控制冲突区域示意图;

图2是碰撞冲突示意图;

图3是逆向死锁冲突示意图;

图4是闭环死锁冲突示意图;

图5是多AGV路径冲突预防方法的缺陷示意图;

图6是自动化集装箱码头的子路径及其分类示意图;

图7a-7b是单AGV路径的离散化示意图;

图8是单AGV路径的动态分段示意图;

图9是特征点的冲突关系示意图;

图10是多AGV路径冲突消解的三线程实现流程图;

图11是双AGV冲突消解实施例的第一示意图;

图12是双AGV冲突消解实施例的第二示意图;

图13是双AGV冲突消解实施例的第三示意图;

图14是双AGV冲突消解实施例的第四示意图;

图15是双AGV冲突消解实施例的第五示意图;

图16是双AGV冲突消解实施例的第六示意图。

具体实施方式

下面结合附图和实施例进一步说明本发明的技术方案。

本发明对多AGV路径冲突(尤其是指死锁冲突)的避免,是按照渐进思路实现的。在运输任务到达以前,所有AGV都在车道停车等待,水平运输区域没有路径,因此没有死锁冲突。随着运输任务的不断到达,不断有新路径规划完成并投入使用。由于AGV停在车道时不会引起路径冲突、且一个车道只能服务于一台AGV,因此只要保证有一台AGV能够不受阻挡地沿路径到达终点,就能避免多AGV系统中的死锁冲突;即使当前有另一台AGV该AGV阻挡,这种阻挡关系也会在该AGV到达终点后结束。

基于上述思路,本发明公开一种自动化集装箱码头多自动引导车辆路径冲突消解方法,其包括以下主要步骤:

S1:设定自动引导车辆路径的路径特征;

S2:将自动引导车辆的路径离散化为特征点和特征方向,特征点是从路径轨迹上取出的有限数量的点,特征方向是特征点的方向;

S3:对自动引导车辆路径进行动态划分,将路径的特征点集按行驶顺序划分为四个子集:已过点子集、占用点子集、申请点子集和探测点子集;

S4:依据方向包围盒方法检测特征点冲突;

S5:预测路径冲突,并在预测到可能发生路径冲突时,调整部分路径以避免路径冲突;

S6:有新的自动导引车辆路径生成时,对新生成的路径执行S1和S2。

S7:按照确定的时间间隔反复执行S3到S5,直至所有自动引导车辆都到达终点结束运动。

自动化集装箱码头单AGV路径的动态划分是在路径离散化的基础上进行的。动态划分能够标定路径上已经被使用的部分、即将使用的部分和到达终点前还需要使用的部分,是定义多AGV冲突关系的基础,也是当前路径许用长度增加的依据。

本发明对自动化集装箱码头的AGV路径采用如下假设。

(1)本发明中所述的AGV路径的起点和终点都处在某条车道的范围内。由于AGV对车道的独占权(参见第一部分第四段),开始移动前和到达终点后的AGV,都不可能与其他AGV形成死锁。

(2)本发明中所述的AGV路径总是由若干子路径首尾相连而成,各子路径的类型一定是直行、斜行、直角转弯和U型转弯之一。

(3)AGV的子路径总是由一段或者多段轨迹曲线组成,各段轨迹曲线都可以用轨迹方程进行描述。

(4)AGV路径上的所有点都具有与其对应的点方向。AGV沿给定路径移动时,其车身水平面的中点总是在路径上;AGV的车身中点与路径上的某一点重合时,其瞬时速度方向总是与该点的点方向相同。

(5)子路径的起点和终点的点方向,一定是正北(对应于图中向上)、正南(对应于图中向下)、正东(对应于图中向右)和正西(对应于图中向左)四种方向之一。

子路径的分类与子路径范围内点方向的变化有关。直行子路径范围内,所有点的点方向都相同。斜行子路径范围内,起点和终点的点方向相同,其他点的点方向均偏向首末点的点方向的某一侧。直角转弯子路径范围内,起点和终点的点方向垂直,其他点的点方向逐渐从起点的点方向向终点的点方向变化。U型转弯子路径范围内,起点和终点的点方向相反,其他点的移动方向同样从起点的点方向向终点的点方向逐渐变化。

图6是包含自动化集装箱码头四种子路径的图例。图中以圆点标出了子路径的起点和终点,用字母A到K进行编号;其他符号的含义与图1相同。图中I号路径从车道11开始,到车道9结束。该路径范围内,A点、B点、F点和G点的点方向向北,C点、D点和E点的点方向则向东;A点和B点之间、D点和E点之间、以及F点和G点之间都是直行子路径;B点和C点之间、E点和F点之间都是直角转弯子路径,C点和D点之间则是斜行子路径。II号路径从车道20开始,到车道18结束。该路径范围内,H点和I点的点方向向北,J点和K点的点方向向南;H点和I点之间、以及J点和K点之间都是直行子路径,I点和J点之间则是U型转弯子路径。

动态划分是指,在AGV沿路径行驶的过程中,根据其的当前状态(包括位置、速度等)对路径进行划分的方法。动态划分的特点在于,即使对于相同的路径,在不同车次沿路径行驶期间,各次划分结果也会存在差别。本发明中AGV路径的动态划分是在路径离散化的基础上进行的,这种离散化将连续的路径轨迹转化为特征点和特征方向的集合。特征点是从路径轨迹曲线上取出的有限数量的点,特征方向则是这些点的点方向。根据假设(4),在路径给定的条件下,总是可以从路径范围内提取有限数量的特征点,以及对应的点方向;当特征点的数量足够多时,连续的AGV路径就可以用离散的特征点集合进行描述。

图7a-7b是对某AGV路径的一个直角转弯子路径进行离散化的图例。图7a-7b中点A到点K之间的子路径为直角转弯子路径,点B到点J均为子路径上的点。若将左侧的所有点都从路径上抽出,并分别加上各点的点方向,就可以将连续的AGV路径离散化为特征点和特征点方向的集合,如图中右侧所示。

本发明的AGV路径动态划分是定时触发的,每次划分都将路径的特征点集按行驶顺序划分为四个子集:已过点子集、占用点子集、申请点子集和探测点子集。已过点子集是AGV已经释放的特征点集合;占用点子集是AGV已经占用且还未释放的特征点集合;申请点子集是AGV正在申请且尚未占用的特征点集合;探测点子集则是路径前方占用和申请范围之外的特征点集合。已过点子集总是从路径的起始点开始,探测点子集总是到路径的终点为止。AGV刚开始移动时,已过点子集为空;快要到达路径终点时,探测点子集为空。占用点子集定义了AGV在路径上当前能够到达的范围,该子集内的点到路径起点的最远距离即为路径的许用长度。占用点子集包含的特征点应足够多,至少应保证AGV能在超过该子集的最后一个特征点前停止。每次动态划分都会重新定义四个特征点子集的范围,因此子集间的分界可能在多次动态划分前后不断变化。以下给出S3中AGV路径动态划分的主要步骤:

S3.1:AGV路径生成后,在第一次动态划分之前,将路径的起始点加入占用点子集,其余点加入探测点子集。

S3.2:动态划分开始,此时探测点子集应为空。根据当前的AGV车身中点位置,将占用点子集中靠近路径起点且到车身中点的距离大于预设值的所有特征点转移到已过点子集中(预设值大于车身长度的一半)。转入S3.3。

S3.3:根据当前的AGV车身中点位置和瞬时速度计算最远申请距离,得到路径前方到AGV车身中点距离小于该距离的最远特征点T。如果该点在探测点子集范围内,转入S3.4;否则,该点应在占用点子集范围内,转入S3.5。

S3.4:如果T点所在的子路径为直行子路径,则将T点自身和探测点子集内排在T点后方的特征点转移到探测点子集;否则,将T点所在子路径的所有特征点全部转移到探测点子集。转入S3.5。

S3.5:本次动态划分结束,转入路径占用点子集更新阶段。一段时间以后开始一次新的动态划分,转入S3.2。

图8给出了同一AGV路径上的两次动态划分案例。图中以大圆点表示占用点子集内的特征点,以大菱形表示申请点子集内的特征点,其他符号的含义与图1相同。图中的点A到点F,以及点V1、V2、T1和T2均为路径上的特征点;点A与点B之间、点C与点D之间、以及点E与点F之间为直行子路径,点B和点C之间、以及点D和点E之间为直角转弯子路径。第一次动态划分时,车身中点在点V1附近,最远申请点为T1;由于T1在直角转弯子路径范围内,因此子路径BC中的所有点都被加入申请点子集。第二次动态划分时,车身中点在点V2附近,最远申请点为T2;由于T2在直行子路径CD范围内,因此其后的D点并未加入申请点子集。

AGV路径的动态划分是AGV行驶控制和冲突消解的基础。每次动态划分都将路径的所有特征点划分为四个特征点子集,AGV的移动范围则被限制在与占用点子集对应的路径范围内;若此时不再进行动态划分,则AGV将在占用点子集的最远特征点处停止,其在路径上的移动距离将不会超过许用长度。若某次动态划分后,申请点子集不为空,则可以将申请点子集中的特征点并入占用点子集,因此AGV能够到达路径上离起点距离更远的位置。按照这种方式,就能在多次动态划分中不断增加路径的许用长度,最终允许AGV到达路径终点。然而,为了避免与其他AGV的路径发生冲突,并不是每次申请点子集与占用点子集的合并都会被允许。

多AGV的路径冲突可以用某些特征点子集间的冲突关系集合进行预测。在每次动态划分完成后,在各条路径的申请点子集与占用点子集合并之前,可以对进行合并的路径集合进行控制,以避免特征点子集合并后的路径集合内存在碰撞冲突,并保证至少有一台AGV能不受阻碍地到达路径终点。本部分涉及的符号如下所列:

I 动态划分的总次数,编号为i,1≤i≤I

J 路径总数,编号为j,1≤j≤J

Kj 路径j的特征点总数,编号为k,1≤k≤Kj

Pijk 第i次动态划分时,路径j上的第k个特征点

Rij 第i次动态划分后,路径j的占用点子集

Cij 第i次动态划分后,路径j的申请点子集

Dij 第i次动态划分后,路径j的探测点子集

rijk 表示特征点Pijk与占用点子集Rij从属关系的0-1变量,若Pijk∈Rij,则有rijk=1,否则rijk=0

cijk 表示特征点Pijk与申请点子集Cij从属关系的0-1变量,若Pijk∈Cij,则有cijk=1,否则cijk=0

dijk 表示特征点Pijk与探测点子集Dij从属关系的0-1变量,若Pijk∈Dij,则有dijk=1,否则dijk=0

ρijkj’k’ 表示特征点Pijk与Pij’k’冲突关系的0-1变量,若这两个特征点相互冲突,则有ρijkj’k’=1,否则ρijkj’k’=0

λijj’ 表示申请点子集Cij与申请点子集Cij’冲突关系的0-1变量,若Cij与Cij’冲突,则有λijj’=1,否则λijj’=0

γijj’ 表示申请点子集Cij与占用点子集Rij’冲突关系的0-1变量,若Cij与Rij’冲突,则有γijj’=1,否则γijj’=0

δijj’ 表示申请点子集Cij与探测点子集Dij’冲突关系的0-1变量,若Cij与Dij’冲突,则有δijj’=1,否则δijj’=0

σijj’ 表示占用点子集Rij与探测点子集Dij’冲突关系的0-1变量,若Rij与Dij’冲突,则有σijj’=1,否则σijj’=0

vij 中间变量,Cij=φ时vij=0,否则vij=1

xij 决策变量。在第i次动态划分后,若决定将路径j的申请点子集并入占用点子集,则有xij=1,否则xij=0

Xi 第i次动态划分后,路径集合的占用点子集更新方案,Xi={xi1,xi2,…,xiJ}

在二维空间内,方向包围盒(Oriented Bounding Box,简称OBB,下同)是包围物体的最小矩形,通常作为快速碰撞检测的依据。对于二维空间内确定尺寸的物体,其OBB的长度和宽度总是确定的,方向角则与物体的摆放角度有关。若两个物体的OBB存在重叠,则认为这两个物体相撞。

码头的AGV总是具有确定的长宽尺寸,因此在水平面内总是可以用确定大小的OBB作为AGV快速碰撞检测的依据。由于AGV路径上每个特征点的位置和方向都是已知的,因此路径上的每个特征点都存在唯一确定的OBB与之对应,特征点之间的冲突关系则可以用OBB的碰撞关系进行描述。图9给出了以包围盒碰撞关系描述路径特征点冲突关系的一个案例。图中的AD和EG为两条AGV路径,点B和点C是路径AD上的两个特征点,点F是路径EG上的特征点。图中以双线方框表示与特征点对应的方向包围盒,其他符号的含义与图1中的符号相同。该图中点B与点F的方向包围盒重叠,因此认为这两个特征点之间存在冲突关系;点C与点F的方向包围盒不重叠,因此认为这两个特征点之间不存在冲突关系。

在特征点之间的冲突关系已知的条件下,特征点子集之间的冲突关系可以用子集元素之间的冲突关系进行描述,如公式(1)到公式(4)所示。

公式(1)表示,第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的申请点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的申请点子集存在冲突关系。

公式(2)表示,第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的占用点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的占用点子集存在冲突关系。

公式(3)表示,第i次动态划分后,若路径j的申请点子集中的某个特征点与路径j’的探测点子集中的某个特征点冲突,则认为路径j的申请点子集与路径j’的探测点子集存在冲突关系。

公式(4)表示,第i次动态划分后,若路径j的占用点子集中的某个特征点与路径j’的探测点子集中的某个特征点冲突,则认为路径j的占用点子集与路径j’的探测点子集存在冲突关系。

多AGV的各种路径冲突,包括碰撞、逆向死锁和闭环死锁,都可以用不同路径的特征点子集冲突关系进行预测;每当预测到冲突时,总是可以适当地推迟将某些路径的申请点子集并入占用点子集,以这种方式避免冲突的发生。

碰撞是最容易预测和避免的路径冲突。第i次动态划分后,如果路径j的申请点子集与路径j’的占用点子集冲突,则认为允许路径j上的AGV继续前进将导致其可能与路径j’上的AGV相撞;在此情况下,只要不允许路径j的占用点子集更新,即可以避免碰撞冲突。如果路径j的申请点子集与路径j’的申请点子集冲突,则认为同时允许两条路径上的AGV继续前进将导致两者相撞;在此情况下,只要不允许两条路径的占用点子集同时进行更新,就可以避免碰撞冲突。

逆向死锁的预测也相对简单。在第i次动态划分后,如果存在两条不同的路径j和j’,使如下公式成立,则认为,若同时允许两条路径的占用点子集更新,将引起这两条路径上的AGV产生逆向死锁。

ijj′+vij·δijj′)(σij′j+vij′·δij′j)(1-σijj′σij′j)>0 (5)

公式(5)的含义是,在第i次动态划分后,路径j的占用点子集与路径j’的探测点子集之间、以及路径j’的占用点子集与路径j的探测点子集之间不同时存在冲突,且路径j的占用点子集和申请点子集的并集与路径j’的探测点子集冲突,且路径j’的占用点子集和申请点子集的并集也与路径j的探测点子集冲突。在此情况下,只要满足以下约束,就能够避免逆向死锁。

αxij+α′xij′+αα′|1-xij-xij′|=0,;

α=(1-σijj′)vijδijj′,α′=(1-σij′j)vij′δij′j (6)

闭环死锁的检测相对复杂。如果在第i次动态划分后,存在由N条路径构成的序列P={j1,j2,…,jN}且同时有下式成立,则认为,若把该序列中所有路径的申请点子集并入占用点子集,将可能在路径序列范围形成闭环死锁。

只要保证在所有可能的序列P内,都有下式满足,即可避免闭环死锁。

为了尽量提高AGV系统的平均行驶速度,以及为了尽量避免所有路径的占用点子集均不向前延伸的情况,一般在每次动态划分之后,要求在避免冲突的条件下,使占用点子集向前延伸的路径数量最大。因此,可以针对每次动态划分后的预约点子集更新,定义无冲突的多AGV路径占用点子集更新问题。问题的目标函数是使向前延伸的占用点子集数量最大,如下式所示:

问题的约束条件如下所列。

公式(10)是问题的有效性约束。某次动态划分结束后,应保证至少有一台AGV能够不受阻碍地到达路径终点,否则,一定有之前某次动态划分后的占用点子集更新方案不合理。

公式(11)的含义是,若路径j的申请点子集与路径j’的占用点子集冲突,则路径j的占用点子集不应更新。

公式(12)的含义是,若路径j的申请点子集与路径j’的申请点子集冲突,则不应同时更新两条路径的占用点子集。以上两个约束用于保证多AGV路径不存在碰撞冲突。

公式(13)的含义是,占用点子集更新完毕后,不应存在这样的路径集合:集合中前一条路径的新占用点子集与后一路径的探测点子集冲突,且集合中最后一条路径的新占用点子集与申请点子集的并集与集合中第一条路径的探测点子集冲突。该约束用于保证多AGV路径不存在逆向死锁和闭环死锁。

公式(14)是变量vij的定义式。

公式(15)是决策变量xij的约束条件。

公式(16)是占用点子集更新方案的有效性约束。每个更新方案都应保证至少有一条路径的占用点子集能够继续向前延伸。由于公式(10)的存在,该约束一定能够达成。

采用Trajan和A*的混合算法,可以在较短时间内求出问题的最优解,以此得到无冲突的多AGV路径占用点子集更新方案。路径占用点子集的更新按照如下公式进行。

占用点子集更新后,路径的许用长度即随之更新。

本发明中的多AGV的路径冲突消解方法,由路径规划、交通控制和移动执行三个线程实现。每当码头有新的运输任务到达时,仅能确定AGV的起点,以及任务的目标岸桥或者目标场桥。路径规划线程总是尝试为新到达的运输任务指定合适的终点并规划路径。路径规划完成后,交通控制线程根据AGV的实时位置对路径进行划分,并在保证无冲突的条件下更新各条AGV路径的最远许用长度。移动执行线程根据AGV的路径和最远许用长度控制AGV的行驶速度,并对AGV的实时位置进行更新。三个线程按照等时间间隔的方式触发并依次执行。线程的流程图如图10所示。

路径规划线程的步骤如下所列:

SA1:获取所有尚未进行路径规划的运输任务集合S,转到SA2。

SA2:若S为空,结束线程;否则,转到SA3。

SA3:获取S中的第一个运输任务t。如果存在合适的终点(未被AGV占据,也不属于任何路径),则转到SA4;否则转到SA5。

SA4:选择一个合适的终点,规划运输任务t的路径,并将规划得到的新路径加入路径集合R。转到SA5。

SA5:确定t的终点,规划路径,加入路径集合R。

SA6:将运输任务t从运输任务集合S中删去。转到SA2。

交通控制线程的步骤如下所列:

SB1:获取路径集合R,以及集合中所有路径上的AGV的实时位置和瞬时速度。转到SB2。

SB2:对路径集合R中的所有路径进行动态划分,划分方法参照章节2.1。转到SB3。

SB3:根据划分结果,对R中的所有路径制定无冲突的占用点子集更新方案,制定方法参照章节2.2。转到SB4。

SB4:根据占用点子集,更新R中所有路径的许用长度。结束线程。

移动执行线程的步骤如下所列:

SC1:获取路径集合R,转到SC2。

SC2:更新路径集合R内所有路径的AGV实时位置和路径许用长度。转到SC3。

SC3:对R中的所有路径,参照许用长度控制对应AGV的行驶速度。转到SC4。

SC4:将R中所有AGV已经到达终点的路径删除。结束线程。

实施例

下面以两台AGV执行各自运输任务的过程为例,对本发明提出的路径冲突消解方法进行说明,如图11到图16所示。图中各场景的时间点均在动态划分完成之后、许用长度更新之前。图中以A和B标识路径的交叉点;以大圆点表示占用点子集中离起点最远的特征点,并以标识RI和RII进行区分;以大菱形表示申请点子集中离起点最远的特征点,并以标识CI和CII进行区分。图中其他符号的含义与图1中相同。

图11中,I号AGV的路径规划已经完成,路径起点在10号车道内,终点在13号车道内,AGV在路径起点处停止。此时,路径I的已过点子集为空,占用点子集仅包含起点。

图12中,I号路径上的AGV已经开始在沿路径行驶;II号AGV的路径规划则刚刚完成,路径起点在12号车道内,终点在8号车道内,AGV正停在起点。此时,CI已经接近路径交点B,路径I的申请点子集已经与路径II的探测点子集冲突;然而,由于没有预测到死锁,路径I的申请点子集将被并入占用点子集,许用长度将随之增加。

图13中,I号和II号路径上的AGV都在沿路径行驶。此时,CI点和RI点都接近B点,CII点则接近A点,因此路径II的探测区之间、B点与路径II的探测区之间、以及D点与路径I的探测区之间都有冲突。由于预测到死锁,路径II的占用点子集将不会更新,路径II上的AGV车身中点不能超过RII点。

图14中,I号路径上的AGV已经驶过B点,RII点和CII点的位置仍然与图13中相同。此时路径II的探测点子集不再与路径I的占用点子集或者申请点子集冲突,不会引起死锁,因此CII将被并入路径II的占用点子集。

图15中,I号路径上的AGV即将到达A点,II号路径上的RII点已经在A点前方。此时I号路径的申请点子集与II号路径的占用点子集冲突,因此I号路径的申请点子集不会并入占用点子集,以防止两台AGV相撞。

图16中,II号路径上的AGV已经经过A点,RI点和CI点的位置仍然与图15中相同。由于此时路径I的探测点子集不再于路径II的占用点子集冲突,不会引起碰撞,因此CI将被并入路径I的占用点子集。

图16之后,两台AGV沿各自路径继续前行直到到达终点的过程中,不会再有任何路径冲突。

本发明提出的自动化集装箱码头多AGV路径冲突消解方法是首个用于解决自动化集装箱码头多AGV路径冲突问题的消解方法,能够避免多台AGV沿路径行驶过程中出现碰撞冲突或者死锁冲突。对于自动化集装箱码头的多AGV路径死锁问题,现有的预防方法要求AGV等到不可能出现路径死锁的条件下才开始沿路径移动。按照本文提出的消解方法,AGV可以在路径规划完成后立刻开始移动,且能够保证移动过程中不会出现碰撞和死锁。与现有的死锁预防方法相比,本文提出的消解方法更有利于多AGV系统水平运输能力的充分发挥。

本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明的权利要求书范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1