Complementary filter (Gyro + accel) with Android

后端 未结 4 627
旧时难觅i
旧时难觅i 2021-01-31 06:36

Recently I have made some research to use both the accelerometer + Gyroscope to use those senser to track a smartphone without the help of the GPS (see this post) Indoor Positi

相关标签:
4条回答
  • 2021-01-31 07:06

    I test your code and found that probably the scale factor is not consistent. Convert the pitch to 0-pi gives better result. In my test, the filtered result is ~90 degrees.

    pitch = (float) Math.toDegrees(Math.atan2(accel[1], Math.sqrt(Math.pow(accel[2], 2) + Math.pow(accel[0],   2))));
    pitch = pitch*PI/180.f;
    
    filtered_angle = weight * (filtered_angle + event.values[0] * dT) + (1.0f-weight)* (pitch);
    
    0 讨论(0)
  • 2021-01-31 07:09

    I wrote a tutorial on the use of the Complementary Filter for oriëntation tracking with gyroscope and accelerometer: http://www.pieter-jan.com/node/11 maybe it can help you.

    0 讨论(0)
  • 2021-01-31 07:13

    I can only repeat myself.

    You get position by integrating the linear acceleration twice but the error is horrible. It is useless in practice. In other words, you are trying to solve the impossible.

    What you actually can do is to track just the orientation.

    Roll, pitch and yaw are evil, do not use them. Check in the video I already recommended, at 38:25.

    Here is an excellent tutorial on how to track orientation with gyros and accelerometers.

    Similar questions that you might find helpful:

    track small movements of iphone with no GPS
    What is the real world accuracy of phone accelerometers when used for positioning?
    how to calculate phone's movement in the vertical direction from rest?
    iOS: Movement Precision in 3D Space
    How to use Accelerometer to measure distance for Android Application Development
    Distance moved by Accelerometer
    How can I find distance traveled with a gyroscope and accelerometer?

    0 讨论(0)
  • 2021-01-31 07:14

    i tried and this will give you angle 90...

    filtered_angle = (filtered_angle / 83) * 90;
    
    0 讨论(0)
提交回复
热议问题