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 に答える