2015-04-07 6 views
1

У меня возникла проблема с решением странной ошибки, с которой я столкнулся, и мне было интересно, есть ли у кого-то еще аналогичная проблема или может предложить решение.Ошибка iOS-гироскопа при вращении вокруг оси z

Я использую javascript для доступа к гироскопу iOS и интересуюсь вращением вокруг оси z; Мне нужен угол поворота, когда устройство лежит ровно на столе.

Однако гироскоп, кажется, выключен примерно на 20deg за каждые 360deg вращения. Если я выровняю устройство с чем-то на столе, поверните устройство 360deg, вернув его в исходную точку, показание угла составляет ~ 340deg, а не 360 или 0. Это усугубляется, поэтому после 1080deg вращения угол отклоняется на ~ 60deg , если я поворачиваю в обратном направлении, он меняет ошибку (в этом случае после -1080deg вращения он вернется к 0deg).

Я тестировал это на Ipad 2, 3 и iPhone 4, и он видел подобную проблему на всех из них - хотя iPhone больше похож на 8deg за каждые 360deg. Я также пытался использовать библиотеки, такие как gyro.js, но тот же результат.

Я собрал короткий пример кода, чтобы продемонстрировать. http://codepen.io/CharlesSmart/pen/ZYNXEJ?editors=101

window.addEventListener('deviceorientation', orientationHandler, false); 
function orientationHandler(e) 
{ 
var alpha = e.alpha 
var div = document.getElementById('text'); 
div.innerHTML = alpha; 
} 

Am I злоупотребляя ориентации АФИ в некотором роде? Может быть, это проблема с устройствами, которые я использую?

Любые советы будут оценены.

ответ

1

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

Возможно, вы хотите, чтобы «devicemotion» не «deviceorientation».