0

我在尝试使用碰撞检测和 MAC SDK 确定哪个轴受到影响时遇到了真正的麻烦。我似乎无法获得任何有意义的数据。我已将示例 keydrive 与碰撞检测集成在一起,以尝试理解返回的碰撞数据。它似乎能够检测到碰撞,但 x 和 y 轴的返回功率值似乎不一致。在我的异步方法中使用这段代码:

if ([asyncData isKindOfClass:[RKCollisionDetectedAsyncData class]]) {
    RKCollisionDetectedAsyncData *collisionData = (RKCollisionDetectedAsyncData *)asyncData;
    xPower = collisionData.impactPower.x;
    yPower = collisionData.impactPower.y;

    NSLog(@"X Power: %u",collisionData.impactPower.x);
    NSLog(@"Y Power: %u",collisionData.impactPower.y);
    [RKRollCommand sendStop];
}

我有 y 碰撞的输出:

2014-01-17 17:16:43.734 KeyDrive[16537:303] X Power: 15
2014-01-17 17:16:43.734 KeyDrive[16537:303] Y Power: 113
2014-01-17 17:16:47.360 KeyDrive[16537:303] X Power: 11
2014-01-17 17:16:47.360 KeyDrive[16537:303] Y Power: 130

对于 x 次碰撞:

2014-01-17 17:17:36.921 KeyDrive[16542:303] X Power: 25
2014-01-17 17:17:36.922 KeyDrive[16542:303] Y Power: 130
2014-01-17 17:17:39.862 KeyDrive[16542:303] X Power: 18
2014-01-17 17:17:39.868 KeyDrive[16542:303] Y Power: 116

然后我将所有阈值当前设置为:

uint8_t xThreshold = 100;
uint8_t yThreshold = 100;
uint8_t xSpeedThreshold = 100;
uint8_t ySpeedThreshold = 100;
float deadZone = 1.0f;

但是我使用了许多不同的变体来获得某种一致性,但没有运气。有人有什么建议吗?

编辑:

所以我尝试了新的解决方案。我的测试环境被简化以试图巩固我的发现。我将球体保持在原位不动,并在不同的轴上撞击它。尽管结果更有希望,但它们仍然不太可靠。在下面查看我的结果。我在每个轴上进行了多次打击,特别是在 y 轴上具有不同的结果。也许我的 y 轴加速度计是个哑弹?

X+          
**Impact**  **Accel**   
X   Y   X           Y
34  8   0.88208     0.218262
55  3   1.381592    0.092529
33  1   0.861572    -0.046875
58  3   1.376953    0.035645
68  3   1.380371    0.094238

X-          
**Impact**  **Accel**   
X   Y   X           Y
57  3   -1.351074   0.026123
38  2   -0.91748    0.050781
57  0   -1.228271   0.025391
59  5   -1.395264   0.178711
40  2   -0.910156   0.005615

Y+          
**Impact**  **Accel**   
X   Y   X           Y
5   31  0.436523    0.638672
6   31  -0.13623    0.390869
18  40  0.39502     0.661621
26  35  0.647461    0.538818
14  46  0.154297    0.770508

Y-          
**Impact**  **Accel**   
X   Y   X           Y
6   32  0.549805    -0.579834
21  30  0.692383    -0.614014
5   31  0.149414    -0.508301
24  30  0.449463    -0.413574
9   31  0.68457     -0.682861
4

1 回答 1

1

我认为您看到这些数字的原因是由于您使用的示例。我读到您正在使用密钥驱动示例,并进行了修改以创建这些结果。问题是,当你按下一个键时,球会转向指定的方向。因此,相对于它的加速度计,球总是以相同的方向被击中,从而导致那里出现这些结果。现在,如果您想查看不同的轴,则需要开发一种方法来对垂直于尾灯所在位置的球的一侧产生影响,这通常在它移动时是无法实现的(除非您从一边开车一边)。

于 2014-01-24T18:31:58.473 回答