
A Low Budget Inertial Navigation Platform with off the shelf, solid state acceleration and rate sensors. Project Thesis in electrical engineering at the Electronics Laboratory of the Swiss Federal Institute of Technology (FIT / ETH) in Zürich, Switzerland in spring of 2000 (14 weeks at 50% part time). Students: Peter Luethi, Thomas Moser, supervised by Markus Uster.
The portable computer with PCMCIA data acquisition card and separate sensor board. 
Inertial navigation is a well known concept deployed in aviation and space technology and other high tech areas. Such systems are generally very expensive because of the precision and computation required.
Inertial navigation is based on techniques, which have been invented and developed after the Second World War. The first systems were built of mechanical gyros, which required very complicated technical and power consuming constructions being prone to failure. Later on 'solid state' solutions have been realized by using only discrete integrated electromechanical or electrooptical sensors. These 'solid state' systems had no moving parts (therefore Strap down Inertial Navigation System), but consisted of expensive lasergyros and integrated sensor devices of the MEMS technology (Micro ElectroMechanical System).
Inertial navigation systems (INS) are used in civil and military aviation, cruise missiles, submarines and space technology. According to these areas of operation, the components used and the entire system have to be very precise and reliable. As a consequence, the costs for such a system are still very high (> 100'000 US$) and they are rather big in size.
Navaho test missile X10 after completing first unmanned aircraft flight under control of inertial navigation guidance. The ins platform on the left is not a strap down type but rather is gimballed. This results in a heavy and space consuming construction. (USA, September 1956)
Applications like mobile robotics, wearable computing, automotive electronics etc require small size and low price. Industrial demand for lowcost sensors (car airbag systems, image stabilization in video cameras) and recent progress in MEMS integration technology lead to sensor products, which are small (single chip) and inexpensive (~100 US$). It was not our goal to build a readily usable navigation platform. It was clear from the beginning, that this was not possible with these sensors. Instead we wanted to get hard data on what was possible with todays low cost sensors. We wanted to be able to estimate the required precision for an actual deployable platform.
A body's actual spatial behavior / movement can be described with six parameters: for example with three translatory (x, y, zacceleration) and three rotatory components (x, y, zangular velocity). To be able to trace the movement of a body, three acceleration sensors and three rotational sensors have to be put together on a platform in such a way, that they form an orthogonal system. By integrating the individual translatory and rotatory components the current position and orientation can be calculated. Integrating the acceleration yields the speed, further integration produces the distance traveled from the point of reference. Since the rotary sensors measured rotation speed (not acceleration), a single integration already yields the orientation.
The six degrees of freedom: A body's actual spatial behavior / movement can be described with three translatory and three rotary components. 
The main limitation of the system performance is given with the finite precision of the sensors. A small glitch in acceleration integrated results in a constant error in speed, integrated a second time an error in distance occurs that now grows linearly over time. Systematic errors of the acceleration sensor (e.g. temperature drift) will result in position errors growing exponentially over time.
Therefore very precise sensor data is required. To optimize the sensor precision we employed a long warmup and initialization phase together with a temperature correction algorithm. In addition some algorithms (usually limiting the field of application) can correct some errors. As an example we assumed that a constant acceleration of 1g points straight down in the average, i.e. is identical to the gvector (gravitation vector). This implies that our platform operates within the gravitation field of the earth and that it does not circle around, producing a constant centrifugal acceleration. This allowed us to implement a simple yet effective feedback algorithm. A simple PID controller adjusts average direction of the gvector estimation towards the mean zacceleration vector direction. Another very error correction method is the position feedback of GPS or other absolute position data.
There exist several valuable choices of coordinate systems, some of them add redundancy to reduce rounding errors. Some coordinate systems have singularities, for example at the "north" and "southpole".
We have chosen the representation with the 'Euler'angles, even though it has such a singularity. It is, however, the most intuitive coordinate system and did not limit our measurements. It defines 3 axes: roll/bank (alpha), pitch (beta) and direction (gamma). There are always two coordinate systems: the initial system (x, y, z), usually where the unit was initialized and the coordinate system of the unit itself (x''', y''', z'''). The three accelerations and the three rotation speeds first have to be transformed into the initial system. Then they are integrated.
Representation of the body's actual spatial situation (x''', y''', z''') referring to the initial system (x, y, z) by using 'Euler'angles. 
Calculation of the actual acceleration (dx, dy, dz) referring to the initial system (x, y, z) and using the mathematical transformation based on the 'Euler'angles. 
Calculation of the actual angular velocity (dalpha, dbeta, dgamma) referring to the initial system (x, y, z) and using the mathematical transformation based on the 'Euler'angles. 
Important: The sequence of transforming the actual data to the components of the initial system matters if the angles are big! Near the north pole you will not arrive at the same place if you first head for south and afterwards for west or first for west and then for south. Therefore keep the sampling frequency high enough in case you intend to allow fast angular movements.
For further information on coordinate systems and transformations please refer to the literature references at the end of this page.
Since time was limited, we decided against developing our own processor board. Instead we bought a sufficiently performant PCMCIA DAQ (Data AQuisition) card and used a standard laptop as our host platform. The sensors are located on a separate sensor board. This way software changes can be made more easily without tempering with embedded computing specific problems.
 Processing unit: portable personal computer with Pentium III 500 MHz processor
 Data acquisition: PCMCIA card with analog and digital I/O
 A separate sensor board with analog electronics and additional GPS receiver
 Acceleration sensor ADXL210 (Analog Devices), dual axis, analog & PWM output, +/ 10g: ADXL210.pdf
 Piezoelectric vibrating gyroscope ENC03 (Murata), analog output, no temperature compensation, max. 300 deg/sec: ENC03.pdf
 Precision piezoelectric vibrating gyroscope ENV05 (Murata), analog output, temperature compensated, improved accuracy, max. 80 deg/sec
 Temperature and reference voltage source AD780 (Analog Devices), analog outputs: AD780.pdf
 Data acquisition PCMCIA DAQCard 1200 (National Instruments), analog sampling performance: 12 bit, 100 kHz: DAQCard1200.pdf
 GPS receiver GPSPS1 (ublox, Switzerland), 12 channel receiver: GPSPS1.pdf
The two gyros. At the left the smaller and less accurate ENC03 as e removable building block in a short 14 pin wide dual in line package for the x and yaxis. To the right the temperature compensated ENV05 for the zaxis.
Acceleration sensor ADXL210 as a removable building block as well. Here only used for the zaxis.
All sensor outputs are first led to second order Butterworth low pass filter stages to prevent aliasing at the digitizer stage. These filters have a cutoff frequency of 50 Hz (except the filter for the precise gyro, which has only an output response frequency of 15 Hz) and are followed by an amplifier to perform optimum signal range adaptation at the analog inputs of the DAQCard1200. The A/D converter has different voltage input ranges, we decided to work in the 0  5V input range of the A/D converters.
Data flow chart of our strap down inertial navigation system (INS) 
The final sensor board: The vertical board in the back supports the ENV05 gyro (large aluminum housing) measuring rotations around the zaxis and a ADXL210 (small black IC) measuring acceleration in the z and y axis. On the main board just below the ENV05 are the two ENV03 rotational sensors (small ICs with silver top) and the remaining ADXL210 and a temperature sensor. At the lower left corner the GPS module is located. We experimented with an aerodynamic housing around the sensors and a small CPU fan to achieve a uniform temperature distribution. Then we tried to compensate the inevitable temperature drift. You can see the fan in the upper left corner.
The final setup: The portable computer, PCMCIA data acquisition card and separate sensor board. 
Sampling Rate 
150 Hz 
300 Hz 
500 Hz 
Horizon after 30 sec 
2.5 deg 
2.0 deg 
2.0 deg 
Direction after 30 sec 
0.7 deg 
0.5 deg 
0.5 deg 
Horizon after 60 sec 
5.0 deg 
5.0 deg 
5.0 deg 
Direction after 60 sec 
1.5 deg 
1.1 deg 
1.1 deg 
This measurement shows the drift of the immobile INS, without any feedback or update mechanisms active. The horizon drift is larger than the directional drift, which can be explained by the cheaper and less accurate ADXL210 rotational sensor. Another interesting thing: the drift after 60 is about double the drift after 30 seconds. Thats because only one integration occurserrors so error propagation is not so bad as with acceleration.
Sampling Rate 
150 Hz 
300 Hz 
500 Hz 
Deviation after 30 sec 
8 m 
8 m 
8 m 
Deviation after 60 sec 
40 m 
40 m 
40 m 
Static position measurement of the immobile INS. The drifts are quite big. Interesting to note that after 60 seconds the drift error is five times bigger than after 30 seconds. Here the exponential error propagation kicks in.
The orientation measurement results look promising as such. Even though the sensors are very cheap, they yield a respectable result. The ENV05 internally uses the exact same sensor as the ENV03, but is temperature compensated, that's why the directional drift is smaller.
The orientation sensors don't depend on the acceleration sensors. But with the help of them, errors can be corrected. Moving the sensor board around with this type of error correction enabled showed good results.
There were no reference measurements with the platform moving, because of the lack of a suitable infrastructure to do reproducible movements.
However, the results of the orientations measurements clearly are not good enough to support a platform for position measuring. For more detail on that point, see next paragraph below.
The measurement results on position error show clearly, that the sensor accuracy is not nearly good enough for navigation. These are the static measurements. When moving the platform around, the position error was considerably bigger. This is also attributed to errors in the orientation: On earth there is a permanent acceleration of 1g, if the orientation horizontally is off by, say, one degree, we get a lateral acceleration error e1 of:
e1 = sin(1) * g = 0.1712 m/s².
This integrated twice, we get an (additional) position error e2 after one minute of:
e2 = e1 * 3600/2 = 308 m!
So it is imperative for a position measurement to have very accurate orientation information, which wasn't the case in our setup.
 More accurate sensors: We attribute most of the drift to bad sensor data. So getting better sensors is a precondition for more accuracy.
 Better error compensation: The example of the ENV05 vs. ENV03 shows clearly, that good temperature compensation and other means of enhancing sensor data are effective means to improve performance (better sensor model, Kalman filter, adaptive filtering). A big help would be to have an accurate temperature sensor on chip, or the whole temperature compensation on chip. Our work around with the "wind tunnel" was not good enough, since we only measure air temperature, which is not exactly the same as the sensor temperature. The temperature sensitivity of the accelerometers was quite high, as a joke we often spock of temperature sensors with a certain sensitivity to acceleration :)
 Finding good ways to initialize and calibrate the unit during startup and during operation. These two points are discussed in the two chapters below.
