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
This commit is contained in:
Mathias Agopian
2011-01-19 14:26:25 -08:00
parent a0bafb4713
commit a97ead75db
2 changed files with 4 additions and 4 deletions

View 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++) {

View 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);