Navigation System Part 1
I'm hoping to get the Microstack Board early this week. Part of my submission was to enable the tracking of the Pi Defender Rover by GPS and an inertial navigation system. The inertial navigation system is a system that uses a computer, motion sensors and rotation sensor to calculate position, orientation and velocity without the need for external references. So if the GPS unit cannot pick up a signal then the inertial navigation system should predict the next latitude and longitude. With the Raspberry Pi and the Xtrinsic Board it is possible to build a low cost system that normally would cost thousands of dollars. I want to know where the Rover is no matter what the weather conditions are and if the GPS is not picking up a signal.
Freescale provides a vast amount of information on the sensors provided on the demo board. There are three sensors included:
MPL3115 is a high-precision sensor used to provide pressure and altitude date.
MAG3110 is a digital 3-axis magnetometer
MMA8491Q is a 3-axis low-g accelerometer
The earth magnetic field is also known as a geomagnetic field. This is magnetic field can be represented by a three dimensional vector. A compass can measure the magnetic North. The intensity of the field is measured in gauss (G) but is usually reported in nanoteslas (nT). Magnetic fields have been used to develop indoor positioning system where GPS will not work
Freescale provides a tilt eCompass algorithm that calculates all three angles (Pitch, Roll and Yaw or compass heading) The demo board has a python script to calibrate the magnetometer. You have to rotate the board 360 degrees.
The accelerometer readings provide Pitch and Roll angle information and the magnetometer provides Yaw or bearing. In order to visual this, Freescale provides a nice demo that you can upload to a website. The first clip is moving the board and changing the position of a compass using the MAG3110. The second clip shows moving a car using the MMA8491Q.