四元数与旋转矩阵到运动学方程


本文将从二维旋转入手,讲解三维空间中的向量是如何利用四元数进行旋转的,最后介绍基于四元数的空间运动学方程的由来。

四元数与旋转矩阵到运动学方程

二维旋转


要想理解四元数,需要先从二维空间入手,给定一个向量 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ϕ+nsin2ϕ
所以根据二维旋转类比推理,如果一个纯四元数向量 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==qp(cos2ϕ+nsin2ϕ)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= q0q1q2q3q1q0q3q2q2q3q0q1q3q2q1q0 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} qp=qp=L(q)p= q0q1q2q3q1q0q3q2q2q3q0q1q3q2q1q0 p0p1p2p3 R(p)q= p0p1p2p3p1p0p3p2p2p3p0p1p3p2p1p0 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=qpq1=L(q)pq1=R(q1)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=qpq1=R(q)L(q)p= q0q1q2q3q1q0q3q2q2q3q0q1q3q2q1q0 q0q1q2q3q1q0q3q2q2q3q0q1q3q2q1q0 0p1p2p3 = 10000q02+q12q22q322(q1q2+q0q3)2(q1q3q0q2)02(q1q2q0q3)q02q12+q22q322(q2q3+q0q1)02(q1q3+q0q2)2(q2q3q0q1)q02q12q22+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ϕ+μnsin2ϕ
其中, μ 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ωnbbQ1代入得
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 q0q1q2q3q1q0q3q2q2q3q0q1q3q2q1q0 0ωxωyωz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值