005四元数与姿态阵间的关系


学习惯导这么久,还是没有形成自己的体系,应该说还是没有入门(手动尴尬)。所以在此对看过的内容进行解释,加深印象。本文的内容针对秦永元老师《惯性导航(第二版)》中“9.2.2 四元数与姿态阵间的关系”进行备忘。

一、前提

如图所示(为了便于理解,我把原图擦去了一部分),假定有刚体金刚圈AB,坐标系R,注意这个坐标系不与金刚圈固联(无论金刚圈怎么转,我坐标系坚决不动,相当于这是一个导航坐标系)。当看到这个图,你肯定不知道坐标系R在哪了。没关系,这都不重要,可以这么认为,坐标系就假定是以O为原点的右手系(O隐藏的很深,仔细看)。
这里写图片描述
金刚圈跟坐标系R介绍完了,就该谈一谈其中的元素了。请看下面这个被我蹂躏得比较轻的图。连接OO’O’为圆心)得矢量 O O ′ ⃗ \vec{OO'} OO ,连接O’A得矢量 O ’ A ⃗ \vec{O’A} OA ,连接O’B得矢量 O ′ B ⃗ \vec{O'B} OB O ′ A ⃗ \vec{O'A} OA 垂直于 O ′ B ⃗ \vec{O'B} OB ),连接OA得矢量 O A ⃗ \vec{OA} OA 记为 r ⃗ \vec{r} r 。把这些元素定义好了,金刚圈就开始绕 O O ′ ⃗ \vec{OO'} OO 转动,转动方向沿短弧沿短弧 A → 沿 短 弧 B A\xrightarrow{沿短弧}B A沿 B
这里写图片描述

圆圈的转动还是要作一下说明,如下图所示(这个图没有遭到我的毒手)。在 O O ⃗ \vec{OO} OO 上取单位矢量 u ⃗ \vec{u} u ,该矢量可以等效成刚体的旋转轴。 O ′ A ⃗ \vec{O'A} OA 旋转角度 θ \theta θ得到 O ′ A ′ ⃗ \vec{O'A'} OA ,连接OA’得到 O A ′ ⃗ \vec{OA'} OA 记为 r ⃗ ′ \vec{r}' r
这里写图片描述
到此为止,把旋转的关系理清楚了。下面请看四元数与姿态阵关系的推导过程。

二、推导

推导的过程其实就是分析转动前后的矢量 r ⃗ \vec{r} r r ⃗ ′ \vec{r}' r 的关系。

根据前面的描述,首先可以得到:
O O ′ ⃗ = ( r ⃗ ⋅ u ⃗ ) u ⃗ \vec{OO'}=(\vec{r}·\vec{u})\vec{u} OO =(r u )u

为什么呢?因为:
O O ′ ⃗ = ( ∣ r ⃗ ∣ ⋅ ∣ u ⃗ ∣ ⋅ c o s &lt; r ⃗ , u ⃗ &gt; ) u ⃗ = ∣ O O ′ ⃗ ∣ ⋅ u ⃗ = O O ′ ⃗ \vec{OO&#x27;} =(|\vec{r}|·|\vec{u}|·cos&lt;\vec{r},\vec{u}&gt;)\vec{u} \\ =|\vec{OO&#x27;}|·\vec{u}=\vec{OO&#x27;} \\ OO =(r u cos<r ,u >)u =OO u =OO

那么可求:
O ′ A ⃗ = r ⃗ − O O ′ ⃗ = r ⃗ − ( r ⃗ ⋅ u ⃗ ) u ⃗ \vec{O&#x27;A}=\vec{r}-\vec{OO&#x27;}=\vec{r}-(\vec{r}·\vec{u})\vec{u} OA =r OO =r (r u )u

O ′ B ⃗ = u ⃗ × O ′ A ⃗ = u ⃗ × r ⃗ − u ⃗ × ( r ⃗ ⋅ u ⃗ ) u ⃗ = u ⃗ × r ⃗ − ( r ⃗ ⋅ u ⃗ ) u ⃗ × u ⃗ = u ⃗ × r ⃗ \vec{O&#x27;B} =\vec{u}×\vec{O&#x27;A}\\ =\vec{u}×\vec{r}-\vec{u}×(\vec{r}·\vec{u})\vec{u}\\ =\vec{u}×\vec{r}-(\vec{r}·\vec{u})\vec{u}×\vec{u}\\ =\vec{u}×\vec{r} OB =u ×OA =u ×r u ×(r u )u =u ×r (r u )u ×u =u ×r

这一步,点乘是一个实数,所以会有 u ⃗ × u ⃗ \vec{u}×\vec{u} u ×u ,而 u ⃗ × u ⃗ = 0 \vec{u}×\vec{u}=0 u ×u =0

说到这里又要再加一个图了,如下图,这个图的意思不用我多说了吧。
这里写图片描述
通过这个图求 O ′ A ′ ⃗ \vec{O&#x27;A&#x27;} OA :
O ′ A ′ ⃗ = O ′ A ⃗ c o s θ + O ′ B ⃗ s i n θ = r ⃗ c o s θ − ( r ⃗ ⋅ u ⃗ ) u ⃗ c o s θ + u ⃗ × r ⃗ s i n θ \vec{O&#x27;A&#x27;} =\vec{O&#x27;A}cos\theta+\vec{O&#x27;B}sin\theta\\ =\vec{r}cos\theta-(\vec{r}·\vec{u})\vec{u}cos\theta+\vec{u}×\vec{r}sin\theta OA =OA cosθ+OB sinθ=r cosθ(r u )u cosθ+u ×r sinθ
这样, r ⃗ ′ \vec{r}&#x27; r 就可以求得:
r ⃗ ′ = O O ′ ⃗ + O ′ A ′ ⃗ = r ⃗ c o s θ + ( 1 − c o s θ ) ( r ⃗ ⋅ u ⃗ ) u ⃗ + u ⃗ × r ⃗ s i n θ \vec{r}&#x27; =\vec{OO&#x27;}+\vec{O&#x27;A&#x27;}\\ =\vec{r}cos\theta+(1-cos\theta)(\vec{r}·\vec{u})\vec{u}+\vec{u}×\vec{r}sin\theta r =OO +OA =r cosθ+(1cosθ)(r u )u +u ×r sinθ

另外有这样一个公式,在推导的过程中需要用到(公式来源:向量积-拉格朗日公式):
a ⃗ × ( b ⃗ × c ⃗ ) = b ⃗ ( a ⃗ ⋅ c ⃗ ) − c ⃗ ( a ⃗ ⋅ b ⃗ ) \vec{a}×(\vec{b}×\vec{c})=\vec{b}(\vec{a}·\vec{c})-\vec{c}(\vec{a}·\vec{b}) a ×(b ×c )=b (a c )c (a b )
我们知道向量的点乘满足交换律,所以可以写成:
a ⃗ × ( b ⃗ × c ⃗ ) = b ⃗ ( a ⃗ ⋅ c ⃗ ) − ( a ⃗ ⋅ b ⃗ ) c ⃗ \vec{a}×(\vec{b}×\vec{c})=\vec{b}(\vec{a}·\vec{c})-(\vec{a}·\vec{b})\vec{c} a ×(b ×c )=b (a c )(a b )c
这时候令 a ⃗ = b ⃗ = u ⃗ \vec{a}=\vec{b}=\vec{u} a =b =u c ⃗ = r ⃗ \vec{c}=\vec{r} c =r ,可得:
u ⃗ × ( u ⃗ × r ⃗ ) = u ⃗ ( u ⃗ ⋅ r ⃗ ) − ( u ⃗ ⋅ u ⃗ ) r ⃗ \vec{u}×(\vec{u}×\vec{r})=\vec{u}(\vec{u}·\vec{r})-(\vec{u}·\vec{u})\vec{r} u ×(u ×r )=u (u r )(u u )r
现在就跟书上的对照起来啦。接下来还有 u ⃗ ⋅ u ⃗ = 1 \vec{u}·\vec{u}=1 u u =1,所以上式可表示为:
u ⃗ × ( u ⃗ × r ⃗ ) = u ⃗ ( u ⃗ ⋅ r ⃗ ) − r ⃗ = ( r ⃗ ⋅ u ⃗ ) u ⃗ − r ⃗ \vec{u}×(\vec{u}×\vec{r}) =\vec{u}(\vec{u}·\vec{r})-\vec{r}\\ =(\vec{r}·\vec{u})\vec{u}-\vec{r} u ×(u ×r )=u (u r )r =(r u )u r
所以可以得到:
( r ⃗ ⋅ u ⃗ ) u ⃗ = r ⃗ + u ⃗ × ( u ⃗ × r ⃗ ) (\vec{r}·\vec{u})\vec{u}=\vec{r}+\vec{u}×(\vec{u}×\vec{r}) (r u )u =r +u ×(u ×r )
够详细了吧,我这颗心那,就怕以后看不懂!!

所以可以得到:
r ⃗ ′ = O O ′ ⃗ + O ′ A ′ ⃗ = r ⃗ c o s θ + ( 1 − c o s θ ) ( r ⃗ ⋅ u ⃗ ) u ⃗ + u ⃗ × r ⃗ s i n θ = r ⃗ c o s θ + ( 1 − c o s θ ) [ r ⃗ + u ⃗ × ( u ⃗ × r ⃗ ) ] + u ⃗ × r ⃗ s i n θ = r ⃗ + u ⃗ × r ⃗ s i n θ + ( 1 − c o s θ ) u ⃗ × ( u ⃗ × r ⃗ ) \vec{r}&#x27; =\vec{OO&#x27;}+\vec{O&#x27;A&#x27;} =\vec{r}cos\theta+(1-cos\theta)(\vec{r}·\vec{u})\vec{u}+\vec{u}×\vec{r}sin\theta\\ =\vec{r}cos\theta+(1-cos\theta)[\vec{r}+\vec{u}×(\vec{u}×\vec{r})]+\vec{u}×\vec{r}sin\theta\\ =\vec{r}+\vec{u}×\vec{r}sin\theta+(1-cos\theta)\vec{u}×(\vec{u}×\vec{r}) r =OO +OA =r cosθ+(1cosθ)(r u )u +u ×r sinθ=r cosθ+(1cosθ)[r +u ×(u ×r )]+u ×r sinθ=r +u ×r sinθ+(1cosθ)u ×(u ×r )
下面就是将 r ⃗ ′ \vec{r}&#x27; r 向R系内投影,表示为:
r ⃗ ′ R = r ⃗ R + ( u ⃗ × r ⃗ ) R s i n θ + ( 1 − c o s θ ) [ u ⃗ × ( u ⃗ × r ⃗ ) ] R \vec{r}&#x27;^R =\vec{r}^R+(\vec{u}×\vec{r})^Rsin\theta+(1-cos\theta)[\vec{u}×(\vec{u}×\vec{r})]^R r R=r R+(u ×r )Rsinθ+(1cosθ)[u ×(u ×r )]R

r ⃗ ′ R = [ r x ′ r y ′ r z ′ ] ,      r ⃗ R = [ r x r y r z ] ,      u ⃗ R = [ l m n ] \vec{r}&#x27;^R= \left[ \begin{matrix} r&#x27;_x \\ r&#x27;_y \\ r&#x27;_z \\ \end{matrix} \right] , \space\space\space\space \vec{r}^R= \left[ \begin{matrix} r_x \\ r_y \\ r_z \\ \end{matrix} \right] , \space\space\space\space \vec{u}^R= \left[ \begin{matrix} l\\ m\\ n\\ \end{matrix} \right] r R=rxryrz,    r R=rxryrz,    u R=lmn

看到这肯定又不懂了。其实就是将转动后得到的 O A ′ ⃗ \vec{OA&#x27;} OA 投影到原来的R系中,然后在R系内将投影的向量用坐标表示出来了。

此时根据叉乘表达式可以得到:
( u ⃗ × r ⃗ ) R = [ 0 − n m n 0 − l − m l 0 ] [ r ⃗ x r ⃗ y r ⃗ z ] (\vec{u}×\vec{r})^R= \left[ \begin{matrix} 0 &amp; -n &amp; m\\ n &amp; 0 &amp; -l\\ -m &amp; l &amp; 0\\ \end{matrix} \right] \left[ \begin{matrix} \vec{r}_x\\ \vec{r}_y\\ \vec{r}_z\\ \end{matrix} \right] (u ×r )R=0nmn0lml0r xr yr z

(1) U = [ 0 − n m n 0 − l − m l 0 ] U= \left[ \begin{matrix} 0 &amp; -n &amp; m\\ n &amp; 0 &amp; -l\\ -m &amp; l &amp; 0 \end{matrix} \right] \tag 1 U=0nmn0lml0(1)

这又是什么鬼?不要慌,下面来拓展反对称阵。

a ⃗ = [ a 1 a 2 a 3 ] ,     b ⃗ = [ b 1 b 2 b 3 ] \vec{a}= \left[ \begin{matrix} a_1\\ a_2\\ a_3\\ \end{matrix} \right] , \space\space\space \vec{b}= \left[ \begin{matrix} b_1\\ b_2\\ b_3\\ \end{matrix} \right] a =a1a2a3,   b =b1b2b3
a ⃗ × b ⃗ = ∣ i ⃗ j ⃗ k ⃗ a 1 a 2 a 3 b 1 b 2 b 3 ∣ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] \vec{a}×\vec{b}= \left| \begin{matrix} \vec{i} &amp; \vec{j} &amp; \vec{k}\\ a_1 &amp; a_2 &amp; a_3\\ b_1 &amp; b_2 &amp; b_3\\ \end{matrix} \right| = \left[ \begin{matrix} a_2b_3-a_3b_2\\ a_3b_1-a_1b_3 \\ a_1b_2-a_2b_1 \\ \end{matrix} \right] a ×b =i a1b1j a2b2k a3b3=a2b3a3b2a3b1a1b3a1b2a2b1

[ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] [ b 1 b 2 b 3 ] = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] \left[ \begin{matrix} 0 &amp; -a_3 &amp; a_2\\ a_3 &amp; 0 &amp; -a_1 \\ -a_2 &amp; a_1 &amp; 0 \\ \end{matrix} \right] \left[ \begin{matrix} b_1\\ b_2 \\ b_3 \\ \end{matrix} \right] =\left[ \begin{matrix} a_2b_3-a_3b_2\\ a_3b_1-a_1b_3 \\ a_1b_2-a_2b_1 \\ \end{matrix} \right] 0a3a2a30a1a2a10b1b2b3=a2b3a3b2a3b1a1b3a1b2a2b1
则记
( a × ) = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] ,     a ⃗ × b ⃗ = ( a × ) b ⃗ (a×)=\left[\begin{matrix} 0 &amp; -a_3 &amp; a_2\\ a_3 &amp; 0 &amp; -a_1 \\ -a_2 &amp; a_1 &amp; 0 \\ \end{matrix} \right] , \space\space\space \vec{a}×\vec{b}=(a×)\vec{b} (a×)=0a3a2a30a1a2a10   a ×b =(a×)b

因此可以继续往下推导:
( u ⃗ × r ⃗ ) R = U r ⃗ R ,     [ u ⃗ × ( u ⃗ × r ⃗ ) ] R = U ⋅ U r ⃗ R (\vec{u}×\vec{r})^R=U\vec{r}^R , \space\space\space [\vec{u}×(\vec{u}×\vec{r})]^R=U·U\vec{r}^R (u ×r )R=Ur R,   [u ×(u ×r )]R=UUr R
所以:
(2) r ⃗ ′ R = r ⃗ R + ( u ⃗ × r ⃗ ) R s i n θ + ( 1 − c o s θ ) [ u ⃗ × ( u ⃗ × r ⃗ ) ] R = r ⃗ R + U r ⃗ R s i n θ + ( 1 − c o s θ ) U ⋅ U r ⃗ R = ( I + 2 U s i n θ 2 c o s θ 2 + 2 s i n 2 θ 2 U ⋅ U ) r ⃗ R \vec{r}&#x27;^R =\vec{r}^R+(\vec{u}×\vec{r})^Rsin\theta+(1-cos\theta)[\vec{u}×(\vec{u}×\vec{r})]^R\\ =\vec{r}^R+U\vec{r}^Rsin\theta+(1-cos\theta)U·U\vec{r}^R\\ =(I+2Usin\frac{\theta}{2}cos\frac{\theta}{2}+2sin^2\frac{\theta}{2}U·U)\vec{r}^R \tag 2 r R=r R+(u ×r )Rsinθ+(1cosθ)[u ×(u ×r )]R=r R+Ur Rsinθ+(1cosθ)UUr R=(I+2Usin2θcos2θ+2sin22θUU)r R(2)
令:
(3) D = I + 2 U s i n θ 2 c o s θ 2 + 2 s i n 2 θ 2 U ⋅ U D=I+2Usin\frac{\theta}{2}cos\frac{\theta}{2}+2sin^2\frac{\theta}{2}U·U \tag 3 D=I+2Usin2θcos2θ+2sin22θUU(3)
那么
(4) r ⃗ ′ R = D r ⃗ R \vec{r}&#x27;^R =D\vec{r}^R \tag 4 r R=Dr R(4)
之后的关系递推比较简单,假定刚体的固联坐标系为 b 0 b_0 b0,刚体未转动时,刚体固联坐标系与参考坐标系R重合,就是对向量 r ⃗ \vec{r} r (注意,这是刚体没有转动的向量)而言,在两个坐标系中的矢量是相等的:
r ⃗ R = r ⃗ b 0 \vec{r}^R=\vec{r}^{b_0} r R=r b0
在刚体转动后,因为向量 r ⃗ \vec{r} r 与坐标系 b 0 b_0 b0都随着刚体一起转动,转动结束后得到向量 r ⃗ \vec{r} r 和坐标系b。向量 r ⃗ ′ \vec{r}&#x27; r 可以说相对于坐标系b没动:
r ⃗ b 0 = r ⃗ ’ b \vec{r}^{b_0}=\vec{r}’^b r b0=r b
所以:
r ⃗ R = r ⃗ ’ b \vec{r}^{R}=\vec{r}’^b r R=r b
带入(4)可得:
r ⃗ ′ R = D r ⃗ ′ b \vec{r}&#x27;^R =D\vec{r}&#x27;^b r R=Dr b
那么b系到R系的旋转矩阵即为D:
C b R = D = I + 2 U s i n θ 2 c o s θ 2 + 2 s i n 2 θ 2 U ⋅ U C^R_b=D=I+2Usin\frac{\theta}{2}cos\frac{\theta}{2}+2sin^2\frac{\theta}{2}U·U CbR=D=I+2Usin2θcos2θ+2sin22θUU
后面的展开用四元数表示就不再赘述,但在此列出:

定义:
q 0 = c o s θ 2 q 1 = l s i n θ 2 q 2 = m s i n θ 2 q 3 = n s i n θ 2 q_0=cos\frac{\theta}{2}\\ q_1=lsin\frac{\theta}{2}\\ q_2=msin\frac{\theta}{2}\\ q_3=nsin\frac{\theta}{2}\\ q0=cos2θq1=lsin2θq2=msin2θq3=nsin2θ
有:
C b R = [ 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 ) 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 ) 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 ] C^R_b= \left[ \begin{matrix} q_0^2+q_1^2-q_2^2-q_3^2 &amp; 2(q_1q_2-q_0q_3) &amp; 2(q_1q_3+q_0q_2)\\ 2(q_1q_2+q_0q_3) &amp; q_0^2-q_1^2+q_2^2-q_3^2 &amp; 2(q_2q_3-q_0q_1)\\ 2(q_1q_3-q_0q_2) &amp; 2(q_2q_3+q_0q_1) &amp; q_0^2-q_1^2-q_2^2+q_3^2\\ \end{matrix} \right] CbR=q02+q12q22q322(q1q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)q02q12+q22q322(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)q02q12q22+q32


###资源:
秦永元-惯性导航-资源汇总页中下载
学术不需要积分!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值