相同路径

在智能车竞赛的信标组比赛中,预赛阶段的排位赛采用独立运行计时。每个车模单独从出发区开始,依次对每个顺次点亮的信标进行检测和靠近。


信标组比赛场景


为了消除前后出场信标队伍在赛道信息披露方面的差异,要求车模比赛路径具有一定的随机性。


为了能够保证比赛成绩相互之间具有可比性,对于随机出现的路径还至少需要满足以下四个方面的要求:

1)路径的起始信标位置应该相对统一:这主要统一车模出发的模式,避免不同视角信标灯对于出发时间的影响。

2)路径所包括的信标的个数和位置应该统一;

3)路径长度应该很接近;

4)路径中需要避免一个信标灯连续两次被点亮;


在九个信标灯下的20个点亮顺序


上面中的黄色边界是7米乘以5米的场地,摆放了9个信标灯。图中给出了一个顺序点亮21个信标灯的路径例子。

[3,8,2,5,4,6,1,9,6,8,5,1,2,8,9,6,7,5,7,1,3]


如果仅仅考虑到路径的信标灯的个数和位置统一,那么总共路径的数量应该是:


21!=51090942171709440000


这是一个巨大的路径种类空间。从这些路径种类中寻找出所有能够同时满足前面四个条件的路径也是非常困难的。


决赛阶段的对抗比赛


下面给出寻找部分满足条件的路径方法:


假设所有信标灯的坐标按照编号顺序存储在列表中beaconPos,路径route列表给出了顺序点亮信标的的编号。下面函数给出了路径的长度。


计算路径长度函数


对于前面给出的21个信标灯的路径,上面函数给出的路径长度为14021,长度单位是厘米。


为了满足条件(1),假设路径第一个信标灯要么是3, 要么是4。下面函数用来判断路径一条路径是否满足条件(1)和条件(4)


判断路径条件(1),(3) 函数


利用random.shuffle函数,对于前面给出的路径进行随机排列,这样所得到的路径自然就满足条件(2)。抽取其中100万个随机排列,根据前面路径条件函数进行判断,符合条件(1)(4)路径大约有27万个左右。它们的长度分布如下图所示:


从路径长度分布来看,基本上呈现一个高斯分布。均值为135000厘米,方差为2500左右。


前面选择的路径长度也非常靠近均值的部分。所以与其长度接近的路径也非常多。


具体满足前面四个条件的路径个数,与条件(3)所要求长度接近的误差有关系。如果定义在140米总长度的路径,允许总长度误差是正负1米,则可能存在的路径也是非常巨大的。如果要求总长度误差为正负1厘米,则满足条件的路径就会降低。



下面给出了经过100万次随机路径排列,同时满足四个条件,其中长度误差在1厘米之内的24条路径:


下图是这24条路径的折线图:



24路径长度误差在1厘米之内的路径


在实际比赛中,每支出场的队伍的出场路径是从上述24个路径种类中随机挑选。


前面考虑比赛路径的公平性中,也仅仅从信标灯的个数、位置以及路线长度等主要方面,尽可能保证路径困难程度相一致。除此之外,影响比赛成绩的因素还应该包括路径中可能碰到信标障碍的次数、路径转弯的总角度等次要因素。如果考虑到次要因素,路径设计可能会更加的合理,但满足条件的路径个数也会大大降低。



当然,上面考虑也许是主观上的。实际上,即使路径信息提前告诉参赛队伍,这些信息也未必可以帮助车模提高成绩。就像今年的比赛,实际上所有的车模都是在预赛场地上进行调试,也没有看到哪一个队伍成功应用了赛道记忆算法提高比赛成绩的。这是因为在室内如何完成车模精确定位实际上也是一个很大的难题。


所以,上面考虑信标比赛中尽量保证每条路径难度相同,也许仅仅是心理上的一个安慰。