オブジェクトの動きを検出するために、設計したチップで 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/に従って直線的な動きではなく、デバイスを回転させたときにのみ動きます。この問題を解決するにはどうすればよいですか?