2013-04-24 1 views
1

Каким будет лучший способ сообщить пользователю встряхнуть Sphero?Концепция Sphero "Shake"?

Мне нужно различать, когда пользователь наклоняет Sphero влево/вправо/вверх/вниз, и когда они быстро встряхивают его несколько раз в любом направлении.

Есть ли образец проекта, на который было бы полезно посмотреть?

ответ

2

Если вы собираете значения отфильтрованного значения акселерометра, а также значения «IMU», значения акселерометра лучше всего подходят для обнаружения встряхивания, тогда как значения IMU (roll, pitch, yaw) лучше всего подходят для обнаружения наклона.

Если вы не заботитесь о том, на какой оси он встряхивается, то нормализуйте ось ', получив квадрат суммы их квадратов: sqrt(x^2 + y^2 + z^2) > 2000. Это даст вам величину вектора ускорения. Это хорошая ценность для «общего ускорения», и это отлично подходит для обнаружения тряски.

Если вы хотите изолировать, на какой оси она встряхивается, то для каждой оси оценивайте, превышает ли ее абсолютное значение ускорения значение порога: abs(x) > 2000, так как положительное или отрицательное значение оси является собственной величиной вектора ,

Затем используйте данные рулона, высоты тона и рыскания данных IMU для определения наклона Sphero.

+0

Кроме того, если вы хотите оценить, если он несколько раз встряхнулся, просто оцените, будут ли эти значения выше этого значения, а затем ниже другого значения несколько раз. – ColdSnickersBar

+0

Спасибо! Это было намного легче, чем я пытался. Я обнаружил, что для определения нормального тряски я использовал 'sqrt (x^2 + y^2 + z^2)> 2'. Попытка получить 2000, и моя рука почти упала – Slomojamma