2

GPS を VR ゲームに使用する可能性を探っています。現在のテスト ビルドでは、頻度と精度の両方が非常に低いです。

マニフェストで私が持っている

<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

そして、私はインスタンスロケーションマネージャーのように

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
           0, 0, this);  

次に、distanceBetween 関数を使用して方位と距離を取得します

public void onLocationChanged(Location location) {
    if(lastLocation != null) {          
        Location.distanceBetween(lastLocation.getLatitude(), lastLocation.getLongitude(), location.getLatitude(), location.getLongitude(), distanceBetween);
        newGpsDataToSend = true;

        if(debug)
            debugListener.debugGPS(distanceBetween);

        releaseSendThread();
    }

    lastLocation = location;        
} 

周波数は 1hz 未満 (5 ~ 10hz は可能でしょうか?) で、方位と距離は非常に不安定です。

コードで何か間違ったことをしていますか? バッテリーの消費などは気にしませんが、電話から取得できる最も信頼性の高い最速のデータが必要です。

完全なソース https://github.com/AndersMalmgren/FreePIE/blob/VRWalk/Lib/Android/FreePIE%20Android%20IMU/src/com/freepie/android/imu/UdpSenderTask.java#L120

4

1 に答える 1

0

サンプリング周波数が高い場合 (GPS サンプリングの場合は 1 Hz を高く数えます)、位置間の距離が GPS 精度よりも小さい GPS 読み取り値が得られます。したがって、観測されたように、ベアリングと距離はびくびくしています。より良い方位を得るには、サンプリング周波数を下げるか、フィルタリングまたは平均を計算してデータを処理します。

たとえば、フライト ロギング アプリケーションの場合、約 2 ~ 5 秒ごとにサンプリングし、垂直速度を計算するために最後の 5 つの高度読み取り値の平均を計算しています。

于 2013-03-08T13:20:34.557 に答える