1

我正在尝试在我的 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;
        }
    }
4

1 回答 1

0

通过 System.Threading 创建一个新线程提供了 0.001 秒的速度。要读取加速度计中的所有值,我需要 0.000008 秒的速度,但这似乎是它所能达到的最快速度。

于 2015-03-03T13:00:10.657 回答