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

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

一、前提

如图所示(为了便于理解,我把原图擦去了一部分),假定有刚体金刚圈AB,坐标系R,注意这个坐标系不与金刚圈固联(无论金刚圈怎么转,我坐标系坚决不动,相当于这是一个导航坐标系)。当看到这个图,你肯定不知道坐标系R在哪了。没关系,这都不重要,可以这么认为,坐标系就假定是以O为原点的右手系(O隐藏的很深,仔细看)。
这里写图片描述
金刚圈跟坐标系R介绍完了,就该谈一谈其中的元素了。请看下面这个被我蹂躏得比较轻的图。连接OO’O’为圆心)得矢量 O O ,连接O’A得矢量 O A ,连接O’B得矢量 O B O A 垂直于 O B ),连接OA得矢量 O A 记为 r 。把这些元素定义好了,金刚圈就开始绕 O O 转动,转动方向沿短弧沿短弧 A 沿 B
这里写图片描述
圆圈的转动还是要作一下说明,如下图所示(这个图没有遭到我的毒手)。在 O O 上取单位矢量 u ,该矢量可以等效成刚体的旋转轴。 O A 旋转角度 θ 得到 O A ,连接OA’得到 O A 记为 r
这里写图片描述
到此为止,把旋转的关系理清楚了。下面请看四元数与姿态阵关系的推导过程。

二、推导

推导的过程其实就是分析转动前后的矢量 r r 的关系。

根据前面的描述,首先可以得到:

O O = ( r · u ) u

为什么呢?因为:

O O = ( | r | · | u | · c o s < r , u > ) u = | O O | · u = O O

那么可求:

O A = r O O = r ( r · u ) u

O B = u × O A = u × r u × ( r · u ) u = u × r ( r · u ) u × u = u × r

这一步,点乘是一个实数,所以会有 u × u ,而 u × u = 0

说到这里又要再加一个图了,如下图,这个图的意思不用我多说了吧。
这里写图片描述
通过这个图求 O A :

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 θ

这样, r 就可以求得:
r = O O + O A = r c o s θ + ( 1 c o s θ ) ( r · u ) u + u × r s i n θ

另外有这样一个公式,在推导的过程中需要用到(公式来源:向量积-拉格朗日公式):

a × ( b × c ) = b ( a · c ) c ( a · b )

我们知道向量的点乘满足交换律,所以可以写成:
a × ( b × c ) = b ( a · c ) ( a · b ) c

这时候令 a = b = u c = r ,可得:
u × ( u × r ) = u ( u · r ) ( u · u ) r

现在就跟书上的对照起来啦。接下来还有 u · u = 1 ,所以上式可表示为:
u × ( u × r ) = u ( u · r ) r = ( r · u ) u 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 )

下面就是将 r 向R系内投影,表示为:
r R = r R + ( u × r ) R s i n θ + ( 1 c o s θ ) [ 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 ]

看到这肯定又不懂了。其实就是将转动后得到的 O A 投影到原来的R系中,然后在R系内将投影的向量用坐标表示出来了。

此时根据叉乘表达式可以得到:

( u × r ) R = [ 0 n m n 0 l m l 0 ] [ r x r y r z ]


(1) U = [ 0 n m n 0 l m l 0 ]

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

a = [ a 1 a 2 a 3 ] ,       b = [ b 1 b 2 b 3 ]

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 ]


[ 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 ]

则记
( a × ) = [ 0 a 3 a 2 a 3 0 a 1 a 2 a 1 0 ]       a × b = ( a × ) b

因此可以继续往下推导:

( u × r ) R = U r R ,       [ u × ( u × r ) ] R = U · U r 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

令:
(3) D = I + 2 U s i n θ 2 c o s θ 2 + 2 s i n 2 θ 2 U · U

那么
(4) r R = D r R

之后的关系递推比较简单,假定刚体的固联坐标系为 b 0 ,刚体未转动时,刚体固联坐标系与参考坐标系 R重合,就是对向量 r (注意,这是刚体没有转动的向量)而言,在两个坐标系中的矢量是相等的:
r R = r b 0

在刚体转动后,因为向量 r 与坐标系 b 0 都随着刚体一起转动,转动结束后得到向量 r 和坐标系 b。向量 r 可以说相对于坐标系 b没动:
r b 0 = r b

所以:
r R = r b

带入(4)可得:
r R = D r 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

后面的展开用四元数表示就不再赘述,但在此列出:

定义:

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

有:
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 ]


资源:

惯性导航-该资源仅供学术交流,如有侵权,请联系删除 密码:iml9
学术不需要积分!

猜你喜欢

转载自blog.csdn.net/Pro2015/article/details/82224517