IEEE Robotics & Automation Magazine - September 2012 - 39

where wk ¼ ½wx, k , wa, k , wb, k ŠT is process noise. The nonlinear measurement model is (we omit time index k for
notational simplicity)
3 2
3
p
p
6 v 7 6
7
v
7 6
7
zk ¼ h(xk ) þ vk ¼ 6
4 mb 5 ¼ 4 RT (q)me 5,
eb
hb
ÀPz

∧
θ

yu

Gyroscope

2

where h^ denotes the estimate of h and kp is a gain
that determines crossover frequency. The complementary
filter described in (5) assumes that there is no steady-state
estimation error. However, in practice, the gyro bias varies
over time. To compensate for this, an integrator
[Figure 5(b)] is added to obtain the following:
_
^
h^ ¼ yu À ^b þ kp (yx À h),
^
^b_ ¼ ÀkI (yx À h):

(6)

~ ¼ 1=2(R
~ ÀR
~ T ) and
where pa (R)
^
~
R, R 2 SO(3) are attitude estimate
and estimate error, respectively, and
the vex operator is the inverse operation of a skew-symmetric matrix.

Gyroscope

yu

∧
θ
Angle

-

∧
θ

+
∧
- b
1
s
∧
b
Ki -

+
Kp

C(s)

yx +

Accelerometer

-

Figure 5. Complementary filter blends two different sensors that
have different frequency responses [21]. (a) Complementary filter
without bias compensation and (b) complementary filter with
bias compensation.

Ry is the rotation matrix reconstructed using roll and pitch
measured from the accelerometer. Xy is the measurement
from the three-axis gyroscope. Because R has to satisfy the
constraint RT R ¼ I, the computation load becomes an
issue in implementing this on an embedded system. For
this, in [22], the filter based on quaternion is provided.
Arducopter, Multiwii, and Aeroquad have implemented
this algorithm with the rotation matrix representation, and
the Paparazzi project provides both rotation matrix and
quaternion representations.
We evaluated the nonlinear complementary filters (NCFs)
on the SO(3) group using a Vicon motion capture system,
which gives accurate ground-truth measurements. The attitude computed by the flight controller was sent to the GCS
by an XBee 2.4 GHz transceiver. Attitude estimates of the
quadrotor are shown in Figure 7, which suggests that the attitude computed by the algorithm is accurate and reliable.

(7)

Nonlinear Complementary Filters on the SO(3) Group
An LCF is extended to the nonlinear SO(3) group [22] (Figure 6). The final form of the filter with bias estimate is given by
^_ ¼ R(X
^ y À ^b þ k) 3
R
(8)
^b_ ¼ ÀkI k, ^b(0) ¼ ^b0
(9)
T
~
~ ¼R
^ Ry , (10)
R
k ¼ vex(pa (R)),

yx +

Accelerometer

(5)

1
s

C(s)

where mb is the measurement of the magnetic field of the
earth me in body frame, hb is the height measured by the barometric sensor reading Pz , and vk is the measurement noise.
The states are estimated by the standard EKF algorithm
and measurements from accelerometers, gyroscopes,
magnetometers, GPS, and barometer are fused to estimate
the states.

_
^
h^ ¼ yu þ kp (yx À h),

∧
θ
Angle

Kp

(4)

Linear Complementary Filter
The Mikrokopter project implements the linear complementary filter (LCF) and is shown in Figure 5 on each axis
of the accelerometer and gyroscope. It is designed to fuse
multiple independent noisy measurements of the same
signal that have complementary spectral characteristics.
The details of complementary filters can be found in [21]
and [22].
Let yu be the rate measurement of the angle h and yx the
angle measured by accelerometer. The complementary filter to estimate the angle h is given by

∧
θ
1
s

Controllers
It is well known that the open-loop rotational dynamics of
a quadrotor are unstable as studied in [23]. The identified
model reveals that poles are located in the right-half plane

Ωy
Ry

R^ TRy

∼

R

∼

∼

π(R)

k

-kpπ(R)

^
R^ = RA

R^

R^ T
Figure 6. NCF on SO(3) group [22].

SEPTEMBER 2012

*

IEEE ROBOTICS & AUTOMATION MAGAZINE

*

39



Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - September 2012

