C# 即使设备保持稳定,双积分后距离值的重大变化
我有一个带磁强计、加速计和陀螺仪的IMU。根据我创建的C# 即使设备保持稳定,双积分后距离值的重大变化,c#,xna,accelerometer,quaternions,ms-media-foundation,C#,Xna,Accelerometer,Quaternions,Ms Media Foundation,我有一个带磁强计、加速计和陀螺仪的IMU。根据我创建的 void newValues() { //get values ... stopwatch.Stop(); t = (float)stopwatch.ElapsedMilliseconds / 1000; stopwatch.Restart(); Matrix3D m = Matrix3D.Identity; Microsoft.Xna.Framework.Quaternion q1 = Microsof
void newValues()
{
//get values
...
stopwatch.Stop();
t = (float)stopwatch.ElapsedMilliseconds / 1000;
stopwatch.Restart();
Matrix3D m = Matrix3D.Identity;
Microsoft.Xna.Framework.Quaternion q1 = Microsoft.Xna.Framework.Quaternion.CreateFromYawPitchRoll(d,n,r);
System.Windows.Media.Media3D.Quaternion q = new System.Windows.Media.Media3D.Quaternion(q1.X, q1.Y, q1.Z, q1.W);
m.Rotate(q);
Vector3D mVtR = new Vector3D(bx, by, bz);
m.Transform(mVtR);
float[] gravity = new float[] { 0, 0, -9.81F };
bx = (float)mVtR.X - gravity[0];
by = (float)mVtR.Y - gravity[1];
bz = (float)mVtR.Z - gravity[2];
sx += bx * t * t;
sy += by * t * t;
sz += bz * t * t;
}
当
b
是加速度
,d
,n
和r
是偏航
,俯仰
和滚转
和s
应该是绝对位置
t
是输入新值之间的时间间隔。但是,即使imu稳定,绝对位置s
也会发生显著变化。为什么会这样?导致您的问题的一个可能因素可能是,您的重力向量假设为Z向上的世界系统,但XNA单位矩阵和XNA四元数都使用Y向上的世界系统。@SteveH所以您建议float[]gravity=new float[]{0,0,9.81F}代码>?