在使用角增量多样子式求解等效旋转时,原理是使用Bortz方程2阶近似性得到的(忽略高阶项),导致原理上不可避免的会差生误差,使用Bortz方程给出基于多项时迭代的等效旋转矢量,可以避免原理性近似误差。
角运动的多项式描述:
假设:角速度
w
(
t
)
w(t)
w(t)
w
(
t
)
=
W
[
t
N
−
1
t
N
−
2
.
.
.
1
]
w(t)=W\left[\begin{matrix} t^{N-1}\\ t^{N-2}\\ ...\\ 1\\ \end{matrix}\right]
w(t)=W⎣⎢⎢⎡tN−1tN−2...1⎦⎥⎥⎤
W
=
[
W
x
W
y
W
z
]
=
[
w
n
−
1
w
n
−
2
w
n
−
3
.
.
.
w
0
]
=
[
w
n
−
1
,
x
w
n
−
2
,
x
w
n
−
3
,
x
.
.
.
w
0
,
x
w
n
−
1
,
y
w
n
−
2
,
y
w
n
−
3
,
y
.
.
.
w
0
,
y
w
n
−
1
,
z
w
n
−
2
,
z
w
n
−
3
,
z
.
.
.
w
0
,
z
]
W=\left[\begin{matrix} W_x\\W_y\\W_z \end{matrix}\right]=\left[\begin{matrix} w_{n-1}&w_{n-2}&w_{n-3}&...&w_{0}\\ \end{matrix}\right]=\left[\begin{matrix} w_{n-1,x}&w_{n-2,x}&w_{n-3,x}&...&w_{0,x}\\ w_{n-1,y}&w_{n-2,y}&w_{n-3,y}&...&w_{0,y}\\ w_{n-1,z}&w_{n-2,z}&w_{n-3,z}&...&w_{0,z}\\ \end{matrix}\right]
W=⎣⎡WxWyWz⎦⎤=[wn−1wn−2wn−3...w0]=⎣⎡wn−1,xwn−1,ywn−1,zwn−2,xwn−2,ywn−2,zwn−3,xwn−3,ywn−3,z.........w0,xw0,yw0,z⎦⎤
假设:陀螺仪在时间段
[
0
,
T
]
[0,T]
[0,T]时间内采样N次,分别计为
θ
i
(
i
=
1
,
2
,
.
.
.
,
N
)
\theta_i(i=1,2,...,N)
θi(i=1,2,...,N)
积分可得:
Δ
θ
j
=
∫
t
j
−
1
t
j
w
(
t
)
d
t
=
t
j
N
−
t
j
−
1
N
N
w
N
−
1
+
t
j
N
−
1
−
t
j
−
1
N
−
1
N
−
1
w
N
−
2
+
.
.
.
+
(
t
j
−
t
j
−
1
)
w
0
\Delta\theta_j=\int_{t_{j-1}}^{tj}w(t)dt=\frac{t_{j}^N-t_{j-1}^N}{N}w_{N-1}+\frac{t_{j}^{N-1}-t_{j-1}^{N-1}}{N-1}w_{N-2}+...+(t_j-t_{j-1})w_0
Δθj=∫tj−1tjw(t)dt=NtjN−tj−1NwN−1+N−1tjN−1−tj−1N−1wN−2+...+(tj−tj−1)w0
令:
Θ
=
[
Δ
θ
1
Δ
θ
2
.
.
.
Δ
θ
N
]
\Theta=\left[\begin{matrix} \Delta\theta_1&\Delta\theta_2&...&\Delta\theta_N\\ \end{matrix}\right]
Θ=[Δθ1Δθ2...ΔθN]
Γ
=
[
t
1
N
−
t
0
N
N
t
2
N
−
t
1
N
N
.
.
.
t
N
N
−
t
N
−
1
N
N
t
1
N
−
t
0
N
N
−
1
t
2
N
−
t
1
N
N
−
1
.
.
.
t
N
N
−
t
N
−
1
N
N
−
1
.
.
.
.
.
.
.
.
.
.
.
.
t
1
−
t
0
t
2
−
t
1
.
.
.
t
N
−
t
N
−
1
]
\Gamma=\left[\begin{matrix} \frac{t_{1}^N-t_{0}^N}{N}&\frac{t_{2}^N-t_{1}^N}{N}&...&\frac{t_{N}^N-t_{N-1}^N}{N}&\\ \frac{t_{1}^N-t_{0}^N}{N-1}&\frac{t_{2}^N-t_{1}^N}{N-1}&...&\frac{t_{N}^N-t_{N-1}^N}{N-1}&\\ ...&...&...&...\\ t_1-t_0&t_2-t_1&...&t_N-t_{N-1}\\ \end{matrix}\right]
Γ=⎣⎢⎢⎢⎡Nt1N−t0NN−1t1N−t0N...t1−t0Nt2N−t1NN−1t2N−t1N...t2−t1............NtNN−tN−1NN−1tNN−tN−1N...tN−tN−1⎦⎥⎥⎥⎤
可以的得到:
Θ
=
W
Γ
\Theta=W\Gamma
Θ=WΓ
W
=
Θ
Γ
−
1
W=\Theta\Gamma^{-1}
W=ΘΓ−1
等效旋转矢量的迭代求解:
ϕ
j
(
i
+
1
)
=
[
U
j
′
′
0
]
⊙
[
.
.
.
1
3
1
2
1
0
]
(
j
=
x
,
y
,
z
;
)
\phi_j^{(i+1)}=\left[\begin{matrix} U''_j&0\\ \end{matrix}\right]\odot \left[\begin{matrix} ...&\frac{1}{3}&\frac{1}{2}&1&0\\ \end{matrix}\right](j=x,y,z;)
ϕj(i+1)=[Uj′′0]⊙[...312110](j=x,y,z;)
⊙
\odot
⊙表示两个相同阶次的多项式系数向量,之间的同幂次系数分量相乘结果
推导:
已知:
ϕ
˙
=
w
+
1
2
ϕ
×
w
+
(
1
12
+
θ
2
720
+
θ
4
30240
+
.
.
.
)
(
ϕ
×
)
2
w
\dot \phi=w+\frac{1}{2}\phi\times w+(\frac{1}{12}+\frac{\theta^2}{720}+\frac{\theta^4}{30240}+...)(\phi\times)^2 w
ϕ˙=w+21ϕ×w+(121+720θ2+30240θ4+...)(ϕ×)2w
在[0,t]时间内对两式左右两边积分
ϕ
−
ϕ
(
0
)
=
∫
0
t
w
+
1
2
ϕ
×
w
+
(
1
12
+
θ
2
720
+
θ
4
30240
+
.
.
.
)
(
ϕ
×
)
2
w
d
t
\phi-\phi(0)=\int_0^tw+\frac{1}{2}\phi\times w+(\frac{1}{12}+\frac{\theta^2}{720}+\frac{\theta^4}{30240}+...)(\phi\times)^2 wdt
ϕ−ϕ(0)=∫0tw+21ϕ×w+(121+720θ2+30240θ4+...)(ϕ×)2wdt
令
ϕ
(
0
)
=
0
\phi(0)=0
ϕ(0)=0得到第i次迭代的后旋转矢量
ϕ
(
i
)
=
[
ϕ
x
(
i
)
ϕ
y
(
i
)
ϕ
z
(
i
)
]
[
.
.
.
t
2
t
1
]
=
[
.
.
.
ϕ
2
,
x
(
i
)
ϕ
1
,
x
(
i
)
ϕ
0
,
x
(
i
)
.
.
.
ϕ
2
,
y
(
i
)
ϕ
1
,
y
(
i
)
ϕ
0
,
y
(
i
)
.
.
.
ϕ
2
,
z
(
i
)
ϕ
1
,
z
(
i
)
ϕ
0
,
z
(
i
)
]
\phi^{(i)}=\left[\begin{matrix} \phi_x^{(i)}\\\phi_y^{(i)}\\\phi_z^{(i)}\\ \end{matrix}\right]\left[\begin{matrix} ...\\t^2\\t\\1 \end{matrix}\right]=\left[\begin{matrix} ...&\phi_{2,x}^{(i)}&\phi_{1,x}^{(i)}&\phi_{0,x}^{(i)}\\ ...&\phi_{2,y}^{(i)}&\phi_{1,y}^{(i)}&\phi_{0,y}^{(i)}\\ ...&\phi_{2,z}^{(i)}&\phi_{1,z}^{(i)}&\phi_{0,z}^{(i)}\\ \end{matrix}\right]
ϕ(i)=⎣⎢⎡ϕx(i)ϕy(i)ϕz(i)⎦⎥⎤⎣⎢⎢⎡...t2t1⎦⎥⎥⎤=⎣⎢⎡.........ϕ2,x(i)ϕ2,y(i)ϕ2,z(i)ϕ1,x(i)ϕ1,y(i)ϕ1,z(i)ϕ0,x(i)ϕ0,y(i)ϕ0,z(i)⎦⎥⎤
将
W
=
Θ
Γ
−
1
W=\Theta\Gamma^{-1}
W=ΘΓ−1带入积分求得递推公式为:
ϕ
i
+
1
=
∫
0
T
[
W
x
W
y
W
z
]
[
t
N
−
1
t
N
−
2
.
.
.
1
]
+
1
2
[
U
x
U
y
U
z
]
[
t
N
−
1
t
N
−
2
.
.
.
1
]
+
[
θ
′
∗
U
x
′
θ
′
∗
U
y
′
θ
′
∗
U
z
′
]
[
t
N
−
1
t
N
−
2
.
.
.
1
]
\phi^{i+1}=\int_0^T\left[\begin{matrix} W_x\\W_y\\W_z \end{matrix}\right]\left[\begin{matrix} t^{N-1}\\ t^{N-2}\\ ...\\ 1\\ \end{matrix}\right]+ \frac{1}{2}\left[\begin{matrix} U_x\\U_y\\U_z \end{matrix}\right]\left[\begin{matrix} t^{N-1}\\ t^{N-2}\\ ...\\ 1\\ \end{matrix}\right]+\left[\begin{matrix} \theta'*U_x'\\\theta'*U_y'\\\theta'*U_z' \end{matrix}\right]\left[\begin{matrix} t^{N-1}\\ t^{N-2}\\ ...\\ 1\\ \end{matrix}\right]
ϕi+1=∫0T⎣⎡WxWyWz⎦⎤⎣⎢⎢⎡tN−1tN−2...1⎦⎥⎥⎤+21⎣⎡UxUyUz⎦⎤⎣⎢⎢⎡tN−1tN−2...1⎦⎥⎥⎤+⎣⎡θ′∗Ux′θ′∗Uy′θ′∗Uz′⎦⎤⎣⎢⎢⎡tN−1tN−2...1⎦⎥⎥⎤
其中:
θ
′
=
[
1
12
(
θ
(
i
)
)
2
720
(
θ
(
i
)
)
4
30140
(
θ
(
i
)
)
6
1209600
.
.
.
]
\theta'=\left[\begin{matrix} \frac{1}{12}&\frac{(\theta^{(i)})^2}{720}&\frac{(\theta^{(i)})^4}{30140}&\frac{(\theta^{(i)})^6}{1209600}&...\\ \end{matrix}\right]
θ′=[121720(θ(i))230140(θ(i))41209600(θ(i))6...]
[
U
x
U
y
U
z
]
=
[
ϕ
y
(
i
)
∗
W
z
−
ϕ
z
(
i
)
W
y
−
ϕ
x
(
i
)
∗
W
z
+
ϕ
z
(
i
)
W
x
ϕ
x
(
i
)
∗
W
y
−
ϕ
y
(
i
)
W
x
]
\left[\begin{matrix} U_x\\ U_y\\ U_z\\ \end{matrix}\right]=\left[\begin{matrix} \phi_y^{(i)}*W_z-\phi_z^{(i)}W_y\\ -\phi_x^{(i)}*W_z+\phi_z^{(i)}W_x\\ \phi_x^{(i)}*W_y-\phi_y^{(i)}W_x\\ \end{matrix}\right]
⎣⎡UxUyUz⎦⎤=⎣⎢⎡ϕy(i)∗Wz−ϕz(i)Wy−ϕx(i)∗Wz+ϕz(i)Wxϕx(i)∗Wy−ϕy(i)Wx⎦⎥⎤
[
U
x
′
U
y
′
U
z
′
]
=
[
ϕ
y
(
i
)
∗
U
z
−
ϕ
z
(
i
)
U
y
−
ϕ
x
(
i
)
∗
U
z
+
ϕ
z
(
i
)
U
x
ϕ
x
(
i
)
∗
U
y
−
ϕ
y
(
i
)
U
x
]
\left[\begin{matrix} U_x'\\ U_y'\\ U_z'\\ \end{matrix}\right]=\left[\begin{matrix} \phi_y^{(i)}*U_z-\phi_z^{(i)}U_y\\ -\phi_x^{(i)}*U_z+\phi_z^{(i)}U_x\\ \phi_x^{(i)}*U_y-\phi_y^{(i)}U_x\\ \end{matrix}\right]
⎣⎡Ux′Uy′Uz′⎦⎤=⎣⎢⎡ϕy(i)∗Uz−ϕz(i)Uy−ϕx(i)∗Uz+ϕz(i)Uxϕx(i)∗Uy−ϕy(i)Ux⎦⎥⎤
实际使用时需要对无穷级数,进行有限次处理:
w
w
w一般零次多项式不为0,当迭代次数
i
>
0
i>0
i>0时,
ϕ
(
i
)
\phi^{(i)}
ϕ(i)不为0的最低次项为1;
如果存在不可交换误差,
(
ϕ
(
i
)
×
)
w
(\phi^{(i)}\times) w
(ϕ(i)×)w中最低幂次不为0应当为2;
如果存在不可交换误差,
(
ϕ
(
i
)
×
)
2
w
(\phi^{(i)}\times)^2 w
(ϕ(i)×)2w中最低幂次不为0应当为3;
(
ϕ
(
i
)
)
k
(
ϕ
(
i
)
×
)
2
w
(\phi^{(i)})^k(\phi^{(i)}\times)^2 w
(ϕ(i))k(ϕ(i)×)2w中最低幂次不为0应当为k+3(k=0,2,4,6,…)
若忽略等效旋转矢量中,与
θ
\theta
θ有关不高于
k
k
k次项,等效旋转矢量只有
k
+
3
k+3
k+3的精度,精度高于多子样法