IEEE Robotics & Automation Magazine - September 2012 - Cover1
IEEE Robotics & Automation Magazine - September 2012 - Cover2
IEEE Robotics & Automation Magazine - September 2012 - 1
IEEE Robotics & Automation Magazine - September 2012 - 2
IEEE Robotics & Automation Magazine - September 2012 - 3
IEEE Robotics & Automation Magazine - September 2012 - 4
IEEE Robotics & Automation Magazine - September 2012 - 5
IEEE Robotics & Automation Magazine - September 2012 - 6
IEEE Robotics & Automation Magazine - September 2012 - 7
IEEE Robotics & Automation Magazine - September 2012 - 8
IEEE Robotics & Automation Magazine - September 2012 - 9
IEEE Robotics & Automation Magazine - September 2012 - 10
IEEE Robotics & Automation Magazine - September 2012 - 11
IEEE Robotics & Automation Magazine - September 2012 - 12
IEEE Robotics & Automation Magazine - September 2012 - 13
IEEE Robotics & Automation Magazine - September 2012 - 14
IEEE Robotics & Automation Magazine - September 2012 - 15
IEEE Robotics & Automation Magazine - September 2012 - 16
IEEE Robotics & Automation Magazine - September 2012 - 17
IEEE Robotics & Automation Magazine - September 2012 - 18
IEEE Robotics & Automation Magazine - September 2012 - 19
IEEE Robotics & Automation Magazine - September 2012 - 20
IEEE Robotics & Automation Magazine - September 2012 - 21
IEEE Robotics & Automation Magazine - September 2012 - 22
IEEE Robotics & Automation Magazine - September 2012 - 23
IEEE Robotics & Automation Magazine - September 2012 - 24
IEEE Robotics & Automation Magazine - September 2012 - 25
IEEE Robotics & Automation Magazine - September 2012 - 26
IEEE Robotics & Automation Magazine - September 2012 - 27
IEEE Robotics & Automation Magazine - September 2012 - 28
IEEE Robotics & Automation Magazine - September 2012 - 29
IEEE Robotics & Automation Magazine - September 2012 - 30
IEEE Robotics & Automation Magazine - September 2012 - 31
IEEE Robotics & Automation Magazine - September 2012 - 32
IEEE Robotics & Automation Magazine - September 2012 - 33
IEEE Robotics & Automation Magazine - September 2012 - 34
IEEE Robotics & Automation Magazine - September 2012 - 35
IEEE Robotics & Automation Magazine - September 2012 - 36
IEEE Robotics & Automation Magazine - September 2012 - 37
IEEE Robotics & Automation Magazine - September 2012 - 38
IEEE Robotics & Automation Magazine - September 2012 - 39
IEEE Robotics & Automation Magazine - September 2012 - 40
IEEE Robotics & Automation Magazine - September 2012 - 41
IEEE Robotics & Automation Magazine - September 2012 - 42
IEEE Robotics & Automation Magazine - September 2012 - 43
IEEE Robotics & Automation Magazine - September 2012 - 44
IEEE Robotics & Automation Magazine - September 2012 - 45
IEEE Robotics & Automation Magazine - September 2012 - 46
IEEE Robotics & Automation Magazine - September 2012 - 47
IEEE Robotics & Automation Magazine - September 2012 - 48
IEEE Robotics & Automation Magazine - September 2012 - 49
IEEE Robotics & Automation Magazine - September 2012 - 50
IEEE Robotics & Automation Magazine - September 2012 - 51
IEEE Robotics & Automation Magazine - September 2012 - 52
IEEE Robotics & Automation Magazine - September 2012 - 53
IEEE Robotics & Automation Magazine - September 2012 - 54
IEEE Robotics & Automation Magazine - September 2012 - 55
IEEE Robotics & Automation Magazine - September 2012 - 56
IEEE Robotics & Automation Magazine - September 2012 - 57
IEEE Robotics & Automation Magazine - September 2012 - 58
IEEE Robotics & Automation Magazine - September 2012 - 59
IEEE Robotics & Automation Magazine - September 2012 - 60
IEEE Robotics & Automation Magazine - September 2012 - 61
IEEE Robotics & Automation Magazine - September 2012 - 62
IEEE Robotics & Automation Magazine - September 2012 - 63
IEEE Robotics & Automation Magazine - September 2012 - 64
IEEE Robotics & Automation Magazine - September 2012 - 65
IEEE Robotics & Automation Magazine - September 2012 - 66
IEEE Robotics & Automation Magazine - September 2012 - 67
IEEE Robotics & Automation Magazine - September 2012 - 68
IEEE Robotics & Automation Magazine - September 2012 - 69
IEEE Robotics & Automation Magazine - September 2012 - 70
IEEE Robotics & Automation Magazine - September 2012 - 71
IEEE Robotics & Automation Magazine - September 2012 - 72
IEEE Robotics & Automation Magazine - September 2012 - 73
IEEE Robotics & Automation Magazine - September 2012 - 74
IEEE Robotics & Automation Magazine - September 2012 - 75
IEEE Robotics & Automation Magazine - September 2012 - 76
IEEE Robotics & Automation Magazine - September 2012 - 77
IEEE Robotics & Automation Magazine - September 2012 - 78
IEEE Robotics & Automation Magazine - September 2012 - 79
IEEE Robotics & Automation Magazine - September 2012 - 80
IEEE Robotics & Automation Magazine - September 2012 - 81
IEEE Robotics & Automation Magazine - September 2012 - 82
IEEE Robotics & Automation Magazine - September 2012 - 83
IEEE Robotics & Automation Magazine - September 2012 - 84
IEEE Robotics & Automation Magazine - September 2012 - 85
IEEE Robotics & Automation Magazine - September 2012 - 86
IEEE Robotics & Automation Magazine - September 2012 - 87
IEEE Robotics & Automation Magazine - September 2012 - 88
IEEE Robotics & Automation Magazine - September 2012 - 89
IEEE Robotics & Automation Magazine - September 2012 - 90
IEEE Robotics & Automation Magazine - September 2012 - 91
IEEE Robotics & Automation Magazine - September 2012 - 92
IEEE Robotics & Automation Magazine - September 2012 - 93
IEEE Robotics & Automation Magazine - September 2012 - 94
IEEE Robotics & Automation Magazine - September 2012 - 95
IEEE Robotics & Automation Magazine - September 2012 - 96
IEEE Robotics & Automation Magazine - September 2012 - 97
IEEE Robotics & Automation Magazine - September 2012 - 98
IEEE Robotics & Automation Magazine - September 2012 - 99
IEEE Robotics & Automation Magazine - September 2012 - 100
IEEE Robotics & Automation Magazine - September 2012 - 101
IEEE Robotics & Automation Magazine - September 2012 - 102
IEEE Robotics & Automation Magazine - September 2012 - 103
IEEE Robotics & Automation Magazine - September 2012 - 104
IEEE Robotics & Automation Magazine - September 2012 - 105
IEEE Robotics & Automation Magazine - September 2012 - 106
IEEE Robotics & Automation Magazine - September 2012 - 107
IEEE Robotics & Automation Magazine - September 2012 - 108
IEEE Robotics & Automation Magazine - September 2012 - 109
IEEE Robotics & Automation Magazine - September 2012 - 110
IEEE Robotics & Automation Magazine - September 2012 - 111
IEEE Robotics & Automation Magazine - September 2012 - 112
IEEE Robotics & Automation Magazine - September 2012 - 113
IEEE Robotics & Automation Magazine - September 2012 - 114
IEEE Robotics & Automation Magazine - September 2012 - 115
IEEE Robotics & Automation Magazine - September 2012 - 116
IEEE Robotics & Automation Magazine - September 2012 - 117
IEEE Robotics & Automation Magazine - September 2012 - 118
IEEE Robotics & Automation Magazine - September 2012 - 119
IEEE Robotics & Automation Magazine - September 2012 - 120
IEEE Robotics & Automation Magazine - September 2012 - 121
IEEE Robotics & Automation Magazine - September 2012 - 122
IEEE Robotics & Automation Magazine - September 2012 - 123
IEEE Robotics & Automation Magazine - September 2012 - 124
IEEE Robotics & Automation Magazine - September 2012 - 125
IEEE Robotics & Automation Magazine - September 2012 - 126
IEEE Robotics & Automation Magazine - September 2012 - 127
IEEE Robotics & Automation Magazine - September 2012 - 128
IEEE Robotics & Automation Magazine - September 2012 - Cover3
IEEE Robotics & Automation Magazine - September 2012 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com