先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。
首先需要先明确下OpenTCS内核中的三个概念:
路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。
派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。
调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配共享资源,何时释放拥有的资源。
以上是来自内核的约定,即如果二次开发,必须要按照这样的概念进行设计,当然OpenTCS提供了默认的算法实现(可修改和替换)。这些默认实现包含在openTCS-Strategies-Default子项目中。
本节先来分析下OpenTCS提供的默认Route策略,按照我的理解记录如下:
1、路由算法。
主要是实现了最短路径算法,OpenTCS提供了三种路由算法供选择,分别是:
迪杰斯特拉算法
贝尔曼-福特算法
弗洛伊德算法。
一般来说我们直接使用迪杰斯特拉算法就行了,因为我们的移动机器人一般只需要计算单源最短路径(机器人到目标点),也不需要处理负权边。
这里有意思的是,OpenTCS支持为每一台机器人设置不同的路由计算器,存在类似这样的结构:
//只做示意,OpenTCS中并未存在这样的代码
Map<Vehicle,Router> vehicleToRouter;
这样当我们在项目中

本文深入探讨了OpenTCS的路由策略,包括迪杰斯特拉、贝尔曼-福特和弗洛伊德三种默认算法,以及如何为不同类型的机器人自定义路由算法。同时,文章指出了OpenTCS仅支持静态路由的局限性,并提出了动态规划的改进方向。

1935

被折叠的 条评论
为什么被折叠?



