diff options
author | Mathias Agopian <mathias@google.com> | 2011-01-19 14:26:25 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-01-19 15:32:38 -0800 |
commit | a97ead75db11ce7dcaa0d3a598fb2de805d30d2d (patch) | |
tree | 5458876a58edb46fbf720ddd4484b9448451a8e7 /services | |
parent | a0bafb471385767f7c9c91efe7fd828b069b2e97 (diff) | |
download | frameworks_base-a97ead75db11ce7dcaa0d3a598fb2de805d30d2d.zip frameworks_base-a97ead75db11ce7dcaa0d3a598fb2de805d30d2d.tar.gz frameworks_base-a97ead75db11ce7dcaa0d3a598fb2de805d30d2d.tar.bz2 |
fix [3369027] Sensor.TYPE_ROTATION_VECTOR is unstable and returns NaNs when running slowly
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
Diffstat (limited to 'services')
-rw-r--r-- | services/sensorservice/RotationVectorSensor.cpp | 4 | ||||
-rw-r--r-- | services/sensorservice/RotationVectorSensor.h | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/services/sensorservice/RotationVectorSensor.cpp b/services/sensorservice/RotationVectorSensor.cpp index 418e7f8..3abfc12 100644 --- a/services/sensorservice/RotationVectorSensor.cpp +++ b/services/sensorservice/RotationVectorSensor.cpp @@ -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++) { diff --git a/services/sensorservice/RotationVectorSensor.h b/services/sensorservice/RotationVectorSensor.h index b7c9512..17699f8 100644 --- a/services/sensorservice/RotationVectorSensor.h +++ b/services/sensorservice/RotationVectorSensor.h @@ -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); |