Is it possible to use the motion of the nucleus to measure the distance

Possible duplicate:
Acquiring Accelerometer Bias Using Core Motion
Android Accelerometer Accuracy (Inertial Navigation)

I try to use the acceleration values ​​of the core and their double integration to get the distance traveled. I move my iPhone linearly along its Y axis, against a line of logs 30 cm long, on the table. First, I let the device rest for 10 seconds, and I calculate my offsets along the three axes by averaging the corresponding acceleration values ​​of the user. The offsets X, Y and Z are subtracted from the acceleration values ​​when I try to calculate the distance traveled. After the subtraction bias, these values ​​are transmitted through the low-pass filter and the middle filter separately. Filters are linear filters, and the cutoff frequency is determined by the number of neighboring values, the average value of which is taken in the lower pass, and the median in the median filter. I experimented with variable values ​​of this number from 1 to 100. As a result, these filtered values ​​are doubled using the trapezoidal rule to obtain the distances. But the calculated distance should not be close to 30 cm. The closest value I received was -22 cm (I wonder why I get negative values, although I am moving the device in the positive Y direction). I also came across this: http://ajnaware.wordpress.com/2008/09/05/accelerating-iphones/ his old article about the same thing that says that the returned accelerometer readings came in quanta of about 0.18 m / s ^ 2 (i.e., about 0.018 g), which led to a large cumulative error very quickly. Based on this, since this error does not really matter, it will be necessary to accelerate the device by almost 1.8 m / s ^ 2, which is almost impossible to measure distance / length. for small movements it does not seem that it is possible to calculate distances using an optimal filter and a higher order numerical integration method without such an impractical speed / acceleration limitation. Is it possible? How about using acceleration data and temporal data to interpolate a polynomial that grows over time as I get more and more movement updates, which is approximately acceleration against a time curve. Double polynomial integration would be part of the cake. But at short distances, the polynomial will have a large error component. Using the predictable known movement that my device will be subjected to, I want to take a huge number of shots (estimated distance compared to the actual known distance) to calculate my error polynomial in a similar way, and then subtract it from my first polynomial. Could this work?

+4
source share
1 answer

Although this is not suitable for StackOverflow because it is not a question, but a discussion, I will try to summarize my thoughts about it.

As already mentioned, the accelerometer is very inaccurate, and you need very good accuracy for this kind of task, especially if you are trying to measure such short distances. In addition, accelerometers differ from device to device, you will get different results for the same movements with another device. Plus a very big random error.

My guess is that you can get rid of a huge part of randomness / error by calibrating the device and doing a “motion measurement” a couple of times, for example, 10 times. After that, you will have enough data to get an average value that can come close to the real value.

Calibration is a key part here, you should think about a smart calibration method, for example, allowing the user to move the device at different distances at different speeds.

But all this is just a theory. I would really like to see your results, but I doubt that you will earn well enough, even using the best filters / algorithms, since there is too much noise.

+3
source

All Articles