四轴飞行玩具的姿态解算的原理3. 点乘与叉乘;四元数
作者:互联网
在讲四元数之前,先讲下向量的点乘和叉乘。
我们先假设有两个向量 :
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