调度内核运行原理:修订间差异

来自MDCS wiki
跳到导航 跳到搜索
(创建页面,内容为“SimpleCore使用原则上静态的任务和路线进行机器人车队管理。 === 任务逻辑 === 缩略图|下发任务流程图 下发任务时,首先进行寻路,如通过FindRoute生成一个SegmentPlan,或者手动构造一个SegmentPlan。然后调用Compile方法得到CarProgram。Compile方法默认会做交管规划,若在参数中给了forecast:false,接下来可以Append多个SegmentPlan来继…”)
 
无编辑摘要
第1行: 第1行:
SimpleCore使用原则上静态的任务和路线进行机器人车队管理。
SimpleCore使用原则上静态的任务和路线进行机器人车队管理。静态指路线一旦下发一般不会改变,交管保证满足该路线一定能执行到位且不会发生死锁(即通过死锁预防算法),相对于“解死锁”方法,“死锁预防”方法可以满足在大量工业场景中的工艺需求,如过风淋门、叉车等不允许折返的场景。若有动态更改路线的需求,可以通过插件进行,主要原理为停止当前任务并下新任务(这个间隔可以足够短以至于实际上机器人是不停车切换路线的)。
 
=== 交管计算原理 ===
SimpleCore使用动态规划和搜索方法进行交管机选。首先使用动态规划计算双车间的通行矩阵,然后在实际车辆需要上锁时,通过进行剪枝的搜索算法进行多车死锁可能性检测并决策。
 
=== 可编程的路径搜索算法 ===
 
=== 路径编译 ===


=== 任务逻辑 ===
=== 任务逻辑 ===

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。