我在尝试使用碰撞检测和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
答案 0 :(得分:1)
我认为您看到这些数字的原因是由于您使用的示例。我读到您正在使用密钥驱动器示例,并通过修改来创建这些结果。问题是,当您按下一个键时,球TURNS然后沿指示的方向前进。因此,相对于其加速度计,球总是在同一方向上被击中,从而导致那些类型的结果。现在,如果你想看到不同的轴,你需要开发一种方法来对垂直于尾灯所在的球侧产生影响,这通常不是在它移动时可以实现的(除非你从它上面击中它一边驾驶)。