  Inertial sensors based on micro-electromechanical systems (MEMS) technology,
such as accelerometers and angular rate sensors, are cost-effective solutions
used in inertial navigation systems in a broad spectrum of applications that
estimate position, velocity and orientation of a system with respect to an
inertial reference frame. The task of an orientation filter is to compute an
optimal solution for the attitude state, consisting of roll, pitch and yaw,
through the fusion of angular rate, accelerometer, and magnetometer
measurements. The aim of this paper is threefold: first, it serves researchers
and practitioners in the signal processing community seeking the most
appropriate attitude estimators that fulfills their needs, shedding light on
the drawbacks and the advantages of a wide variety of designs. Second, it
serves as a survey and tutorial for existing estimator designs in the
literature, assessing their design aspects and components, and dissecting their
hidden details for the benefit of researchers. Third, a comprehensive list of
algorithms is discussed for a fully functional inertial navigation system,
starting from the navigation equations and ending with the filter equations,
keeping in mind their suitability for power limited embedded processors. The
source code of all algorithms is published, with the aim of it being an
out-of-box solution for researchers in the field. The reader will take away the
following concepts from this article: understand the key concepts of an
inertial navigation system; be able to implement and test a complete stand
alone solution; be able to evaluate and understand different algorithms;
understand the trade-offs between different filter architectures and
techniques; and understand efficient embedded processing techniques, trends and
opportunities.
