夜光精讲 Opentcs 三大算法(二)任务分配算法

夜光序言:

 

原谅不是无视,而是容纳。一个意味含蓄的笑容。只能是各自的担当。

 

 

 

 

 

夜光精讲 Opentcs 三大算法(二)任务分配算法

 

正文:

白启动任务

自启动任务分为充电任务和停靠任务。不同于订单类型的任务,自启动任务通过实时检测AGV电量状态和任务池完成状态而自动发起的任务,因此无需由控制中心指派AGV,任务产生时己绑定了相应的车辆。


1.充电任务:


AGV在运行过程中会产生大量的电量消耗,因此需能够及时充电以保证后续的正常运转。我们设计充电时电量剩余指标:critical   level, good  level 和perfect  level。

三段式电量百分比设计充分提高系统中车辆的利用率。

 

通常情况下,车辆处于perfect  level或good  level状态。当电池电量低于critical  level百分比时,AGV进入电量严重不足状态,车体客户端通过调用getRechargeO peration函数发出充电请求信号通知控制中心、控制中心、指派充电任务给此AGV,同时指定空闲的充电站点。此间AGV接受任何订单,AGV将当前子任务执行完毕后执行充电任务,其他尚未执行的任务进行重新分配。


当AGV进行充电将电量回升至高于good  level时,可以接受订单,若无订单,则继续充电。
当AGV充电完成100%时,结束充电任务,若无订单任务的指派,能自启动停靠任务进行停泊,让出空闲的充电站点。



2.停靠任务:当AGV当前完成所有任务且无其他新的任务,就近停泊,可以节省电量消耗的同时,为地图减少一个动态障碍点,使得系统的行驶夏加通畅。


(1)调用isParkPosWon(Point*a)函数:判断当前点是否可停靠;
(2)调用getParkPoints(car,points)函数:收集当前可W停靠的点,排除臣经被其他vehicle占用的或被其他小车订单预定的点(状态数为2),即小车不会停靠到其他车辆未来将要经过的路径上。
(3)从(2)的点中调用getNearestPoint(vehicle,points)函数:找到当前离小车最近的未被占用的目标停靠点;
 


2 . 任务执行状态


任务执行状态枚举类为enumTASK_STATUS{枚举值表}


夜光精讲 Opentcs 三大算法(二)任务分配算法