Compass and Accelerometer precision

前端 未结 3 1798
花落未央
花落未央 2021-02-11 10:29

i made my own application in Android that use compass and accelerometer sensors to display the degrees of rotation and inclination of my device. I initialized all the listener a

相关标签:
3条回答
  • 2021-02-11 10:47

    I did this using a Kalman filter from here: Greg Czerniak's Website

    I'm sending data to a udp port and smoothing it on the PC using python. But I guess you can find a Kalman filter implementation for java/android out there.

    0 讨论(0)
  • 2021-02-11 10:58

    What you're seeing is the real thing- the orientation sensors on most phones are only good enough to give you a rough compass heading.

    If you want to smooth the displayed value out so it gives you something that's doesn't appear to change randomly I recommend implementing a http://en.wikipedia.org/wiki/Moving_average or other smoothing filter in Java on that orientation result.

    For the highest performance you could write the filter using the NDK and use the Boost Accumulators library: http://www.boost.org/doc/libs/1_46_1/doc/html/accumulators.html

    0 讨论(0)
  • 2021-02-11 10:59

    See my answer here: Smoothing data from a sensor

    I run this filter on both the accelerometer and magetometer event values before passing them to SensorManager.getRotationMatrix(). I think this algorithm has the advantage of not having to keep a large array of historic values, just the prior low-pass output array.

    The algorithm was derived from this Wikipedia entry: http://en.wikipedia.org/wiki/Low-pass_filter#Algorithmic_implementation

    0 讨论(0)
提交回复
热议问题