I am interested in ginning up an inertial navigation system using an Arduino and a 3-axis accelerometer. I don't need high accuracy, and I'll be dealing primarily with 5 mph or less. I'd like to use a Nano, so I am curious as to the overall computational intensity and memory requirements of such a task. If you've done a similar project, I'd appreciate your insights.
Thanks in advance for any help.
John Doner
An accelerometer is not going to be sufficient.
You will struggle with the arduino due to the amount of calculations required and its poor performance with floating point maths and slow performance with 32 bit fixed point maths.
If you do not well understand both the devices involved and the advanced math involved, you are better off buying one.
CHRobotics has a clear and detailed explanation about why you can't make an inertial navigation system using consumer grade accelerometers and rate gyros here: http://www.chrobotics.com/library/accel-position-velocity
How does an angle error of 0.1 degrees cause an acceleration error of 1.7 metres/second/second ? That explanation is rubbish.
@michinyon: You are correct that the acceleration column is nonsense (off by a factor of 100). However, the velocity error is correct. The positional error is off by a factor of 2. This is sloppy work and does not inspire confidence, but the explanation is correct in outline as follows.
For the record, after careful calibration, consumer grade accelerometers are currently capable of measuring the direction of the gravity vector to an accuracy of about 1 degree in orientation (in one sample interval) .
A one degree error in the gravity vector leads to horizontal acceleration a = 9.8*sin(1 degree) = 0.17 m/s/s
After 10 seconds, the estimated horizontal speed error would be v = at = 1.7 m/s (as stated in the table)
After 10 seconds, the horizontal position error x = (1/2)at^2 = 8.5 m
At that level of accuracy, the approach seems pretty useless to me.