本发明属于无人车调度领域,具体涉及一种用于工厂环境下的agv避碰方法。
技术背景
由于智能无人车信息传输的高可靠低延迟的特性,使得移动机器人之间可以获得实时控制数据的交换。因此在自动化仓库中,多台自动导引车(automatedguidedvehicle,agv)之间的通信与信息共享得以更好的实现。
在一个自动化仓库中,考虑每台agv都被赋予一个运输任务,即每台agv都各自有一个起始点和一个目的地。规划好所有agv的路径后,难免在道路的交叉处发生碰撞。传统的方法是赋予每台agv一个优先级,若在道路交叉处发生路径冲突,则两台agv进行协商,优先级高的agv先通过,优先级低的agv进行等待。因此整个agv系统会产生大量的等待时间。即大部分时间都用在了agv之间的协商上。
技术实现要素:
针对上述现有技术的不足,本发明考虑将整个路线图分区,每个区域至多包含一个道路交叉区域,在每个分区内通过agv之间的通信协调agv之间的冲突。协调的方法是确定分区内每台agv沿着路径行驶的最佳速度,使其能够在分区内的道路交叉处不与其他agv发生冲突。并且以时间代价最小的策略解决路径冲突问题。
本发明的技术方案如下:
1实际问题
考虑在自动化仓库中协调
每台agv被建模为其圆心在经过的路径上,半径为δ/2(δ>0)的圆。其中δ的选择是基于得到一个足够大的圆,来包围沿着路线图行进的最大的agv。
要解决的问题就是协调agv之间的冲突,并保证时间代价最小。
2本发明方法下对实际问题的简化
由于冲突发生在道路交叉处,将路线图按照道路交叉处的位置进行分区,在每个分区内协调冲突。因此在地图r上协调
2.1将路线图分区
将路线图分成多个区域的集合s={s1,...,sq},每个分区至多有一个交叉口。交叉口就是需要协调agv冲突的地方,包含在一个分区sσ中的路段为
给定
2.2简化问题模型,作出如下设定:
(1)在路线图上没有外部的障碍,如:人,人工叉车等。
(2)agv沿着一个片段的行驶速度是连续的。
(3)每台agv的速度是有界的:
0<vmin<v<vmax<∞(1)
公式(1)中,v表示agv行驶速度,vmin和vmax分别表示agv行驶速度的下限和上限。
(4)每个片段最多被一台agv占用。
(5)每台agv都有一对不同的起始和终点位置。
2.3该问题的输出是一组速度,保证所有agv之间不会发生冲突,并使agv完成任务所需的总时间最小。
3对问题建立模型
第一步:定义目标函数
将第i台agv在分区内经过的路径定义为:
agv时间为:
令
最小化agv时间即找到每台agv在其路径上经过每个路段对应的一组速度。引入一个新的向量
第二步:确定约束
1.每台agv速度的约束:
φmin<φi<φmax(5)
上述公式中,φmin=1/vmax和φmin=1/vmin,其中vmin和vmax的定义见公式(1)。
2.两台agv之间安全距离的约束:
(αi,j-αj,i)2>(βi,j+βj,i)2(6)
上式符号含义以及具体的推导过程如下:
(1)将每条路径πi被一个曲线的横坐标即si∈[0,di]参数化表示,其中
(2)用以下公式表示第i台agv和第j台agv会发生碰撞。
通过计算公式(7)中的δxi,j,会得到横坐标si的一个区间值。
(3)让
(4)让
(5)当上述两个时间间隔没有交叉时,碰撞才不会发生。如下公式所示:
(6)上述公式可以用集合ωi,j和ωj,i的中点来描述。即两者的中点的之差要大于两者各自距离的一半之和。因此用如下公式表示:
αj,i和βj,i的表示分别与公式(9)和公式(10)类似。将公式(11)两边平方可得公式(6)。公式(6)可以还原成如下公式:
其中ω表示在路径
因此,一个区域内的协调问题被建模成优化问题。
第三步:对上述模型进行求解
本方法旨在协调已知的封闭工厂环境下多个分区内的多台agv。因此每个分区都有一个负责管理优化的线程,每个分区都是独立运行的,当一辆agv从一个分区移动到另一个分区,负责管理的算法也由前一个分区移交到后一个分区。当一台agv进入或离开交叉路口时,优化算法就会运行。因此,在一般情况下,在算法的每次计算中,第i台agv可以位于其路径上的任何位置,而不需要初始位置。
1.单个分区下的管理控制算法
在一个分区负责管理的算法中,定义qnew(sσ)为当前时刻在分区sσ中的agv的清单,而qold(sσ)为迭代前一时刻在分区sσ中的agv的清单。同时,定义向量init(sσ)表示每台agv在路段πi上的起始位置,即算法的当前迭代时刻下的位置,求解步骤如下:
(1)判断qnew(sσ)是否与qold(sσ)为相同清单,如不同,则将qnew(sσ)的清单传递给qold(sσ);
(2)取得分区sσ下所有agv的所在的路段πi,并传递给init(sσ);
(3)求解符合目标函数即公式(4),且符合约束即公式(5)和公式(6)的解φ;
(4)分区sσ下所有agv的速度即为
2.单个agv的控制算法
由于每个agv是分散控制的,因此,每当一台agv进入到其下一代迭代的分区sσ中后,都要更新其所在分区下的init(sσ),而具体控制步骤如下:
(1)当第i台agv进入到本分区sσ,更新qnew(sσ),并得到该台agv的速度向量
(2)当第i台agv离开本分区sσ,更新该台agv所在路段πi的位置init(sσ),并更新该台agv的速度向量
(3)如果不满足(1)和(2),则将qnew(sσ)与qold(sσ)中第i台agv移除。
本发明的有益效果:
本发明通过消除agv在道路交叉处的停车协商时间,从而消除了agv从静止加速到正常运行速度的时间,以达到减少agv整体路径的时间。即通过调节agv的速度,使得agv在道路交叉处不发生碰撞。最终使得所有agv完成任务的总时间减少。
附图说明
图1为整个自动化仓库的分区图。
图2为一个分区内的路线图。
图3为获得两台agv的冲突片段的计算图。
图4为两台agv行进到冲突片段的时间图。
具体实施方式
下面结合说明书附图来对本发明进一步说明。
实施例1
一种用于工厂环境下的agv避碰方法,步骤如下:
第一步:定义目标函数
将第i台agv在分区内经过的路径定义为:
agv时间为:
令
向量
线性目标函数:
第二步:确定约束
1.每台agv速度的约束:
φmin<φi<φmax(5)
式中,φmin=1/vmax和φmin=1/vmin,vmin和vmax分别表示agv行驶速度的下限和上限。
2.两台agv之间安全距离的约束:
其中,ω表示在路径
第三步:对上述模型进行求解
在算法的每次计算中,第i台agv可以位于其路径上的任何位置,而不需要初始位置。
在一个分区负责管理的算法中,定义qnew(sσ)为当前时刻在分区sσ中的agv的清单,而qold(sσ)为迭代前一时刻在分区sσ中的agv的清单。同时,定义向量init(sσ)表示每个agv在路段πi上的起始位置,即算法的当前迭代时刻下的位置,求解步骤如下:
(1)判断qnew(sσ)是否与qold(sσ)为相同清单,如不同,则将qnew(sσ)的清单传递给qold(sσ);
(2)取得分区sσ下所有agv的所在的路段πi,并传递给init(sσ);
(3)求解符合目标函数即公式(4),且符合约束即公式(5)和公式(6)的解φ;
(4)分区sσ下所有agv的速度即为
实施例2
步骤1:在一个已知的自动化仓库中分配5个任务给5台agv,其中任务包括输入5台agv的初始位置以及目的地,然后将该自动化仓库的路线图进行分区,每个分区内至多包含一个道路交叉处,如图1所示;
步骤2:每个分区sσ都获得自己分区内当前的agv的信息,即qnew(sσ)。例如图2所示分区,当前分区内有2台agv,该分区会获得这两台agv的行进路段init(sσ)以及速度信息
步骤3:计算可能与对方发生冲突的片段,计算方式如图3所示,使用步骤2所得冲突片段,使满足约束(αi,j-αj,i)2>(βi,j+βj,i)2,即满足图4所示的两台agv行驶到冲突片段上的时间不发生冲突,即
步骤4:计算目标函数
最终使用本方法与传统基于优先级避障方法在同一测试环境相同任务下,他们的目标函数值对比如下表所示:
上表中交叉口最大同时避障量指在一次迭代时刻中,全地图下处于避障状态的个数,因为本方法可以避免发生避障状况,所以个数为0;目标函数的数值表征时间的长短,绝对值越小时间越短。由此可知,本方法因避免避障造成的时间成本,减少了24的目标函数值,改进效果明显。