四元数与旋转矩阵到运动学方程
本文将从二维旋转入手,讲解三维空间中的向量是如何利用四元数进行旋转的,最后介绍基于四元数的空间运动学方程的由来。
四元数与旋转矩阵到运动学方程
二维旋转
要想理解四元数,需要先从二维空间入手,给定一个向量
z
=
x
+
i
y
=
r
(
cos
δ
+
i
sin
δ
)
=
r
e
δ
i
,
z=x+iy=r(\cos\delta +i\sin\delta)=re^{\delta i},
z=x+iy=r(cosδ+isinδ)=reδi, 将
z
z
z乘以
e
i
ϕ
=
(
cos
ϕ
+
i
sin
ϕ
)
e^{i\phi}=(\cos \phi+i\sin \phi)
eiϕ=(cosϕ+isinϕ) 得到
z
′
=
r
[
cos
(
ϕ
+
δ
)
+
i
sin
(
ϕ
+
δ
)
]
z^{'}=r[\cos(\phi + \delta )+i \sin(\phi + \delta )]
z′=r[cos(ϕ+δ)+isin(ϕ+δ)]。如下图所示,所以,复数(一个虚轴)可以用来描述平面的转动
那么,按照这个思路,刚体在三维空间中的运动就需要3个虚轴来描述,因为虽然,三维空间虽然只多了一维,但是确多了两个转轴,所以需要三个虚轴来描述刚体在三维空间中的转动。因此,三个虚部加一个实部就构成了四元数。
四元数
四元数描述的是两个坐标轴之间的旋转关系
四元数定义:
q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
=
(
cos
ϕ
2
+
e
x
sin
ϕ
2
+
e
y
sin
ϕ
2
+
e
z
sin
ϕ
2
)
⋅
∥
q
∥
\begin{align} q=&q_0+q_1i+q_2j+q_3k \nonumber \\ =&(\cos \frac{\phi}{2}+e_x\sin \frac{\phi}{2}+e_y\sin \frac{\phi}{2}+e_z\sin \frac{\phi}{2})\cdot\left\| q \right\| \nonumber \end{align}
q==q0+q1i+q2j+q3k(cos2ϕ+exsin2ϕ+eysin2ϕ+ezsin2ϕ)⋅∥q∥
其中:
∣
q
∣
=
q
0
2
+
q
1
2
+
q
2
2
+
q
3
2
=
∥
q
∥
\left| q \right|=\sqrt{q_{0}^{2}+q_{1}^{2}+q_{2}^{2}+q_{3}^{2}}=\sqrt{\left\| q \right\|}
∣q∣=q02+q12+q22+q32=∥q∥;
[
e
x
,
e
y
,
e
z
]
[e_x, e_y, e_z]
[ex,ey,ez]为转轴;
i
,
j
,
k
i, j, k
i,j,k满足:
i
i
=
j
j
=
k
k
=
−
1
ii=jj=kk=-1
ii=jj=kk=−1;
i
j
=
−
j
i
=
k
;
j
k
=
−
k
j
=
i
;
k
i
=
−
i
k
=
j
ij=-ji=k; jk=-kj=i;ki=-ik=j
ij=−ji=k;jk=−kj=i;ki=−ik=j。
当
∥
q
∥
=
1
\left\| q \right\|= 1
∥q∥=1时
q
=
q
0
+
q
1
i
+
q
2
j
+
q
3
k
=
(
cos
ϕ
2
+
e
x
sin
ϕ
2
+
e
y
sin
ϕ
2
+
e
z
sin
ϕ
2
)
=
cos
ϕ
2
+
n
⋅
sin
ϕ
2
\begin{align} q=&q_0+q_1i+q_2j+q_3k \nonumber \\ =&(\cos \frac{\phi}{2}+e_x\sin \frac{\phi}{2}+e_y\sin \frac{\phi}{2}+e_z\sin \frac{\phi}{2}) \nonumber \\ =&\cos \frac{\phi}{2}+n\cdot\sin \frac{\phi}{2} \nonumber \end{align}
q===q0+q1i+q2j+q3k(cos2ϕ+exsin2ϕ+eysin2ϕ+ezsin2ϕ)cos2ϕ+n⋅sin2ϕ
所以根据二维旋转类比推理,如果一个纯四元数向量
p
=
[
0
,
p
1
,
p
2
,
p
3
]
p=[0, p_1, p_2, p_3]
p=[0,p1,p2,p3]希望绕
[
e
x
,
e
y
,
e
z
]
[e_x, e_y, e_z]
[ex,ey,ez]旋转
ϕ
2
\frac{\phi}{2}
2ϕ,得
Q
=
q
⋅
p
=
(
cos
ϕ
2
+
n
⋅
sin
ϕ
2
)
⋅
p
\begin{align} Q=&q\cdot p \nonumber \\ =&\left( \cos \frac{\phi}{2}+n\cdot \sin \frac{\phi}{2} \right) \cdot p \nonumber \end{align}
Q==q⋅p(cos2ϕ+n⋅sin2ϕ)⋅p
将上式写为矩阵与向量相乘的形式
Q
=
[
q
0
−
q
1
−
q
2
−
q
3
q
1
q
0
−
q
3
q
2
q
2
q
3
q
0
−
q
1
q
3
−
q
2
q
1
q
0
]
[
p
0
p
1
p
2
p
3
]
\begin{align} Q=&\left[ \begin{matrix} q_0& -q_1& -q_2& -q_3\\ q_1& q_0& -q_3& q_2\\ q_2& q_3& q_0& -q_1\\ q_3& -q_2& q_1& q_0\\ \end{matrix} \right] \left[ \begin{array}{c} p_0\\ p_1\\ p_2\\ p_3\\ \end{array} \right] \nonumber \end{align}
Q=
q0q1q2q3−q1q0q3−q2−q2−q3q0q1−q3q2−q1q0
p0p1p2p3
那么,两个四元数相乘转变成矩阵
L
L
L右乘四元数
q
q
q。调换一下顺序,我们还可以将该行为写成矩阵
R
R
R左乘四元数
q
q
q,具体形式如下:
q
⋅
p
=
L
(
q
)
p
=
[
q
0
−
q
1
−
q
2
−
q
3
q
1
q
0
−
q
3
q
2
q
2
q
3
q
0
−
q
1
q
3
−
q
2
q
1
q
0
]
[
p
0
p
1
p
2
p
3
]
q
⋅
p
=
R
(
p
)
q
=
[
p
0
−
p
1
−
p
2
−
p
3
p
1
p
0
p
3
−
p
2
p
2
−
p
3
p
0
p
1
p
3
p
2
−
p
1
p
0
]
[
q
0
q
1
q
2
q
3
]
\begin{align} q\cdot p=&L\left( q \right) p=\left[ \begin{matrix} q_0& -q_1& -q_2& -q_3\\ q_1& q_0& -q_3& q_2\\ q_2& q_3& q_0& -q_1\\ q_3& -q_2& q_1& q_0\\ \end{matrix} \right] \left[ \begin{aligned} \nonumber p_0\\ p_1\\ p_2\\ p_3\\ \end{aligned} \right] \nonumber \\ q\cdot p=&R\left( p \right) q=\left[ \begin{matrix} p_0& -p_1& -p_2& -p_3\\ p_1& p_0& p_3& -p_2\\ p_2& -p_3& p_0& p_1\\ p_3& p_2& -p_1& p_0\\ \end{matrix} \right] \left[ \begin{aligned} \nonumber q_0\\ q_1\\ q_2\\ q_3\\ \end{aligned} \right] \end{align}
q⋅p=q⋅p=L(q)p=
q0q1q2q3−q1q0q3−q2−q2−q3q0q1−q3q2−q1q0
p0p1p2p3
R(p)q=
p0p1p2p3−p1p0−p3p2−p2p3p0−p1−p3−p2p1p0
q0q1q2q3
上式虽然将三维空间中的向量
[
p
1
,
p
2
,
p
3
]
[p_1, p_2, p_3]
[p1,p2,p3]旋转了
ϕ
2
\frac{\phi}{2}
2ϕ,但同时也将其代入了四维空间,因此需要在旋转
ϕ
2
\frac{\phi}{2}
2ϕ将其拉回三维空间,因此得出四元数旋转方程:
R
1
=
q
⋅
p
⋅
q
−
1
=
L
(
q
)
p
q
−
1
=
R
(
q
−
1
)
L
(
q
)
p
\begin{equation} R_1=q\cdot p\cdot q^{-1}=L\left( q \right) pq^{-1}=R\left( q^{-1} \right) L\left( q \right) p \end{equation}
R1=q⋅p⋅q−1=L(q)pq−1=R(q−1)L(q)p
写为矩阵形式:
R
1
=
q
⋅
p
⋅
q
−
1
=
R
(
q
)
L
(
q
)
p
=
[
q
0
q
1
q
2
q
3
−
q
1
q
0
−
q
3
q
2
−
q
2
q
3
q
0
−
q
1
−
q
3
−
q
2
q
1
q
0
]
[
q
0
−
q
1
−
q
2
−
q
3
q
1
q
0
−
q
3
q
2
q
2
q
3
q
0
−
q
1
q
3
−
q
2
q
1
q
0
]
[
0
p
1
p
2
p
3
]
=
[
1
0
0
0
0
q
0
2
+
q
1
2
−
q
2
2
−
q
3
2
2
(
q
1
q
2
−
q
0
q
3
)
2
(
q
1
q
3
+
q
0
q
2
)
0
2
(
q
1
q
2
+
q
0
q
3
)
q
0
2
−
q
1
2
+
q
2
2
−
q
3
2
2
(
q
2
q
3
−
q
0
q
1
)
0
2
(
q
1
q
3
−
q
0
q
2
)
2
(
q
2
q
3
+
q
0
q
1
)
q
0
2
−
q
1
2
−
q
2
2
+
q
3
2
]
[
0
p
1
p
2
p
3
]
\begin{align} R_1=q\cdot p\cdot q^{-1}=R\left( q \right) L\left( q \right) p&=\left[ \begin{matrix} q_0& q_1& q_2& q_3\\ -q_1& q_0& -q_3& q_2\\ -q_2& q_3& q_0& -q_1\\ -q_3& -q_2& q_1& q_0\\ \end{matrix} \right] \left[ \begin{matrix} q_0& -q_1& -q_2& -q_3\\ q_1& q_0& -q_3& q_2\\ q_2& q_3& q_0& -q_1\\ q_3& -q_2& q_1& q_0\\ \end{matrix} \right] \left[ \begin{array}{c} 0\\ p_1\\ p_2\\ p_3\\ \end{array} \right] \nonumber \\ &=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& q_{0}^{2}+q_{1}^{2}-q_{2}^{2}-q_{3}^{2}& 2\left( q_1q_2-q_0q_3 \right)& 2\left( q_1q_3+q_0q_2 \right)\\ 0& 2\left( q_1q_2+q_0q_3 \right)& q_{0}^{2}-q_{1}^{2}+q_{2}^{2}-q_{3}^{2}& 2\left( q_2q_3-q_0q_1 \right)\\ 0& 2\left( q_1q_3-q_0q_2 \right)& 2\left( q_2q_3+q_0q_1 \right)& q_{0}^{2}-q_{1}^{2}-q_{2}^{2}+q_{3}^{2}\\ \end{matrix} \right] \left[ \begin{array}{c} 0\\ p_1\\ p_2\\ p_3\\ \end{array} \right] \nonumber \end{align}
R1=q⋅p⋅q−1=R(q)L(q)p=
q0−q1−q2−q3q1q0q3−q2q2−q3q0q1q3q2−q1q0
q0q1q2q3−q1q0q3−q2−q2−q3q0q1−q3q2−q1q0
0p1p2p3
=
10000q02+q12−q22−q322(q1q2+q0q3)2(q1q3−q0q2)02(q1q2−q0q3)q02−q12+q22−q322(q2q3+q0q1)02(q1q3+q0q2)2(q2q3−q0q1)q02−q12−q22+q32
0p1p2p3
因此,我们得到了四元数旋转矩阵。
以上部分内容借鉴于文章四元数应用——转矩阵、Slerp插值与万向节
基于四元数的运动学方程
首先定义坐标系:
n
n
n系为导航坐标系(东北天),
b
b
b系为载体坐标系,则
n
n
n系到
b
b
b的旋转四元数可以表示为:
Q
=
cos
ϕ
2
+
μ
n
⋅
sin
ϕ
2
\begin{align} Q=\cos \frac{\phi}{2}+\mu_n\cdot \sin \frac{\phi}{2} \nonumber \end{align}
Q=cos2ϕ+μn⋅sin2ϕ
其中,
μ
n
\mu_n
μn为转轴,
ϕ
\phi
ϕ为旋转角,对两边求导可得:
d
Q
d
t
=
−
ϕ
˙
2
sin
ϕ
2
+
μ
n
ϕ
˙
2
cos
ϕ
2
+
sin
ϕ
2
d
μ
n
d
t
\begin{equation} \frac{d Q}{d t}=-\frac{\dot{\phi}}{2} \sin \frac{\phi}{2}+\mu^{n} \frac{\dot{\phi}}{2} \cos \frac{\phi}{2}+\sin \frac{\phi}{2} \frac{d \mu^{n}}{d t} \nonumber \end{equation}
dtdQ=−2ϕ˙sin2ϕ+μn2ϕ˙cos2ϕ+sin2ϕdtdμn
根据哥氏定理:
d
μ
n
d
t
=
C
b
n
d
u
b
d
t
+
ω
n
b
n
×
μ
n
\begin{equation} \frac{d \mu^{n}}{d t}=C_{b}^{n} \frac{d u^{b}}{d t}+\omega_{n b}^{n} \times \mu^{n} \nonumber \end{equation}
dtdμn=Cbndtdub+ωnbn×μn
其中
ω
n
b
n
\omega_{n b}^{n}
ωnbn、
ω
n
b
b
\omega_{n b}^{b}
ωnbb代表载体
b
b
b相对于
n
n
n的角速度在
n
n
n、
b
b
b中的表示。
根据文章四元数微分方程的推导和解算实现,得到
d
u
b
d
t
=
0
\begin{equation} \frac{d u^{b}}{d t}=0 \nonumber \end{equation}
dtdub=0
和
ω
n
b
n
=
ϕ
˙
μ
n
\begin{equation} \omega_{n b}^{n}=\dot \phi \mu_n \nonumber \end{equation}
ωnbn=ϕ˙μn
上式中的意思是:
n
n
n系到
b
b
b的角速度在
n
n
n系上的投影。
所以
d
μ
n
d
t
=
θ
˙
μ
n
×
μ
n
=
0
\begin{equation} \frac{d\mu _n}{dt}=\dot{\theta}\mu _n\times \mu _n=0 \nonumber \end{equation}
dtdμn=θ˙μn×μn=0
因此,根据四元数乘法法则:
ω
n
b
n
⊗
ω
n
b
n
=
−
1
\omega _{nb}^{n}\otimes \omega _{nb}^{n} = -1
ωnbn⊗ωnbn=−1
d
Q
d
t
=
−
θ
˙
2
sin
θ
2
+
μ
n
θ
˙
2
cos
θ
2
=
μ
n
θ
˙
2
(
cos
θ
2
+
μ
n
sin
θ
2
)
=
1
2
ω
n
b
n
Q
\begin{align} \frac{dQ}{dt}&=-\frac{\dot{\theta}}{2}\sin \frac{\theta}{2}+\mu ^n\frac{\dot{\theta}}{2}\cos \frac{\theta}{2} \nonumber \\ &=\mu ^n\frac{\dot{\theta}}{2}\left( \cos \frac{\theta}{2}+\mu ^n\sin \frac{\theta}{2} \right) \nonumber \\ &=\frac{1}{2}\omega _{nb}^{n}Q \nonumber \end{align}
dtdQ=−2θ˙sin2θ+μn2θ˙cos2θ=μn2θ˙(cos2θ+μnsin2θ)=21ωnbnQ
将(1)式的
ω
n
b
n
=
Q
⋅
ω
n
b
b
⋅
Q
−
1
\omega _{nb}^{n}=Q\cdot\omega _{nb}^{b}\cdot Q^{-1}
ωnbn=Q⋅ωnbb⋅Q−1代入得
d
Q
d
t
=
1
2
Q
ω
n
b
b
\begin{equation} \frac{dQ}{dt}=\frac{1}{2}Q\omega _{nb}^{b} \nonumber \end{equation}
dtdQ=21Qωnbb
由此我们得到了基于四元数的运动学方程
[
q
˙
0
q
˙
1
q
˙
2
q
˙
3
]
=
1
2
[
q
0
−
q
1
−
q
2
−
q
3
q
1
q
0
−
q
3
q
2
q
2
q
3
q
0
−
q
1
q
3
−
q
2
q
1
q
0
]
[
0
ω
x
ω
y
ω
z
]
\begin{equation} \left[ \begin{array}{c} \dot{q}_0\\ \dot{q}_1\\ \dot{q}_2\\ \dot{q}_3\\ \end{array} \right] =\frac{1}{2}\left[ \begin{matrix} q_0& -q_1& -q_2& -q_3\\ q_1& q_0& -q_3& q_2\\ q_2& q_3& q_0& -q_1\\ q_3& -q_2& q_1& q_0\\ \end{matrix} \right] \left[ \begin{array}{c} 0\\ \omega _x\\ \omega _y\\ \omega _z\\ \end{array} \right] \nonumber \end{equation}
q˙0q˙1q˙2q˙3
=21
q0q1q2q3−q1q0q3−q2−q2−q3q0q1−q3q2−q1q0
0ωxωyωz