0

オブジェクトの動きを検出するために、設計したチップで MPU6050 を使用するプロジェクトに取り組んでいます。プロジェクトは 2 つのフェーズに分かれています。

  • フェーズ I: オブジェクト指向を視覚化する (完了)
  • フェーズ II: ジャイロスコープとアクセラレータを使用して 3D 座標でオブジェクトの位置を視覚化します。位置は、「二重統合」を通じてこれから導き出されなければなりません。加速度計は、最初に速度を生成するために統合され、次に位置を生成するために再び統合されます。

    void COpenGLControl::Update()
    {
      double mX;
      double mY;
      double mZ;
      mX = mXCordinate*9.81;  // mXCordinate-> X accelerator
      mY = mYCordinate*9.81;  // mYCordinate-> Y accelerator
      mZ = mZCordinate*9.81;  // mZCordinate-> Z accelerator
    
      /* linear velocity*/
      curVelX = preVelX  + mX *sampleRate;
      curVelY = preVelY  + mY*sampleRate;
      curVelZ = preVelZ  + mZ*sampleRate;
      /* linear location*/
      curLoX = preLoX + curVelX*sampleRate;
      curLoY = preLoY + curVelY*sampleRate;
      curLoZ = preLoZ + curVelZ*sampleRate;
    
      preVelX = curVelX;
      preVelY = curVelY;
      preVelZ = curVelZ;
    
      preLoX = curLoX;
      preLoY = curLoY;
      preLoZ = curLoZ;
     }
    

次に、curLoX、curLoY、curLoZ を使用して、openGL で 3D オブジェクトを視覚化します。

glPushMatrix();
glTranslatef(curLoY,curLoX,curLoZ); //-> object moving visualization
glBegin(GL_QUADS);  
........       
glPopMatrix();

私の目的は、オブジェクトを上下左右に移動するときに、3D オブジェクトが同じ動きになるようにすることです。しかし、オブジェクトはhttp://www.x-io.co.uk/oscillatory-motion-tracking-with-x-imu/に従って直線的な動きではなく、デバイスを回転させたときにのみ動きます。この問題を解決するにはどうすればよいですか? ここに画像の説明を入力

4

1 に答える 1