2014-01-17 1 views
0

У меня возникают настоящие проблемы, пытаясь выяснить, на какую ось воздействовали, используя обнаружение столкновения и MAC SDK. Кажется, я не могу получить какие-либо данные, которые имеют смысл. Я включил образец keydrive с обнаружением столкновения, чтобы попытаться понять данные о столкновении, которые возвращаются. Кажется, что он способен обнаруживать коллизии ok, но значения возвратной мощности для оси x и y не кажутся последовательными. Используя этот маленький кусочек кода в моем методе асинхронного:Обнаружение оси для столкновений Sphero

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]; 
} 

У меня есть выход для у соударений:

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 

и для й столкновений:

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; 

, но я использовал много разных вариантов, чтобы получить какую-то последовательность без везения. У кого-нибудь есть совет?

EDIT:

Так я опробовал новое решение. Моя тестовая среда была подавлена, чтобы попытаться укрепить мои выводы. Я держал сферо на месте, не двигаясь, и ударил его по разным осям. Хотя результаты были немного более обнадеживающими, они все еще не слишком надежны. см. мои результаты ниже. Я делал множественные удары по каждой оси с различными результатами, особенно на оси 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 

ответ

1

Я думаю, что причина, по которой вы видите эти цифры, связана с примером, который вы используете. Я прочитал, что вы используете пример ключевого диска с изменениями для создания этих результатов. Проблема заключается в том, что, когда вы нажимаете клавишу, мяч TURNS переходит в указанном направлении. Поэтому шар по отношению к его акселерометру всегда попадает в одно и то же направление, что приводит к таким результатам. Теперь, если вы хотите увидеть разные оси, вам нужно будет разработать способ воздействия на сторону шара перпендикулярно тому, где находится хвостовой фонарь, что обычно не является достижимым, пока оно движется (если вы не ударили его из во время движения).

+0

Не знаю, почему я этого не видел. Я сделал ужасное предположение, что акселерометры были относительно хвостового света. Спасибо за головы. Я пытаюсь заставить sphero отскочить в физической коробке. Что-нибудь, что вы могли бы предложить, чтобы сделать результат лучше в отношении возможностей sphero? – tinkerer

+0

Если вы установите заголовок на какое-то известное значение, затем отследите его изменения, вы должны увидеть, в каком направлении Sphero думает, что он обращен, а затем отрегулируйте оси против этого угла. Кроме того, если ответ был верным для вас, пожалуйста, помогите мне и примите его. –

+0

спасибо за продолжение. Поскольку я опубликовал, я был очень занят, и мне еще нужно попробовать. У меня должно быть свободное время в ближайшие несколько недель, и я сообщу вам, действительно ли это было проблемой. Благодаря! – tinkerer

 Смежные вопросы

  • Нет связанных вопросов^_^