调度内核运行原理

来自MDCS wiki
Artheru讨论 | 贡献2023年12月21日 (四) 00:12的版本
跳到导航 跳到搜索

SimpleCore使用原则上静态的任务和路线进行机器人车队管理。静态指路线一旦下发一般不会改变,交管保证满足该路线一定能执行到位且不会发生死锁(即通过死锁预防算法),相对于“解死锁”方法,“死锁预防”方法可以满足在大量工业场景中的工艺需求,如过风淋门、叉车等不允许折返的场景。若有动态更改路线的需求,可以通过插件进行,主要原理为停止当前任务并下新任务(这个间隔可以足够短以至于实际上机器人是不停车切换路线的)。

交管计算原理

SimpleCore使用动态规划和搜索方法进行交管机选。首先使用动态规划计算双车间的通行矩阵,然后在实际车辆需要上锁时,通过进行剪枝的搜索算法进行多车死锁可能性检测并决策。

可编程的路径搜索算法

路径编译

任务逻辑

下发任务流程图

下发任务时,首先进行寻路,如通过FindRoute生成一个SegmentPlan,或者手动构造一个SegmentPlan。然后调用Compile方法得到CarProgram。Compile方法默认会做交管规划,若在参数中给了forecast:false,接下来可以Append多个SegmentPlan来继续延长路线并增加事件。

无论Append与否,由于CarProgram需要做交管规划,若参数中给了forecast:false,则需要调用Forecast。调用Forecast时可以给一个escape参数,为一个SegmentPlan,用来设定逃逸路线,该路线只参与交管规划而不执行(可参见交管规划原理)。最后需要调用Queue进行提交。

CarProgram一旦经过规划,必须提交,否则不允许后续生成针对该车的CarProgram。