Arrays 如何在一维测量阵列上检测图案

Arrays 如何在一维测量阵列上检测图案,arrays,algorithm,sensors,Arrays,Algorithm,Sensors,我正在为一个需要跟随直线的机器人开发IA算法。地板将是黑色的,有一条白线,并且会有不同的标记来确定不同类型的“障碍物”。我使用的是一个传感器,它给了我一个由8个地面测量值组成的阵列,如图所示,它给了我一个从0到1000的8个测量值的阵列,其中0没有白色,1000是完全白色。在示例中,波纹管是传感器阵列中部的白线的测量和其他情况。 int array[] = {50, 24, 9, 960, 1000, 150, 50, 45} // white line in the middle int ar

我正在为一个需要跟随直线的机器人开发IA算法。地板将是黑色的,有一条白线,并且会有不同的标记来确定不同类型的“障碍物”。我使用的是一个传感器,它给了我一个由8个地面测量值组成的阵列,如图所示,它给了我一个从0到1000的8个测量值的阵列,其中0没有白色,1000是完全白色。在示例中,波纹管是传感器阵列中部的白线的测量和其他情况。
int array[] = {50, 24, 9, 960, 1000, 150, 50, 45} // white line in the middle
int array2[] = {50, 24, 9, 960, 1000, 150, 50, 960} // white line in the middle and a square box on the right
int array3[] = {1000, 24, 9, 960, 1000, 150, 50, 40} // white line in the middle and a square box on the left
int array4[] = {1000, 980, 950, 0, 10, 980, 1000, 960} // black square box in the middle
我可以使用Witch算法来检测以下图像中给定的测量阵列的模式吗?我不想使用几个“硬编码”条件作为模板,因为我认为它不能很好地扩展。我正在考虑实现一个“峰值计数器”算法,但我不知道它是否足够健壮

在这些图上我们可以看到不同的案例,我想检测的案例是带有红色圆圈的案例

谢谢


做一些简单的事情,比如把每个测量值当作一个N维向量,怎么样。在您的情况下,N=8。然后,所有测量值都包含在边长不超过1000的a中。对于N=8,将有256个角。对于您感兴趣的每个案例,将最匹配的超立方体角点关联起来。注意,某些角点可能没有关联。然后,对于每个度量,找到其最近的关联超立方体角点。这会告诉你是哪种情况。您可以通过实施一些检查来减轻错误。例如,如果测量值接近多个角(在某个不确定度阈值内),则将测量值标记为不明确并跳过它

在3次测量的情况下更容易看到这一点。立方体的8个角可以代表

[0,0,0] = no white
[0,0,1] = white on right
[0,1,0] = white in middle
[0,1,1] = white in middle and right
[1,0,0] = white on left
[1,0,1] = white on left and right
[1,1,0] = white on left and middle
[1,1,1] = all white

下面的例子是中间的模糊测量。


(来源:)