2013-03-07 103 views
2

我正在探索使用GPS进行VR游戏的可能性。在我目前的测试版本中,频率和精度都非常低。提高GPS频率和精度

在清单我

<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

回答

0

对于HIGHT采样频率(计数1赫兹的高为GPS采样),你会得到GPS读数,其中的位置之间的距离小于所述GPS accurracy。因此,如所观察到的那样,轴承和距离是跳动的。 为了获得更好的方位,请降低采样频率或通过过滤或计算平均值来处理数据。

例如,对于飞行记录应用程序,我每隔2到5秒采样一次,并计算最后5个高度读数的平均值以计算垂直速度。

+0

所以你说它不可能获得更好的性能? Bummer,猜猜我必须尝试卡尔曼滤波器和加速度计融合:/ – Anders 2013-03-08 15:31:13

+1

它的手机,而不是导弹航空电子设备:-) – Stefan 2013-03-09 08:23:34