ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

四轴飞行玩具的姿态解算的原理3. 点乘与叉乘;四元数

2019-02-11 10:52:13  阅读:436  来源: 互联网

标签:四轴 Xb Za Zb 旋转 四元 解算 向量


在讲四元数之前,先讲下向量的点乘和叉乘。

我们先假设有两个向量 :

  a = [Xa Ya Za]   b=[Xb Yb Zb]

一 . 点乘(·):

  点乘又叫内积,他是两个向量的各项乘积之和,其值为一个标量。用数学式可以表示为:

    C= ∑a(i)*b(i)   (i= 1~3);

  或者

    C= a · b  = Xa*Xb + Ya*Yb+ Za*Zb

  又或者

     C = a·b = |a||b|·cos(θ); (θ为ab的夹角)

  又或者

    

  显然这就是最简单的1*N型矩阵乘法。

  几何意义:

  点乘能计算出矢量(向量)之间的夹角。这是由于:

  C = a·b = |a||b|·cos(θ); (θ为ab的夹角)

  所以

  θ  = arccos{ C / (|a||b| } 

二 .叉乘(x):

  叉乘的数学定义如下:

  1. 行列式表示法

  

  = (Ya·Zb - Za·Yb)i - (Xa·Zb - Za·Xb)j + (Xa·Yb - Ya·Xb)k;

  jk=i; ki = j ; ij = k ; 

  kj=-i ; ik = -j ; ji = -k;

  ii = jj = kk = 0 ;

 

  2 .复数表示法:

  如果把a,b 看成超复数:a = (Xa i  + Ya j + Za k)  ,  b= (Xb i + Yb j + Zb k)   

  C =  (Xa i  + Ya j + Za k) · (Xb i + Yb j + Zb k

    =   (XaXb) ii + (XaYb) ij + (XaZb) ik 

    + (YaXb)ji + (YaYb)jj + (YaZb)jk

    + (ZaXb)ki + (ZaYb)kj +(ZaZb)kk

   = (YaZb -ZaYb)i + (ZaXb - XaZb)j + (XaYb-YaXb)k  (带入j i k 的乘法关系) 

  

  3. 矩阵表示法

  显然,叉乘的结果也可看成一个向量:

  

 

  几何意义:

    设向量a.b在一个平面 A 上

    C = a x b ,则新向量 c 垂直于平面A 

    如下图所示:

      

     a·b 可以计算出向量ab 之间的夹角

     axb 可以计算出向量ab构成的平面的朝向

 三 何为四元数

  四元数,是19世纪,由汉密尔顿发明的一种数学工具。我们可以用它来描述三维空间里物体的转动和变换。

  汉密尔顿最初是希望找到一种乘法法则,使其在三维向量运算时满足如下条件:

  1. 运算结果也是三维向量

  2.存在元运算,使得所有向量乘以元等于他自身 Q x I= Q;

  3.有逆运算,并且逆运算与原乘积为元 Q x Q^-1 = I

  4.结合律有效

  点乘/内积(·)不满足1 。 叉乘、外积不满足3。

  后来,哈密尔顿发现,虽然这样的运算在三维向量间无法实现,但在四元数运算间却可以满足要求

  设一个四元向量:

  Q = q0+q1 i + q2 j +q3 k

  其中i,j,k是三个虚部,他们的关系如下:

  i^2 = j^2 = k^2 = 0 ;

  ij= k ; ki=j ; jk = k ;

  kj= -i ; ik =-j; ji= -k;

  显然,两个四元数相乘,就符合我们之前说到的叉乘的运算关系。

  四元数为何可以满足1-4个条件,证明的过程,请有数学能力的小伙伴们去查阅资料。我这里就单纯的认为这个结论是正确的就行了。

  那么,当两个四元数相乘时,在几何上代表什么意义呢?

  可以有两种解释:

  1. Qa x Qb : 对 Qa 进行了Qb程度的左旋转(在4维空间上)

  2. Qa x Qb : 对Qb进行了Qa程度的右旋转(在4维空间上)

   任何四维空间的旋转,都可以唯一的拆分为一个坐旋转和一个右旋转。

  既 Q= qL(左旋转) X P X qR(右旋转)

四 . 四元数与三维空间

  前面介绍了四元数,以及四元数的乘法(空间旋转)。那么,四元数是如何应用到三维空间的呢。

       哈密尔顿定义了纯四元数 Q纯 =  {0 ,Wx , Wy, Wz }

  显然,纯四元数就是实部为0 的特殊四元数。

  并且发现并论证了一个定理: 

   Q纯 = q · P纯  ·  q^-1  ; 

  这意味着: 一个纯四元数(P纯),被(q)叉乘 ,再叉乘(q^-1),, 其结果依然是纯四元数Q; (q可以不是纯四元数)

  从几何上说,就是: 一个三维空间向量(纯四元数), 经过一次四维空间左旋转(四元数q) ,再做一次四维空间右旋转(四元数 q^-1),其结果依然是个三维空间向量(纯四元数)

  这就是四元数在三维空间运用的基础定理!

   用于描述旋转的四元数q,可以写为如下形式:

  q      = {cos(θ/2)  , sin(θ/2) Vx , sin(θ/2) Vy, sin(θ/2) Vz}

  q^-1 ={cos(θ/2)  , -sin(θ/2) Vx , -sin(θ/2) Vy, -sin(θ/2) Vz}

  它的几何意义是:

  P纯代表的向量,在三维坐标x,y,z(可以理解为i, j, k) 中绕向量V={Vx,Vy,Vz},按照右手定律,转动了θ度,得到了向量Q纯

  

 

  欧拉角描述的旋转,是用三次旋转依次组合而成。

  而四元数描述的旋转,是绕某一个向量,旋转θ度而形成。

 

五 . 用矩阵描述旋转Q

  之前已经知道:

    Q= q·A·(q^-1)

  设其中:

    q = {q1 , q2 ,q3 ,q4 }  

  则经过计算可得:

    

 

  

 

  

  

 

标签:四轴,Xb,Za,Zb,旋转,四元,解算,向量
来源: https://www.cnblogs.com/stonenox/p/10337205.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有