In SO(3), a following governing equation holds.
q˙=Jaco(q)ω,
where
qJaco(q)S≡{[r0r]∈R4r02+rTr=1}≡21[−rTr0I+S(r)]∈R4×3:x↦{S(x)∈R3×3 S(x)y=x×y}.
When
q is given, a map
r that maps a vector from a reference frame to a body frame is expressed as
r:x∈R3↦Rrb(q)x∈R3,
where
Rrb(q)≡1−2(r22+r32)2(r1r2−r0r3)2(r1r3+r0r2)2(r1r2+r0r3)1−2(r21+r32)2(r2r3−r0r1)2(r1r3−r0r2)2(r2r3+r0r1)1−2(r11+r22).
A gravitational acceleration
ar and terrestrial magnetism
mr on a reference frame are mapped to
abmb=r(ar)=r(mr).
We can get a measured value
yb of them from sensor and a predict value
y^b from the formula above, where
yb=[abmb]∈R6.
We set a system state
x as
x=[qωb]∈R7,
and assume that a system behaves as
x˙f=f(x):x∈R7↦Jaco(q)(ωs+ωb)∈R4,
where
ωs and
ωb denote a measured angular velocity and sensor bias.
A system input is
ωs.
Here, we can estimate a measurable state
yh=h(x):x↦[r(ar)r(mr)].
Now, we introduce a map
h^+ such that
y locally maps to
x.
We designed such a map by local linearization:
h^+:y∈R6↦Xy∈R7,
where
Xhx≡(hxThx)−1hxT,≡∂x∂h(x)=[∂q∂h(x)∂ωb∂h(x)]=[∂q∂h(x)∂q∂h(x)∂ωb∂q]=∂q∂h(x)[I4Jaco(q)].
This map provides an estimation error as
ex∵x−x^=h^+(ey)=X(y−y^),
where
exey≡x−x^≡y−y^.
Then, a state can be estimated with correcting term
x˙^=f(x^)+gex,
where
g∈R7×7 stands for a observer gain.
Here, we can get the error dynamics that is expressed as
e˙x=−gex+f(x)−f(x^).
Using local linearization, the formula is transformed to
e˙x=−gex+fxex=(fx−g)ex,
where
fx≡∂x∂f(x).
Setting
g=fx+k, the error dynamics becomes time-invariant:
e˙x=−kex.
Note that this corrector works if a linearization error is as small as it could be ignored.