我正在一个项目中使用 MPU6050 和我设计的芯片来检测物体运动。项目分为2个阶段:
- 第一阶段:可视化面向对象(完成)
第二阶段:使用陀螺仪和加速器在 3D 坐标中可视化对象位置。我按照以下网站的说明进行操作:http ://www.x-io.co.uk/oscillator-motion-tracking-with-x-imu/ 。位置必须通过“双重整合”由此得出;加速度计首先被积分以产生速度,然后再次产生位置。
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/中旋转我的设备而不是线性运动时,物体才会移动。我该如何解决这个问题?