I'm a newbie here at Arduino, (and generally micro-controller design). I am wondering how to determine the heading of the robot (akin to a compass) with one of the many Arduino break-out boards. I am thinking of using a magnetometer, but are there other alternatives which would have less EM interference? (i.e. how feasible would it be to use a gyroscope w/ dead reckoning, etc.) The "area" to be explored is minimal (no larger than a table-top, so any issues with "drift" shouldn't be as evident.
Thank you all for your time, appreciate any answers.
Can you mount any kinds of emitters on the edges of the area to be explored? If so you could use trilateration to estimate your position and heading:
If you're just interested in heading you can mount something as simple as IR transmitters at the corners of the area and use relative intensity of 2 receivers spaced apart by some distance to estimate heading to those transmitters. Not super-accurate, but super-cheap.
Gyros are feasible but cumulative error due to drift and measurement inaccuracy is a problem, as is maximum angular rate (some gyros just can't keep up with fast rotation). Doesn't matter how small your area is, if you turn around 10 times and you're off by 10 degrees, that's a big error.
Gyro+magnetic direction sensor is an improvement because it allows you to occasionally "reset" your gyro data based upon absolute magnetic data (assuming you're in an environment without a lot of magnetic interference).
--
The Rugged Audio Shield: Line In, Mic In, Headphone Out, microSD socket, potentiometer, play/record WAV files
I suggest you do some reading on "tilt compensated compass". You'll will find a lot of information on these forums and other websites about digital compasses.