2013-02-13 4 views
1

Можно ли вычислить угол от гироскопа с помощью этого кода? Я имею в виду, правильно ли вычисляется dT?угол поворота с помощью гироскопа в android

public void onSensorChanged(SensorEvent event) { 
      switch (event.sensor.getType()) { 
     /* Other sensor cases */ 
      case Sensor.TYPE_GYROSCOPE: 
      for (int j=0;j<3;j++) mGyro[j] = event.values[j]; 
      if(i==0) 
       i=1; 
      else 
       i=2; 
      if(i==1) 
       start=System.nanoTime(); 
       else if(i==2) { 
        finish=System.nanoTime(); 
       dT=(finish-start)/1000000000f; 
          i=0; 
       } 

      angle[0]=(float) ((angle[0]+mGyro[0]*dT)*180/3.1428f); 
      angle[1]=(float) ((angle[1]+mGyro[0]*dT)*180/3.1428f); 
      angle[2]=(float) ((angle[2]+mGyro[0]*dT)*180/3.1428f); 

      break; 

ответ

2

Я предполагаю, что вы пытаетесь получить ориентацию. Нет, эти формулы неверны, это не то, как вы интегрируете угловые скорости в 3D, что на самом деле немного сложно.

Если вы хотите получить углы, то просто используйте SensorManager.getOrientation() из API. Другими словами, кто-то уже написал этот код для вас, нет необходимости повторно изобретать колесо.

Do не использование рыскания, тангажа и рулона для произвольной ориентации, Euler angles are evil.

Если ваша цель - узнать, вы можете узнать, как интеграция в 3D в рукописи Direction Cosine Matrix IMU: Theory. Эта рукопись - это в основном учебник, довольно простой и простой.

0

Документация класса SensorEvent дает полный пример использования гироскопа. Вам в основном нужно копировать и вставлять код. См. this answer о том, как получить ориентацию от гироскопа.

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