<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s110403816</article-id>
<article-id pub-id-type="publisher-id">sensors-11-03816</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Gain-Scheduled Complementary Filter Design for a MEMS Based Attitude and Heading Reference System</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Yoo</surname><given-names>Tae Suk</given-names></name><xref ref-type="aff" rid="af1-sensors-11-03816"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Hong</surname><given-names>Sung Kyung</given-names></name><xref ref-type="aff" rid="af1-sensors-11-03816"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-11-03816">*</xref></contrib>
<contrib contrib-type="author">
<name><surname>Yoon</surname><given-names>Hyok Min</given-names></name><xref ref-type="aff" rid="af2-sensors-11-03816"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Park</surname><given-names>Sungsu</given-names></name><xref ref-type="aff" rid="af1-sensors-11-03816"><sup>1</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-11-03816">
<label>1</label> Department of Aerospace Engineering, Sejong University, Seoul 143-747, Korea; E-Mail: <email>62187390@hanmail.net</email> (T.S.Y.)</aff>
<aff id="af2-sensors-11-03816">
<label>2</label> Youngpoong Electronics Co., Changwon, Kyungnam 641-847, Korea; E-Mail: <email>hmyoon@ypelec.co.kr</email></aff>
<author-notes>
<corresp id="c1-sensors-11-03816">
<label>*</label> Author to whom correspondence should be addressed; E-Mail: <email>skhong@sejong.ac.kr</email>; Tel.: +82-2-3408-3772; Fax: +82-2-3408-4333.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2011</year></pub-date>
<pub-date pub-type="epub">
<day>29</day>
<month>3</month>
<year>2011</year></pub-date>
<volume>11</volume>
<issue>4</issue>
<fpage>3816</fpage>
<lpage>3830</lpage>
<history>
<date date-type="received">
<day>20</day>
<month>2</month>
<year>2011</year></date>
<date date-type="rev-recd">
<day>24</day>
<month>3</month>
<year>2011</year></date>
<date date-type="accepted">
<day>26</day>
<month>3</month>
<year>2011</year></date></history>
<permissions>
<copyright-statement>© 2011 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2011</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>This paper describes a robust and simple algorithm for an attitude and heading reference system (AHRS) based on low-cost MEMS inertial and magnetic sensors. The proposed approach relies on a gain-scheduled complementary filter, augmented by an acceleration-based switching architecture to yield robust performance, even when the vehicle is subject to strong accelerations. Experimental results are provided for a road captive test during which the vehicle dynamics are in high-acceleration mode and the performance of the proposed filter is evaluated against the output from a conventional linear complementary filter.</p></abstract>
<kwd-group>
<kwd>AHRS</kwd>
<kwd>complementary filter</kwd>
<kwd>gain-scheduling</kwd>
<kwd>inertial sensor</kwd>
<kwd>magnetic sensor</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Aircraft, especially autonomous Unmanned Aerial Vehicles (UAVs), need to know their pose estimation for the lowest control and stabilization loops. When cost or weight is an issue, a low-cost Attitude and Heading Reference System (AHRS)—relying on MEMS inertial (gyroscopes and accelerometers) and magnetic sensors—plays an important role providing the vehicle’s orientation information relative to the inertial frame. In this respect, it has been of interest to develop robust and simple algorithms for reliable MEMS AHRS for the small scale embedded processors used in UAV avionic systems [<xref ref-type="bibr" rid="b1-sensors-11-03816">1</xref>–<xref ref-type="bibr" rid="b9-sensors-11-03816">9</xref>].</p>
<p>The two methods that are commonly used are Extended Kalman Filtering (EKF) or some form of constant gain state observer, often termed a complementary filter due to its frequency filtering properties for linear systems. Extended Kalman Filtering has been studied for a range of aerospace applications. Such filters, however, are computationally demanding and difficult to apply robustly [<xref ref-type="bibr" rid="b1-sensors-11-03816">1</xref>–<xref ref-type="bibr" rid="b3-sensors-11-03816">3</xref>]. In practice, many applications use simple linear single-input single-output (SISO) complementary filters. In recent work, a number of authors have developed nonlinear analogs of SISO filters for attitude estimation [<xref ref-type="bibr" rid="b4-sensors-11-03816">4</xref>–<xref ref-type="bibr" rid="b9-sensors-11-03816">9</xref>]. They approximate the accelerometer measurements via the measurement of gravity, so that a ‘weak acceleration’ assumption is made. Such fusion may allow obtaining a more accurate and less noisy attitude and heading estimation thanks to the sensor’s complementary characteristics. The filter fails, however, when vehicle dynamics are sufficiently high enough that the accelerometer output no longer provides a good estimate of the gravitational direction. This is particularly so when a UAV is circling for an extended period since the accelerometer, in this case, will detect not only gravitational acceleration but also centrifugal forces, resulting in an incorrect attitude determination [<xref ref-type="bibr" rid="b10-sensors-11-03816">10</xref>].</p>
<p>In this paper, to cope with these situations, a gain-scheduled complementary filter, augmented by an acceleration-based switching architecture is proposed that yields robust performance, even when the vehicle is subject to strong acceleration. The gains of the proposed scheme are automatically tuned based on the system dynamic mode (non-acceleration, low-acceleration, and high acceleration mode) sensed by the accelerometers. Hence the system produces robust estimates of vehicle attitude and heading and removes the gyros bias that is a common source of drift error for both dynamic and stationary modes [<xref ref-type="bibr" rid="b11-sensors-11-03816">11</xref>,<xref ref-type="bibr" rid="b12-sensors-11-03816">12</xref>]. The ADIS16405 MEMS IMU (Inertial Measurement Unit) with magnetic sensors [<xref ref-type="bibr" rid="b13-sensors-11-03816">13</xref>] from Analog Devices Inc. was selected for this research. The AHRS with a resulting filter structure is implemented in a real-time DSP (Digital Signal Processor) within a 5 cm × 4 cm × 3 cm size unit. Measurements of inertial sensors’ output obtained during the experimental road captive test are used for implementation of the estimation scheme. The estimation results were compared with the measurements from the on-board high-precision vertical gyro as it was used as the reference standard or ‘truth model’ for this analysis. This comparison explicitly demonstrates that more accurate AHRS performance can be achieved through the proposed switching architecture based integrated filtering estimator, even though low-cost MEMS inertial and magnetic sensors are used.</p></sec>
<sec>
<label>2.</label>
<title>Attitude and Heading Determination from Inertial and Magnetic Sensors</title>
<sec sec-type="methods">
<label>2.1.</label>
<title>Experimental Road Captive Test Data</title>
<p>During the entire scheme investigation process in this paper, a set of road captive test data is used. As shown in <xref ref-type="fig" rid="f1-sensors-11-03816">Figure 1</xref>, the test runs were performed in a spiral structured parking building and the test scenario comprised the following procedures: (1) start (to induce linear acceleration), (2) spiral up (centrifugal acceleration), (3) forward (linear acceleration), (4) backward (linear acceleration), (5) spiral down (centrifugal acceleration), (6) forward (linear acceleration), and stop.</p>
<p>The commercial off-the-shelf IMU ADIS16405 used in the experiment is composed of three accelerometers, three gyros and three magnetometers with digital interface outputs. This inertial unit provides measurements of linear accelerations, angular rates, and the Earth’s magnetic fields for each body axis. <xref ref-type="table" rid="t1-sensors-11-03816">Table 1</xref> summarizes the basic specifications of each sensor. An AHRS prototype (<xref ref-type="fig" rid="f2-sensors-11-03816">Figure 2</xref>) was made using a DSP processor for the proposed estimator algorithm. The data acquisition was performed through a RS-232 communication serial port.</p>
<p>The measurements of accelerations (<italic>a<sub>x</sub></italic>, <italic>a<sub>y</sub></italic>, <italic>a<sub>z</sub></italic>), angular rates (<italic>p</italic>, <italic>q</italic>, <italic>r</italic>), and magnetic fields (<italic>m<sub>x</sub></italic>, <italic>m<sub>y</sub></italic>, <italic>m<sub>z</sub></italic>) during the road captive test are shown in <xref ref-type="fig" rid="f3-sensors-11-03816">Figure 3</xref>. The reference attitude and heading angles for this analysis obtained from the on-board vertical gyro are shown in <xref ref-type="fig" rid="f4-sensors-11-03816">Figure 4</xref>.</p></sec>
<sec>
<label>2.2.</label>
<title>Attitude and Heading Determination from Open-Loop Gyros</title>
<p>The roll, pitch and yaw rate (<italic>p</italic>, <italic>q</italic>, and <italic>r</italic> respectively) of the vehicle are measured using rate gyros with respect to its body axis system. The relationship between rate gyro output and time rate of the Euler angles can be described using the direction cosine matrices as follows:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>ϕ</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>θ</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>ψ</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mi> </mml:mi>
<mml:mo>=</mml:mo>
<mml:mi> </mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>p</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>q</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>r</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>ϕ</italic> is roll angle, <italic>θ</italic> is pitch angle, and <italic>ψ</italic> is yaw angle.</p>
<p>As a physical instrument, the rate gyro device also carries some errors such as axis misalignment, fixed bias, drift bias, fixed scale factor errors, asymmetric scale factor errors, and so on. The bias drift is one of the most serious errors deteriorating the accuracy of an AHRS. The bias drift, which shows normally nonlinear characteristics, causes the integration result to drift-off from the true attitude as a function of time and rapidly renders any calculations useless.</p>
<p>Euler angles obtained from the open-loop integration process of <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref> using first order Euler method of integration are illustrated in <xref ref-type="fig" rid="f5-sensors-11-03816">Figure 5</xref>. This result shows that without correction the bias errors creating wandering attitude angles and the gradual instability of the integration drifting.</p></sec>
<sec>
<label>2.3.</label>
<title>Attitude Determination from Open-Loop Accelerometers</title>
<p>Attitude angles <italic>ϕ</italic> and <italic>θ</italic> can also be obtained from a vehicle’s gravity vector. The following equation dictates a vehicle’s equation of motion in terms of specific forces (<italic>f<sub>x</sub></italic>, <italic>f<sub>y</sub></italic> and <italic>f<sub>z</sub></italic>), which are the accelerometers reading in the body axes:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>v</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi>w</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mi>w</mml:mi></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>v</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>w</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mi>u</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>v</mml:mi></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>p</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>q</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>r</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mi>r</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">pq</mml:mi>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mi>r</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">pr</mml:mi>
<mml:mo>+</mml:mo>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">pq</mml:mi>
<mml:mo>+</mml:mo>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">rq</mml:mi>
<mml:mo>−</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">pr</mml:mi>
<mml:mo>−</mml:mo>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">rq</mml:mi>
<mml:mo>+</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>q</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where, (<italic>u</italic>, <italic>v</italic>, <italic>w</italic>) and (<italic>l<sub>x</sub></italic>, <italic>l<sub>y</sub></italic>, <italic>l<sub>z</sub></italic>) are linear velocity components and accelerometer’s coordinates along each axis in the body frame with its origin at the center of gravity, respectively. When all of the parameters of <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>, (<italic>f<sub>x</sub></italic>, <italic>f<sub>y</sub></italic>, <italic>f<sub>z</sub></italic>, <italic>u̇</italic>, <italic>v̇</italic>, <italic>w̄</italic>, <italic>u</italic>, <italic>v</italic>, <italic>w</italic>, <italic>p</italic>, <italic>q</italic>, <italic>r</italic>), are measured in flight, near-true attitude angles can be determined. Normally, however, it is hard for a low-cost UAV to measure (<italic>v</italic>, <italic>w</italic>), and their time derivatives. Thus, with reduced sensor fit in the UAV, it is not easy to obtain true attitude measurements from accelerometers. Assuming that the UAV is driving steady-level states, linear acceleration terms integrate to zero over time and (<italic>p</italic>, <italic>q</italic>, <italic>r</italic>) can be neglected. With this simplification, <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> may be simplified as follows:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>ϕ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>atan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mo>,</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mtext>atan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>x</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:msup>
<mml:mrow/>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:msup>
<mml:mrow/>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>It should be noted that the attitude determination using <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> is true only for specific dynamic conditions such as steady level flight. If an aircraft is circling for an extended period, the accelerometer will not only detect gravitational acceleration, but also centrifugal forces, resulting in an incorrect attitude determination. In addition, the change in transient forward acceleration is another possible error source. This means that the attitude calculation from accelerometers is not valid under all dynamic conditions.</p>
<p>The attitude angles obtained from <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> are illustrated in <xref ref-type="fig" rid="f6-sensors-11-03816">Figure 6</xref> and compared with the reference from the vertical gyros. These results represent that the attitude from accelerometers tends to approximately follow the vertical gyro output in a steady level state, but shows large errors with noises and loose reliability under transient and high dynamic conditions.</p></sec>
<sec>
<label>2.4.</label>
<title>Heading Determination from Open-Loop Magnetometers</title>
<p>A standard three-axis magnetometer reads the magnetic field in an aircraft’s body axis system as (<italic>m<sub>x</sub></italic>, <italic>m<sub>y</sub></italic> and <italic>m<sub>z</sub></italic>). The magnetometer readings in relation to the Earth’s magnetic field vectors (<italic>m<sub>N</sub></italic>, <italic>m<sub>E</sub></italic> and <italic>m<sub>D</sub></italic>) arranged in North, East and Down are as follows:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mi>N</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mi>E</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mi>D</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p><xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> shows how <italic>ϕ</italic>, <italic>θ</italic>, and <italic>Ψ</italic> are related to a magnetometer’s reading and geomagnetic field vectors toward North, East and Down. The yaw angle <italic>ψ</italic> refers to true magnetic north can be produced after going through a certain calculation provided the results of attitude estimations, <italic>ϕ</italic> and <italic>θ</italic>.</p>
<p>Resolving the geomagnetic vector onto a local tangent plane where the <italic>x</italic>-axis towards the North Pole will put the geomagnetic vector toward East is equal to zero. Hence, <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> can be rearranged as:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mi>N</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi></mml:mrow>
<mml:mi>N</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ψ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mi> </mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>ϕ</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>x</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>y</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>hence, the division of first and second row gives:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>ψ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mtext>atan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>h</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>h</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where, <italic>X<sub>h</sub></italic> = <italic>m<sub>N</sub></italic> cos <italic>ψ</italic> and <italic>Y<sub>h</sub></italic> = <italic>m<sub>N</sub></italic> sin <italic>ψ</italic> represent the earth’s horizontal magnetic field components. Preserving the sign of the numerator and denominator of <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> and using the appropriate logical expressions will give heading angle information for all conditions of attitude and magnetometer readings from 0 to 2π.</p>
<p>The heading angles obtained from <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> with the actual reading of magnetic vector (<italic>m<sub>x</sub></italic>, <italic>m<sub>y</sub></italic> and <italic>m<sub>z</sub></italic>) and the vertical gyro information of <italic>ϕ</italic> and <italic>θ</italic> are illustrated in <xref ref-type="fig" rid="f7-sensors-11-03816">Figure 7</xref>. These results represent that the heading angle information from magnetometer tends to follow the reference output approximately in all test scenarios. However, the phase loss in high dynamic situations and the noisy conditions are shown in <xref ref-type="fig" rid="f7-sensors-11-03816">Figure 7</xref> of the expanded scale.</p></sec></sec>
<sec>
<label>3.</label>
<title>Conventional Linear Complementary Filter</title>
<p>To observe and compensate for gyro drift, a process called augmentation, termed a complementary filter due to its frequency filtering properties, is used. The basic idea of the complementary filtering AHRS is: (1) to combine the outputs of gyro and accelerometer (for attitude estimate <italic>ϕ</italic> and <italic>θ</italic>), and (2) to combine the outputs of the gyro and magnetometer (for heading estimate <italic>ψ</italic>) to obtain a good estimate of the orientation, and thereby compensating for the drift of the rate gyro and for the slow dynamics of the accelerometer and magnetometer. To fuse the signal, we designed conventional complementary filters for the heading and attitude estimation, respectively. After having identified the dynamics of all sensors, we tried several complementary filters and could select the best one for heading estimation. However, it is shown that the limitation of the accelerometer (see Section 2.3) renders the conventional linear complementary filter alone unsuitable for the estimate of the attitude of the UAV.</p>
<sec>
<label>3.1.</label>
<title>Filtering Structure</title>
<p><xref ref-type="fig" rid="f8-sensors-11-03816">Figure 8</xref> shows the conventional filtering estimator block diagram for the roll axis channel. A similar block diagram could also apply to the pitch and heading channel. The role of the estimator is to compare attitude (or heading) angles resulting from the integration of the gyros with the attitude angle products from the accelerometers (or with heading angle products from magnetometer). The error between <italic>ϕ<sub>m</sub></italic> and <italic>ϕ<sub>a</sub></italic> is fed-back through a proportional and integral controller with a pair of estimator gains <italic>K<sub>p</sub></italic> and <italic>K<sub>i</sub></italic>.</p>
<p>The mathematical relation of the estimated attitude (<italic>ϕ<sub>m</sub></italic>), the attitude products from the accelerometers (<italic>ϕ<sub>a</sub></italic>), and the attitude rate products from the gyros (<italic>ϕ̇<sub>g</sub></italic>) in the Laplace form (with Laplace operator <italic>s</italic>) are as follows:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>s</mml:mi></mml:mfrac>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>ϕ</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow>
<mml:mi>g</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mi>s</mml:mi></mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>m</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>s</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>m</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The error equation of the estimated attitude yields:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>ϕ</mml:mi>
<mml:mo>˙</mml:mo></mml:mover></mml:mrow>
<mml:mi>g</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>s</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>Applying the final value theorem to <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>, we can see that the estimated attitude error converges to the error of the angle calculated from accelerometer:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math display="block">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mtext>lim</mml:mtext></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>→</mml:mo>
<mml:mo>∞</mml:mo></mml:mrow></mml:munder>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ϕ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula></p>
<p>The controller gains, <italic>K<sub>p</sub></italic> and <italic>K<sub>i</sub></italic>, are chosen by relating them to the cut-off frequency (<italic>ω</italic>) and damping ratio (<italic>ς</italic>) of the estimator as:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>ω</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mo>,</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>ς</mml:mi>
<mml:mi>ω</mml:mi></mml:mrow></mml:math></disp-formula></p>
<p>During the investigation, the damping ratio <italic>ς</italic> is fixed to a suitable value of 0.707 to provide a good transient response. Hence:
<disp-formula id="FD11">
<label>(11)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mn>2</mml:mn></mml:msqrt>
<mml:mi>ω</mml:mi></mml:mrow></mml:math></disp-formula></p>
<p>Therefore, the system is only characterized by the cut-off frequency, and this should be chosen appropriately to optimize the process.</p></sec>
<sec sec-type="methods">
<label>3.2.</label>
<title>Design of the Complementary Filter for Heading Estimate</title>
<p>As noted in Section 2.4, the magnetometer shows phase loss under a high dynamic condition. Thus, the basic requirements for the filter are: (1) to exhibit constant amplification and small phase loss up to frequencies well above the cut-off frequency of the magnetometer and (2) to use magnetometer in the widest possible ranges of frequencies in order to keep the sensitivity to offset of the rate gyro at a minimum.</p>
<p>To decouple the effectiveness of the heading filter with attitude ones, the attitude information (<italic>ϕ</italic> and <italic>θ</italic>) that is needed to go through a certain calculation of <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> is provided by the reference vertical gyro. After having identified the dynamics of all sensors, we tried several complementary filters and could select the best one. The estimator’s cut-off frequency had been set at 0.1 rad/s. The heading angles obtained from the filtering estimator is illustrated in <xref ref-type="fig" rid="f9-sensors-11-03816">Figure 9</xref>. These results represent that the heading estimates tend to follow the reference output satisfactorily in all conditions, showing the noises and phase losses of magnetometer are minimized.</p></sec>
<sec>
<label>3.3.</label>
<title>Problems of the Linear Complementary Filter for Attitude Estimate</title>
<p>Variations in the estimator’s cut-off frequency (natural frequency) had been tested at 1 rad/s and 0.05 rad/s. The estimation results are compared with the vertical gyro outputs in <xref ref-type="fig" rid="f10-sensors-11-03816">Figure 10</xref>. When the cut-off frequency is 1 rad/s (a relatively high frequency), the estimation angles converge well at the steady state, but not well during high dynamic motion. Though the cut-off frequency is set to a lower frequency, 0.05 rad/s, the estimation results are not improved on the whole.</p>
<p>As the cut-off frequency goes lower, the high frequency dynamic characteristic of the filter becomes better, but the low frequency one becomes worse. So, there should be an optimization problem of selecting a cut-off frequency value to improve the performance of the estimation filter over a wide range of dynamic conditions. However, it seems quite difficult to achieve acceptable performance under all dynamic conditions using this fixed gains linear filtering structure, especially with low-cost (high bias drift) MEMS sensors. To surmount these typical problems and drawbacks, it is necessary to expand the current attitude estimation algorithm so as to have an adaptive function under varying flight dynamics.</p></sec></sec>
<sec>
<label>4.</label>
<title>Gain-Scheduled Complementary Filter for Attitude Estimate</title>
<p>To overcome the typical problems and drawbacks of the fixed gain filtering structure for the attitude estimate presented in Section 3.3, a gain-scheduled complementary filter is considered. By using switching architecture inference, each parameter of the filtering estimator of the pitch and roll channels is determined adaptively under varying flight dynamics. For this solution, switching logics are based on system dynamics sensed by the accelerometers to yield optimal performance.</p>
<sec>
<label>4.1.</label>
<title>Tuning of Parameters Based on Switching Logic</title>
<p><xref ref-type="fig" rid="f11-sensors-11-03816">Figure 11</xref> shows a block diagram for the gain-scheduled attitude filtering estimator augmented by switching logic for roll axis channel. The same block diagram could also apply to the pitch axis channel. The approach taken here is to exploit switching logic to generate proper parameters of the filtering estimator according to varying dynamic conditions. As seen earlier in <xref ref-type="disp-formula" rid="FD10">Equations (10)</xref> and <xref ref-type="disp-formula" rid="FD11">(11)</xref>, the parameters are determined only by the cut-off frequency. Using simulation study results, the nominal cut-off frequencies are set at 0.05 rad/s and 0.01 rad/s for roll and pitch channel, respectively.</p>
<p>In the proposed scheme, the cut-off frequency is switched to the predetermined value according to the acceleration levels (non-acceleration, low-acceleration, and high-acceleration mode) determined by the scalar dynamic acceleration <italic>α</italic>(<italic>k</italic>), defined as:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="true">|</mml:mo>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>x</mml:mi></mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>y</mml:mi></mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt>
<mml:mo>−</mml:mo>
<mml:mi>g</mml:mi></mml:mrow>
<mml:mo stretchy="true">|</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The threshold values of the scalar dynamic acceleration <italic>α</italic>(<italic>k</italic>) to identify the acceleration level are extracted experimentally based on the characteristics of gyros and accelerometers and the design requirements of the applications. The switching logic for the filter gain has the following scenarios:
<list list-type="bullet">
<list-item>
<p>Non-acceleration mode: In this mode, <italic>α</italic>(<italic>k</italic>) &lt; 0.015 g, the accelerometer measurement of the gravity has observability and yield good estimates of the attitude. To assign more weighting to accelerometers, the cut-off frequency is set at 0.1 rad/s for both roll and pitch axes.</p></list-item>
<list-item>
<p>Low-acceleration mode: In this mode, 0.015 g &lt; <italic>α</italic>(<italic>k</italic>) &lt; 5 g, the uncertainty of the acceleration for the attitude estimation should be considered. The nominal cut-off frequencies are set at 0.05 rad/s and 0.01 rad/s for roll and pitch channel, respectively.</p></list-item>
<list-item>
<p>High-acceleration mode: In this mode, 5 g &gt; <italic>α</italic>(<italic>k</italic>), the system is in high dynamics, and the attitude estimation based on accelerometer measures of the gravity is far from accurate. Therefore, the cut-off frequency is set to 0 such that the accelerometer feedback was turned off; hence the weighting is fully imposed to the gyros.</p></list-item></list></p></sec>
<sec>
<label>4.2.</label>
<title>Experimental Result</title>
<p>The proposed acceleration based switching architecture has been tested in the same situations with conventional estimator in Section 2. The measurements of low-cost MEMS inertial and magnetic sensors output obtained during the experimental road captive test are used for the implementation of the estimation scheme. The time responses for roll, pitch, and heading estimates are plotted in <xref ref-type="fig" rid="f12-sensors-11-03816">Figure 12</xref>. The results obtained from the high-precision vertical gyro are also presented for comparison. The error between reference and filtering is provided in <xref ref-type="fig" rid="f13-sensors-11-03816">Figure 13</xref>.</p>
<p>It is obvious that these results are much better than the conventional filtering estimator results shown in <xref ref-type="fig" rid="f9-sensors-11-03816">Figure 9</xref>. In order to verify the effectiveness of the estimation, the levels of agreement between the ‘truth model’ and the scheme results are calculated. The calculated errors based upon a simple root mean square (RMS) method are 0.2214, 0.6720, 2.0788 deg for roll, pitch, and heading, respectively. These performances are very encouraging since the estimation process was performed with low-cost MEMS inertial and magnetic sensors with a simple gain-scheduled complementary filter. <xref ref-type="fig" rid="f14-sensors-11-03816">Figure 14</xref> shows the gains switched online as a function of the scalar dynamic acceleration <italic>α</italic>(<italic>k</italic>).</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>This paper describes a robust and simple algorithm for an attitude and heading reference system (AHRS) based on low-cost MEMS inertial and magnetic sensors. The proposed AHRS scheme uses acceleration based switch rules and reasoning to determine the filtering estimator parameters by adjusting the cut-off frequency. Although a rule of thumb for choosing the ranges for <italic>α</italic>(<italic>k</italic>) identifying acceleration level is obtained experimentally, it is still possible to make further performance improvements by fine tuning the ranges as well as by adjusting cut-off frequencies for each level. The proposed scheme has shown a good damping characteristic for the drift errors from the gyro measurement as well as the noise corruption from the accelerometer measurement in all dynamic conditions. The scheme gave an accuracy of better than 0.2214 deg in roll, 0.6720 deg in pitch and 2.0788 deg in heading compared to the ‘truth model’ of the vertical gyro reading. This performance is very encouraging since this indicates that the high accuracy AHRS should be possible with low-cost MEMS inertial and magnetic sensors with innovative computational methods.</p></sec></body>
<back>
<ack>
<p>This research was supported by a grant (07KLSGC03) from Cutting-edge Urban Development—Korean Land Spatialization Research Project funded by Ministry of Land, Transport and Maritime Affairs of the Korean Government.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-11-03816"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Choukroun</surname><given-names>D</given-names></name><name><surname>Bar-Itzhack</surname><given-names>IY</given-names></name><name><surname>Oshman</surname><given-names>Y</given-names></name></person-group><article-title>Novel quarternion Kalman filter</article-title><source>IEEE Trans. Aerosp. Electron. Syst</source><year>2006</year><volume>42</volume><fpage>174</fpage><lpage>190</lpage><pub-id pub-id-type="doi">10.1109/TAES.2006.1603413</pub-id></citation></ref>
<ref id="b2-sensors-11-03816"><label>2.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kang</surname><given-names>CW</given-names></name><name><surname>Park</surname><given-names>CG</given-names></name></person-group><article-title>Attitude estimation with accelerometers and gyros using fuzzy tuned Kalman filter</article-title><conf-name>Proceedings of the European Control Conference</conf-name><conf-loc>Budapest, Hungary</conf-loc><conf-date>23–26 August 2009</conf-date><fpage>3713</fpage><lpage>3718</lpage></citation></ref>
<ref id="b3-sensors-11-03816"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Li</surname><given-names>Y</given-names></name><name><surname>Mahmoud</surname><given-names>E</given-names></name><name><surname>Anthony</surname><given-names>C</given-names></name></person-group><article-title>Andrew,G.D. Performance evaluation of AHRS Kalman filter for MojoRTK system</article-title><conf-name>Proceedings of International Global Navigation Satellite Systems Society IGNSS Symposium</conf-name><conf-loc>Queensland, Australia</conf-loc><conf-date>1–3 December 2009</conf-date></citation></ref>
<ref id="b4-sensors-11-03816"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>M</given-names></name><name><surname>Yang</surname><given-names>Y</given-names></name><name><surname>Ronald</surname><given-names>RH</given-names></name><name><surname>Zhang</surname><given-names>Y</given-names></name></person-group><article-title>Adaptive filter for a miniature MEMS based attitude and heading reference system</article-title><conf-name>Proceedings of IEEE Position Location and Navigation Symposium</conf-name><conf-loc>Monterey, CA, USA</conf-loc><conf-date>26–29 April 2004</conf-date><fpage>193</fpage><lpage>200</lpage></citation></ref>
<ref id="b5-sensors-11-03816"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Demoz</surname><given-names>GE</given-names></name></person-group><article-title>A low-cost GPS/inertial Attitude Heading Reference System (AHRS) for general aviation applications</article-title><conf-name>Proceedings of Position Location and Navigation Symposium</conf-name><conf-loc>Palm Springs, CA, USA</conf-loc><conf-date>20–23 April 1998</conf-date><fpage>518</fpage><lpage>525</lpage></citation></ref>
<ref id="b6-sensors-11-03816"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Euston</surname><given-names>M</given-names></name><name><surname>Coote</surname><given-names>P</given-names></name><name><surname>Mahony</surname><given-names>R</given-names></name><name><surname>Kim</surname><given-names>J</given-names></name><name><surname>Hamel</surname><given-names>T</given-names></name></person-group><article-title>A complementary filter for attitude estimation of a fixed-wing UAV</article-title><conf-name>Proceedings of IEEE/RSJ International Conference on Intelligent Robots and Systems</conf-name><publisher-name>Acropolis Convention Center</publisher-name><publisher-loc>Nice, France</publisher-loc><conf-date>22–26 September 2008</conf-date><fpage>340</fpage><lpage>345</lpage></citation></ref>
<ref id="b7-sensors-11-03816"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Demoz</surname><given-names>GE</given-names></name></person-group><article-title>Design of multi-sensor attitude determination systems</article-title><source>IEEE Trans. Aerosp. Electron. Syst</source><year>2004</year><volume>40</volume><fpage>627</fpage><lpage>649</lpage><pub-id pub-id-type="doi">10.1109/TAES.2004.1310010</pub-id></citation></ref>
<ref id="b8-sensors-11-03816"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>John</surname><given-names>LC</given-names></name><name><surname>Yang</surname><given-names>C</given-names></name></person-group><article-title>Nonlinear attitude filtering methods</article-title><source>J. Guid. Contr. Dynam</source><year>2007</year><volume>30</volume><fpage>12</fpage><lpage>28</lpage><pub-id pub-id-type="doi">10.2514/1.22452</pub-id></citation></ref>
<ref id="b9-sensors-11-03816"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Baerveldt</surname><given-names>AJ</given-names></name><name><surname>Klang</surname><given-names>R</given-names></name></person-group><article-title>A low-cost and low-weight attitude estimation system for an autonomous helicopter</article-title><conf-name>Proceedings of IEEE International Conference on Intelligent Engineering Systems</conf-name><conf-loc>Budapest, Hungary</conf-loc><conf-date>15–17 September 1997</conf-date><fpage>391</fpage><lpage>395</lpage></citation></ref>
<ref id="b10-sensors-11-03816"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hong</surname><given-names>SK</given-names></name></person-group><article-title>Fuzzy logic based closed-loop strapdown attitude system for unmanned aerial vehicle (UAV)</article-title><source>Sens. Actuat. A Phys</source><year>2003</year><volume>107</volume><fpage>109</fpage><lpage>118</lpage><pub-id pub-id-type="doi">10.1016/S0924-4247(03)00353-4</pub-id></citation></ref>
<ref id="b11-sensors-11-03816"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hong</surname><given-names>SK</given-names></name></person-group><article-title>Compensation of nonlinear thermal bias drift of Resonant Rate Sensor (RRS) using fuzzy logic</article-title><source>Sens. Actuat. A Phys</source><year>1999</year><volume>78</volume><fpage>143</fpage><lpage>148</lpage><pub-id pub-id-type="doi">10.1016/S0924-4247(99)00241-1</pub-id></citation></ref>
<ref id="b12-sensors-11-03816"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hong</surname><given-names>SK</given-names></name></person-group><article-title>Minimal-drift heading measurement using a MEMS gyro for indoor mobile robots</article-title><source>Sensors</source><year>2008</year><volume>8</volume><fpage>7287</fpage><lpage>7299</lpage><pub-id pub-id-type="doi">10.3390/s8117287</pub-id></citation></ref>
<ref id="b13-sensors-11-03816"><label>13.</label><citation citation-type="book"><source>Tri-Axis Inertial sensor with Magnetometer, ADIS16405;</source><publisher-name>Analog Devices</publisher-name><publisher-loc>Norwood, MA, USA</publisher-loc><year>2009</year></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Table</title>
<fig id="f1-sensors-11-03816" position="float">
<label>Figure 1.</label>
<caption>
<p>Test Scenario.</p></caption>
<graphic xlink:href="sensors-11-03816f1.gif"/></fig>
<fig id="f2-sensors-11-03816" position="float">
<label>Figure 2.</label>
<caption>
<p>ADIS16405 DSP Module.</p></caption>
<graphic xlink:href="sensors-11-03816f2.gif"/></fig>
<fig id="f3-sensors-11-03816" position="float">
<label>Figure 3.</label>
<caption>
<p>Raw data from ADIS16405.</p></caption>
<graphic xlink:href="sensors-11-03816f3.gif"/></fig>
<fig id="f4-sensors-11-03816" position="float">
<label>Figure 4.</label>
<caption>
<p>Attitude and heading angles from the on-board vertical gyro (reference standard).</p></caption>
<graphic xlink:href="sensors-11-03816f4.gif"/></fig>
<fig id="f5-sensors-11-03816" position="float">
<label>Figure 5.</label>
<caption>
<p>Attitude and heading determination from gyro measurement only.</p></caption>
<graphic xlink:href="sensors-11-03816f5.gif"/></fig>
<fig id="f6-sensors-11-03816" position="float">
<label>Figure 6.</label>
<caption>
<p>Attitude determination from accelerometer measurement only.</p></caption>
<graphic xlink:href="sensors-11-03816f6.gif"/></fig>
<fig id="f7-sensors-11-03816" position="float">
<label>Figure 7.</label>
<caption>
<p>Heading angles calculated from magnetometer measurements.</p></caption>
<graphic xlink:href="sensors-11-03816f7.gif"/></fig>
<fig id="f8-sensors-11-03816" position="float">
<label>Figure 8.</label>
<caption>
<p>Conventional filtering estimator block diagram for roll axis channel.</p></caption>
<graphic xlink:href="sensors-11-03816f8.gif"/></fig>
<fig id="f9-sensors-11-03816" position="float">
<label>Figure 9.</label>
<caption>
<p>Heading angles from the filtering estimator.</p></caption>
<graphic xlink:href="sensors-11-03816f9.gif"/></fig>
<fig id="f10-sensors-11-03816" position="float">
<label>Figure 10.</label>
<caption>
<p>Effects of estimation filter cut-off frequency on estimated attitude angles. <bold>(a)</bold> When cut-off frequency = 1 rad/s. <bold>(b)</bold> when cut-off frequency = 0.05 rad/s.</p></caption>
<graphic xlink:href="sensors-11-03816f10.gif"/></fig>
<fig id="f11-sensors-11-03816" position="float">
<label>Figure 11.</label>
<caption>
<p>Gain-scheduled complementary filter for attitude estimate.</p></caption>
<graphic xlink:href="sensors-11-03816f11.gif"/></fig>
<fig id="f12-sensors-11-03816" position="float">
<label>Figure 12.</label>
<caption>
<p>Response of the acceleration based switching architecture AHRS.</p></caption>
<graphic xlink:href="sensors-11-03816f12.gif"/></fig>
<fig id="f13-sensors-11-03816" position="float">
<label>Figure 13.</label>
<caption>
<p>The error between reference and filtering.</p></caption>
<graphic xlink:href="sensors-11-03816f13.gif"/></fig>
<fig id="f14-sensors-11-03816" position="float">
<label>Figure 14.</label>
<caption>
<p>Gains switched online as a function of the scalar dynamic acceleration <italic>α</italic>(<italic>k</italic>).</p></caption>
<graphic xlink:href="sensors-11-03816f14.gif"/></fig>
<table-wrap id="t1-sensors-11-03816" position="float">
<label>Table 1.</label>
<caption>
<p>System Specifications (ADIS16405).</p></caption>
<table frame="below" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"/>
<th align="center" valign="middle" colspan="3">
<hr/></th></tr>
<tr>
<th align="center" valign="middle"/>
<th align="center" valign="middle"><bold>Gyro</bold></th>
<th align="center" valign="middle"><bold>Accelerometer</bold></th>
<th align="center" valign="middle"><bold>Magnetometer</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle">Range : X, Y, Z</td>
<td align="center" valign="middle">± 350(deg/s)</td>
<td align="center" valign="middle">± 18(g)</td>
<td align="center" valign="middle">± 3.5(gauss)</td></tr>
<tr>
<td align="center" valign="middle">Sensitivity</td>
<td align="center" valign="middle">0.05(°/sec/LSB)</td>
<td align="center" valign="middle">3.33(mg/LSB)</td>
<td align="center" valign="middle">0.5(mgauss/LSB)</td></tr>
<tr>
<td align="center" valign="middle">Bias Stability</td>
<td align="center" valign="middle">35(deg/h)</td>
<td align="center" valign="middle">-</td>
<td align="center" valign="middle">-</td></tr>
<tr>
<td align="center" valign="middle">Angle/Velocity Random Walk</td>
<td align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mn>2.0</mml:mn>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>deg</mml:mtext>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mo>/</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">hr</mml:mi></mml:mrow></mml:msqrt>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mn>0.2</mml:mn>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mo>/</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">hr</mml:mi></mml:mrow></mml:msqrt>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td align="center" valign="middle">-</td></tr></tbody></table></table-wrap></sec></back></article>