The strap down inertial navigation system as described before does not feature enough resources for standalone and accurate initial static calibration. The inherent problem is that we want to initialize and calibrate six independent components  three rotatory and three translatory. To carry out precise initialisation of all these components, we need to fill these six components with senseful initial values. We helped ourselves out with the following two assumptions:
1. Motionless calibration phase: The INS platform needs to know the magnitude and direction of the initial acceleration vector. By doing a motionless calibration phase, the initial vector is zero and we don't need any additional sensors. Also, we get a good reading on the gvector, pointing exactly orthogonal downwards with a magnitude referring to an acceleration of 9.81 m/sec² (slightly depending on geographical area).
2. Initial orientation: The system needs additional information about its initial horizontal alignment. This data can either be provided by additional tilt sensors and a compass or by dedicated assumptions applicable to the calibration procedure. In other words, the INS either has to measure exactly its current alignment and heading with additional sensors, or has to specify its initial alignment and heading based on assumptions to be fulfilled during initialization by human beings. In our case we again profited from a motion less calibration phase. We assumed north to be straight ahead (yaxis) and we used the direction of the gvector measured as the direction of the zaxis.
In some applications such assumptions cannot be made, for example a ship will never be motionless enough. In such cases additional sensors must provide the necessary values.
Since the inevitable sensor errors result in unlimited growth of position and orientation errors, we tried to correct them with the introduction of adequate feedback mechanisms.
gvector: When assuming that we do not drive around in circles, we can assume that the gvector in the average points straight down. Thus we can constantly correct the orientation accordingly.
Compass: A compass is a very easy and cheap method to correct orientation errors around the zaxis.
Absolute Position: With navigation aids like radio navigation or GPS the position error can be corrected
Speed Information: Additional speed information like doppler radar or wheel evolutions can be used to correct speed errors of the INS.
An inertial navigation platform built of low cost sensors is basically possible. Although the achieved precision is sufficient for simple orientation tracking, further improvements have to be realized in algorithms and sensor to get also sufficient accuracy for position measurement. At the moment, getting accurate data of the current position is impossible due to the limited precision of the sensors. Our system needs at least an increase in sensor precision of a factor of 10 in both rotational and acceleration sensors.
Corrections of systematic errors such as temperature drift, nonlinearities, and sensitivity deviations can lead to significant improvements in overall system performance. With the aid of adequate feedback mechanisms (gvector, GPS position) and signal processing algorithms (average building, kalman filtering) further improvements in precision can be achieved.
 LowBudget INS.pdfOur complete thesis report is available here: (pdf format, german only)
C. F. Donnell et al., Inertial Navigation, Analysis and Design, McGrawHill, 1964
D. H. Titterton and J. L. Weston, Strapdown Inertial Navigation Technology, Peter Peregrinus Ltd., 1997
Anthony Lawrence, Modern Inertial Technology, Springer Verlag, 1993
E. Nebot and H. DurrantWhyte, Inertial Calibration and Alignment of an Inertial Navigation, in M2VIP'97, 1997, IEEE Press
E. Nebot, S. Sukkarieh, H. DurrantWhyte, Inertial Navigation aided with GPS Information, in M2VIP'97, 1997, IEEE Press

