OSDN Git Service

fix [3369027] Sensor.TYPE_ROTATION_VECTOR is unstable and returns NaNs when running...
authorMathias Agopian <mathias@google.com>
Wed, 19 Jan 2011 22:26:25 +0000 (14:26 -0800)
committerMathias Agopian <mathias@google.com>
Wed, 19 Jan 2011 23:32:38 +0000 (15:32 -0800)
The cut-off frequency of the lowpass filter was too high
for the sampling rate used by DELAY_NORMAL.

Now we use the same filters used for the gravity vector
(cascaded biquad at 1.5 Hz)

Change-Id: Iac290a716cc47a78337a8f0e45b103e49b4d9d78

services/sensorservice/RotationVectorSensor.cpp
services/sensorservice/RotationVectorSensor.h

index 418e7f8..3abfc12 100644 (file)
@@ -34,9 +34,9 @@ static inline T clamp(T v) {
 
 RotationVectorSensor::RotationVectorSensor(sensor_t const* list, size_t count)
     : mSensorDevice(SensorDevice::getInstance()),
-      mALowPass(M_SQRT1_2, 5.0f),
+      mALowPass(M_SQRT1_2, 1.5f),
       mAX(mALowPass), mAY(mALowPass), mAZ(mALowPass),
-      mMLowPass(M_SQRT1_2, 2.5f),
+      mMLowPass(M_SQRT1_2, 1.5f),
       mMX(mMLowPass), mMY(mMLowPass), mMZ(mMLowPass)
 {
     for (size_t i=0 ; i<count ; i++) {
index b7c9512..17699f8 100644 (file)
@@ -38,9 +38,9 @@ class RotationVectorSensor : public SensorInterface {
     double mAccTime;
     double mMagTime;
     SecondOrderLowPassFilter mALowPass;
-    BiquadFilter mAX, mAY, mAZ;
+    CascadedBiquadFilter mAX, mAY, mAZ;
     SecondOrderLowPassFilter mMLowPass;
-    BiquadFilter mMX, mMY, mMZ;
+    CascadedBiquadFilter mMX, mMY, mMZ;
 
 public:
     RotationVectorSensor(sensor_t const* list, size_t count);