我想获得最佳的投球和投球价值。 我已经在使用该代码获取azimut值。
俯仰和翻滚值似乎不太好。
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ROTATION_VECTOR:
// calculate th rotation matrix
SensorManager.getRotationMatrixFromVector(rMat, event.values);
float[] data = SensorManager.getOrientation(rMat, orientation);
Log.i(TAG, "NEW pitch?="+data[1]+" roll="+data[2]);
// do something with data
break;
}
我在增强现实环境中使用该代码(使用Jmonkey引擎)根据手机位置移动3d对象:
public void updateRotationFused(float pitch, float roll) {
//pitch: cams x axis roll: cams y axisheading: cams z axis
mRotXYZQ.fromAngles(pitch + FastMath.HALF_PI , roll - FastMath.HALF_PI, 0);
mCurrentCamRotationFused = mInitialCamRotation.mult(mRotXYZQ);
}
我错过了什么?
修改
应用程序中已使用的代码来自此link
它有效,但我认为Sensor.TYPE_ROTATION_VECTOR
是更好的方法。
答案 0 :(得分:0)
手机中的加速度计往往噪音很大,您需要应用滤镜才能获得更好的效果。 这可以是从trimmed mean filter到Kalman filter的任何内容 我建议从一个均值过滤器开始,因为它很容易实现。简单地说,基于“窗口”大小,它会将最接近的值切断。