使用手册-routing字段:设置车辆必经点(必不经点)逻辑

来自MDCS wiki
Yuhang讨论 | 贡献2023年10月16日 (一) 22:40的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

通过routing字段配置小车路径中的必经点或必不经点

routing字段为simple中内置的站点字段,将其标记在路径终点可以实现指定到达此终点的小车必须经过或必不经过某点的功能,其值及含义如下表。

字段值 含义
routing:origin:siteId1-passAll:siteId2,siteId3,siteId4 如果车辆来自siteId1点,其必须经过siteId2、siteId3、siteId4点
routing:-passAll:siteId2,siteId3,siteId4 无论车辆来自那个点,其必须经过siteId2、siteId3、siteId4点
routing:origin:siteId1-passNone:siteId2,siteId3,siteId4 如果车辆来自siteId1点,其不能经过siteId2、siteId3、siteId4点
routing:-passNone:siteId2,siteId3,siteId4 无论车辆来自那个点,其不能经过siteId2、siteId3、siteId4点
routing:origin:siteId1-passAny:siteId2,siteId3,siteId4 如果车辆来自siteId1点,其必须经过siteId2、siteId3、siteId4点中的一个
routing:-passAny:siteId2,siteId3,siteId4 无论车辆来自那个点,其必须经过siteId2、siteId3、siteId4点中的一个

routing为字段名,冒号后面为字段内容,origin:siteId1代表小车来自id为siteId1的点,此处有两种情况,小车起始点为siteId1,或小车经过了siteId1。passAll表示必须经过,passNone表示必须不经过,passAny表示必须经过其中之一,必经点或必不经点可以为一个点也可为多个点。

以下将分别介绍三个字段值的使用说明,simple工程中各点的id如下图所示

1.passAll

代表必须经过passAll中的所有点,可以为一个也可以为多个点,如下图所示,若不在路径终点标记routing字段,agv应该通过1-2-3-4-5的顺序到达终点,在终点标记了routing:origin:1-passAll:6字段后,代表从1号点来的车辆,必须经过6号点,所以路线变为1-2-6-7-8-5。

2.passNone

代表不能经过passNone中的任何点,可以为多个点也可为一个点。如下图所示,在终点标记了routing:origin:1-passNone:3,8,表示从1号点过来的车辆,不能经过3号和8号点,所以其路线变为1-2-6-7-4-5。


3.passAny

代表必须经过passAny中的任意一个点,如下图所示,在终点标记了routing:origin:1-passAny:6,8,表示从1号点过来的车辆,必须经过6号和8号中的一个点。当两个点都可用时,会选择总距离最短的点,当其中一个点被占用时,会选择另一个点。

如下图所示,由于标记了routing:origin:1-passAny:6,8,且选择8号点时路径较短,所以路径变为1-2-3-4-8-5

当8号点被占用时,其需要经过6号点,所以路径变为1-2-6-3-4-5。

这些字段也可以配合使用,比如需要实现“必须经过某点且不能经过某点”,可以用“|”进行分割,如下图所示,在终点设置了字段routing:origin:1-passAll:3|origin:1-passNone:4,代表从1号点过来的车辆,必须经过3号点且不能经过4号点,所以路线变为1-2-3-7-8-5。

routing字段中也可不设置origin,如routing:-passAll:8,代表无论来自哪个点的车辆,到达此目标点,都必须经过8号站点,如下图所示,在5号点设置了routing:-passAll:8字段,代表无论小车来自哪个点,都必须经过8号点。passAny和passNone也有相同用法。