我正在尝试在我的 Unity 项目中使用 IMU 实现“航位推算”。目前我不能得到好的结果:速度变负,所以角色向后移动,或者角色有时在向前移动 IMU 后来回移动。我怀疑脚本被调用的频率没有 IMU 数据发送频率那么高,或者我的脚本不正确。有没有办法让方法/脚本更频繁地被调用?或者我在代码中做错了什么:
/// <summary>
/// This is the coroutine called in the start Method. It keeps running in the background and keeps track of the user making steps.
/// </summary>
/// <returns>WaitForSeconds</returns>
IEnumerator StepcounterLeft()
{
float prev_zVel = 0;
float prev_zAcc = 0;
for (var a = 0; a < 1;)
{
yield return new WaitForSeconds(0.0001f);
float zAcc = (float)vn100l.CurrentMeasurements.LinearAccelerationBody.Z;
float zVel = prev_zVel + (prev_zAcc + ((zAcc - prev_zAcc)/2.0f)*Time.deltaTime);
if (zVel > -0.1 && zVel < 0.1)
zVel = 0;
speed = zVel / 10;
prev_zVel = zVel;
prev_zAcc = zAcc;
if ((zAcc > -0.1 && zAcc < 0.1) && (prev_zAcc > -0.1 && prev_zAcc < 0.1))
prev_zVel = 0;
}
}