文档库 最新最全的文档下载
当前位置:文档库 › 四元数

四元数

四元数
四元数

CYPH 四元數

Hom19910422@https://www.wendangku.net/doc/8d3338669.html, 1.方向餘弦矩陣DCM

先建立旋轉矩陣R x,R y,R z,

繞X, Y, Z軸旋轉角度分別為 θ,?,ψ

R x=(100

0Cos[θ]Sin[θ]

0?Sin[θ]Cos[θ]

),R y=(

Cos[?]0?Sin[?]

010

Sin[?]0Cos[?]

),R z=(

Cos[ψ]Sin[ψ]0

?Sin[ψ]Cos[ψ]0

001

)

設一向量P(X, Y, Z), 並依Z-Y-X順序對向量旋轉

對Z軸旋轉, P’為P對Z軸旋轉後的向量

P′=R z·P

對Y軸旋轉, P’’為P’對Y軸旋轉後的向量

P''=R y·P′=R y·R z·P 對X軸旋轉, P’’’為P’’對X軸旋轉後的向量

P'''=R x·P''=R x·R y·R z·P 令R xyz=R x·R y·R z, 則

R xyz=(Cos[?]Cos[ψ]Cos[?]Sin[ψ]?Sin[?]

Cos[ψ]Sin[θ]Sin[?]?Cos[θ]Sin[ψ]Cos[θ]Cos[ψ]+Sin[θ]Sin[?]Sin[ψ]Cos[?]Sin[θ] Cos[θ]Cos[ψ]Sin[?]+Sin[θ]Sin[ψ]?Cos[ψ]Sin[θ]+Cos[θ]Sin[?]Sin[ψ]Cos[θ]Cos[?]

)

2. 四元數 Quaternions

四元數可以解決DCM 旋轉所產生的萬向節鎖(Gimbal lock)問題, 計算量也比DCM 更為少 四元數由一個實數與三個虛數組成, 可表示成

Q =q 0+q 1i ^+q 2j ^+q 3k ^=Cos[θ2]+n ^

·Sin[θ2

]

其中n 為轉軸方向, θ2?為轉角大小, i,j,k 關係為

i ^

·i ^=j ^·j ^=k ^·k ^

=?1

i ^

·j ^=?j ^·i ^=k ^

, j ^

·k ^

=?k ^

·j ^

=i ^

, k ^

·i ^=?i ^·k ^=j ^

設有兩四元數?Q A , Q B , 其乘法關係為

?Q =Q A ·Q B =(q A0+q A1i ^+q A2j ^+q A3k ^)·(q B0+q B1i ^+q B2j ^+q B3k ^

)

=(q A0·q B0?q A1·q B1?q A2·q B2?q A3·q B3q A1·q B0+q A0·q B1?q A3·q B2+q A2·q B3q A2·q B0+q A3·q B1+q A0·q B2?q A1·q B3

q A3·q B0?q A2·q B1?q A1·q B2+q A0·q B3)·(1i j k

)

旋轉四元數

?Q xyz

=Q z ·Q y ·Q x =(Cos[ψ]+Sin[ψ]k ^)·(Cos[?]+Sin[?]j ^)·(Cos[θ]+Sin[θ]i ^

)

?(q 0

q 1q 2

q 3

)=(

Cos [ψ2]Cos [?2]Cos [θ2]+Sin [ψ2]Sin [?2]Sin [θ2]

Cos [ψ]Cos [?]Sin [θ]?Sin [ψ]Sin [?]Cos [θ]Cos [ψ2]Sin [?2]Cos [θ2]+Sin [ψ2]Cos [?2]Sin [θ2]Sin [ψ]Cos [?]Cos [θ]?Cos [ψ]Sin [?]Sin [θ])

·(1i j k )

設一向量 R =xi ^

+yj ^

+zk ^

, 及旋轉後向量 R′=x′i ^

+y′j ^

+z′k ^

, 四元數滿足

R′=Q ?1·R ·Q

四元數倒數

Q ?1

=1=Q ??=Q ?

?Q ?

當四元數被歸一化後 ?Q ?=1

Q ?1=Q ?

可得到

R′=Q ?·R ·Q

將其展開

x′i ^+y′j ^+z′k ^=(q 0?q 1i ^?q 2j ^?q 3k ^)·(xi ^+yj ^+zk ^)·(q 0+q 1i ^+q 2j ^+q 3k ^

)

?(x′

y′z′)=(q 02+q 12?q 22?q 322(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 02?q 12+q 22?q 322(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 02?q 12?q 22+q 32

)·(x y z )

令四元數旋轉矩陣為 M q

M q =(M 11M 12M 13

M 21M 22M 23M 31M 32M 33)=(q 02+q 12?q 22?q 322(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 02?q 12+q 22?q 322(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 02?q 12?q 22+q 32

)

將 Q xyz 帶入 M q 會得到與 R xyz 相同結果

M q =(M 11M 12M 13

M 21M 22M 23M 31M 32M 33

)

=(Cos [?]Cos [ψ]Cos [?]Sin [ψ]?Sin [?]

Cos [ψ]Sin [θ]Sin [?]?Cos [θ]Sin [ψ]Cos [θ]Cos [ψ]+Sin [θ]Sin [?]Sin [ψ]Cos [?]Sin [θ]Cos [θ]Cos [ψ]Sin [?]+Sin [θ]Sin [ψ]?Cos [ψ]Sin [θ]+Cos [θ]Sin [?]Sin [ψ]Cos [θ]Cos [?]

)

將尤拉角轉成四元數, 由 M q 可得出

θ=ArcTan [M 2333],?=?ArcSin [M 13],ψ=ArcTan[M 12

11

]

四元數微分, 已知一四元數 Q =Cos[θ

2]+n ^

·Sin[θ

2

], 對時間微分

?Q =?1Sin[θ]·?θ+?n ^

·Sin[θ]+n ^·1

Cos[θ]·?θ

已知 n ^

·n ^

=?1,

?n ^

?t

=0,

?θ?t

=ωEb E , E 為地理座標系, b 為飛行器坐標系

?Q =1n ^·ωEb E

·(Cos [θ]+n ^·Sin[θ])=1ω?Eb E ·Q

因為陀螺儀在飛行器上測到的角速度為 ω?Eb

b

=ωx i ^

+ωy j ^

+ωz k ^

, 故將

ω?Eb E

轉換成

ω?Eb b

會較為方便

ω?Eb b =Q ?ω?

Eb E ·Q ?Q ·ω?

Eb b =Q ·Q ?·ω?

Eb E ·Q =ω?

Eb E ·Q

??Q ?t =12ω?Eb E ·Q =12

Q ·ω?Eb b

將 ?Q ?t =1

2Q ·ω?Eb b 展開

?Q =1(q 0+q 1i ^+q 2j ^+q 3k ^)·(ωx i ^+ωy j ^+ωz k ^)=1( 0

?ωx ?ωy ?ωz ωx

0ωz ?ωy ωy

?ωz 0ωx ωz

ωy ?ωx

0)

·(q 0q 1

q 2

q 3)

整理為 ?Q

?t

=Ωb ·Q 其中

Ωb =1(

0?ωx ?ωy ?ωz ωx

0ωz ?ωy ωy

?ωz 0ωx ωz

ωy ?ωx

0)

使用一階Runge-Kutta 更新四元數, 假設有一微分方程

?X

=f[X[t],ω[t]]

則其解為

X [t +Δt ]=X [t ]+Δt ·f[X[t],ω[t]]

其中 Δt 為取樣週期, 將套用至四元數

Q [t +Δt ]=Q [t ]+Δt ·Ωb [t ]·Q [t ]

展開上式

(q 0q 1q 2q 3)t+Δt =(q 0

q 1

q 2q 3)t +Δt 2

(?ωx ·q 1?ωy ·q 2?ωz ·q 3+ωx ·q 0?ωy ·q 3+ωz ·q 2+ωx ·q 3+ωy ·q 0?ωz ·q 1?ωx ·q 2+ωy ·q 1+ωz ·q 0

)

只需利用角速度即可更新四元數

5. 使用四元數融合加速度計

利用四元數將地理的重力加速度旋轉至飛行器上面, 再與加速度計讀出的值(已歸一化的)做外積, 得出誤差, 用此誤差對角速度做校正融合

重力加速度

g ?

=gz ^

做歸一化 g ?→g ^=z ^

設旋轉至飛行器上的重力加速度為 g ^

b

g ^

b =M q ·g ^

=(M 11M 12M 13M 21M 22M 23M 31M 32M 33)·(0

01)

?g ^

b =(g bx g by g bz )=(M 13

M 23M 33

)

飛行器上的加速度計測得的加速度 a ?

b 做歸一化

a ?

b →a ^

b

做外積, 計算誤差 e ?

e ?=a ^b ×g ^

b =|x ^

y

^z ^

a bx

a by a bz g bx

g by

g bz

|=|a by a bz g by g bz |x ^+|a bz a bx g bz g bx |y ^

+|a bx a by g bx g by |z ^

?e ?

=(e x

e y e z

)=(a by ·g bz ?a bz ·g by a bz ·g bx ?a bx ·g bz a bx ·g by ?a by ·g bx )

透過PID, 將 e 融合至角速度上

參考書籍:

鄭正隆, ”慣性技術 INERTIAL TECHNOLOGY ”, 崧博出版事業有限公司, 2011

旋转的矩阵与四元数的转换算法

绕指定方向的轴线的旋转 旋转的矩阵与四元数的转换算法 一、基本知识 四元数 q=w+xi+yj+zk, q=w+v, q ?1=|q|2q ?. 其中q ?= w ?xi ?yj ?zk 表示q 的共轭。 vv' =v×v' ?v?v' …… ① qq'= (ww'?v?v') + (wv' +vw' +v×v'), …… ② v ?v' = ?(vv' +v'v) /2 , …… ③ v×v' = (vv' ?v'v) /2 . …… ④ v 2=?|v|2. 内积v ?v =|v|2. 二、旋转表示为四元数 绕指定方向n 的旋转公式为 x'=(x ?n)n(1?cosθ ) + cosθ x +sinθ n×x …… ⑤ 其中的向量运算转化为四元数运算得到 x'= ?(x n+nx)n (1?cosθ)/2 +cosθx +sinθ (n x?x n)/2, 由于|n|=1, 故n ?1=?n. 因此有 x'= (1+cosθ)x/2 +sinθ (n x?x n )/2 ?nxn (1?cosθ)/2 . …… ⑥ x 的平行、垂直分量记为x p =(x?n)n , x v = x?x p , 则?nxn= x p ? x v , 与x 关于n 轴对称。 (nx?xn)/2= n×x, 是x v 旋转+90°的结果。 若 n ⊥x, x?n =0,即xn=?nx, 此时nxn=x, 故 x' =(cosθ+n sinθ)x . q=r(cosθ+nsinθ)称为四元数的三角式,其中n 为单位向量,它的几何意义是,qx 表示对向量x 绕方向n 旋转θ角,然后长度扩大为r 倍。任何四元数都有三角式q=w+v= |q|(w/|q|+n|v|/|q|)=r(cosθ+nsinθ). φ(x)=qxq ?1称为四元数域上的合同变换。若q=a+bn, |n|=1, 则 |q|2 =a 2+b 2 , |q|2φ(x) = qx q ? =( a+bn)x(a ?bn) =(ax+bnx)(a ?bn) =a 2x+ bnxa ? axbn ?bnxbn= a 2x+ ab(n x?xn)?b 2nxn. 即 |q|2(qxq ?1) = a 2x+ ab(n x?xn)?b 2nxn …… ⑦

四元数转欧拉角代码解析

四元数转欧拉角代码解析 本文的内容就是解析正点原子MPU6050的mpu_dmp_get_data()函数中,三个欧拉角的由来,即如何将MPU6050输出的四元数转化为姿态解算所需要的欧拉角。 *pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch *roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll *yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3; //yaw 其实上述三个公式的核心就是将一次的姿态变换分别用四元数矩阵和欧拉角矩阵表示出来,由于这两个矩阵是等价的即对应元素都相等,通过简单的对比运算就可以得到上述的三个公式。 因此,我将从1.四元数矩阵的得到;2.欧拉角矩阵的得到;3.两个矩阵的等价运算三个部分进行说明。 1.四元数矩阵的得到 三重矢量计算公式: AX(BXC)=B(A·C)-C(A·B) 这个公式很好记,右边部分就是BACK-CAB(后面的出租车)

2.欧拉角矩阵的得到 q02+q12+q22+q32=1 从9.2.33到9.2.34的化简,其实就是利用 进行化简,把1去掉即可。 将右侧的矩阵乘开,可得到一个3x1矩阵, 与左边3x1矩阵对应元素相等,这个相等的 关系,就是上个框框中求出的三个等式。 各轴上的单位1,就是图1.2.2矩阵任意 行与列各个元素的平方和为1。

到这里,用欧拉角表示描述一次旋转变换已经结束了。然而,上述的姿态矩阵C n b仅仅是《惯性导航》这本书先Z,再X,最后Y旋转变换而形成的姿态矩阵,这样的旋转顺序其实是和很多大家实际使用的飞控代码不一样的(同样的,关于θφγ的实际意义其实也没有明确的规定)。此文目的就是解析“正点原子”飞控代码中四元数转欧拉角部分,因此,接下来,

四元数

为什么使用四元数 为了回答这个问题,先来看看一般关于旋转(面向)的描述方法-欧拉描述法。它使用最简单的x,y,z值来分别表示在x,y,z轴上的旋转角度,其取值为0-360(或者0-2pi),一般使用roll,pitch,yaw来表示这些分量的旋转值。需要注意的是,这里的旋转是针对世界坐标系说的,这意味着第一次的旋转不会影响第二、三次的转轴,简单的说,三角度系统无法表现任意轴的旋转,只要一开始旋转,物体本身就失去了任意轴的自主性,这也就导致了万向轴锁(Gimbal Lock)的问题。 还有一种是轴角的描述方法(即我一直以为的四元数的表示法),这种方法比欧拉描述要好,它避免了Gimbal Lock,它使用一个3维向量表示转轴和一个角度分量表示绕此转轴的旋转角度,即(x,y,z,angle),一般表示为(x,y,z,w)或者(v,w)。但这种描述法却不适合插值。 那到底什么是Gimbal Lock呢?正如前面所说,因为欧拉描述中针对x,y,z的旋转描述是世界坐标系下的值,所以当任意一轴旋转90°的时候会导致该轴同其他轴重合,此时旋转被重合的轴可能没有任何效果,这就是Gimbal Lock,这里有个例子演示了Gimbal Lock,点击这里下载。运行这个例子,使用左右箭头改变yaw 为90°,此时不管是使用上下箭头还是Insert、Page Up键都无法改变Pitch,而都是改变了模型的roll。 那么轴、角的描述方法又有什么问题呢?虽然轴、角的描述解决了Gimbal Lock,但这样的描述方法会导致差值不平滑,差值结果可能跳跃,欧拉描述同样有这样的问题。 什么是四元数 四元数一般定义如下: q=w+xi+yj+zk 其中w是实数,x,y,z是虚数,其中: i*i=-1 j*j=-1 k*k=-1 也可以表示为: q=[w,v] 其中v=(x,y,z)是矢量,w是标量,虽然v是矢量,但不能简单的理解为3D空间的矢量,它是4维空间中的的矢量,也是非常不容易想像的。 四元数也是可以归一化的,并且只有单位化的四元数才用来描述旋转(面向),四元数的单位化与Vector

四元数姿态的梯度下降法推导和解读

四元数姿态的梯度下降法推导和解读 笔者前面几篇文章讨论的是基于四元数的互补滤波算法,并单独对地磁计融合部分做了详细的讨论和解释。而本文讨论的姿态融合算法叫做梯度下降法,这部分代码可以参见Sebastian O.H. Madgwick在2010年4月发表的一篇论文(An efficient orientation filter for inertial andinertial/magneticsensor arrays),这篇论文利用四元数微分方程求解当前姿态,然后分别利用加速度计和地磁计进行补偿,推导出两种姿态融合算法。两种算法均为梯度下降法,而其中地磁计的处理方式笔者已经在《四元数姿态解算中的地磁计融合解读》一文中详细讨论了,这里笔者将对Madgwick对于加速度计和地磁计的梯度下降法做出详细的解释,期间一定有个人不足的地方,仅供参考,希望和各位网友一起学习! 首先来谈谈什么是梯度。维基百科中解释的是“标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。”很显然,梯度和变化率有关。现在我们引入标量函数f(x),对标量函数f(x)求导,不难得到f’(x)就是梯度,就是曲线在某一点的斜率。梯度下降法就是我们顺着这个在某一点下降速度最快的反方向一直走,走到一个极值点,这个点就是最优解(稳定解)。 那么这个梯度的概念和我们的姿态解算有什么关系? 我在前面的文章中已经说明:我们求解姿态就是求解的转换矩阵(矩阵元素就是四元数)。这个转换矩阵是有误差的,我们所要做的工作就是采用某种算法,消除误差,最后得到的解就是我们的近似精确解,也就是姿态四元数了。消除误差四个字,在实际的实现过程中,是通过误差函数来实现的。定义误差函数ef(x),那么我们的工作就是令ef(x)=0,求解上述方程得到x的值。我们在求解高阶方程的时候,一般的方法就是求导,求极值点,根据这些值来判断精确值个数和位置。这是我们高中所学习到的知识,在这里是一样的。只不过,这里的误差函数ef(x) 不再是之前讨论的简单的标量函数了,他的自变量x变成了向量[q0 q1 q2 q3]。这也就是说,原先的标量函数ef(q) 变成了如今的标量函数ef([q0 q1 q2 q3]) ,他仍然是标量函数,但是自变量是向量[q0 q1 q2 q3]。 对上述自变量是向量的标量函数,我们要用梯度法求解,就必须求导。标量函数对向量求导很简单,只需要分别对向量中的各个变量求偏导即可: 但是,我们的姿态解算是三维姿态,不是一维姿态,所以,这里的ef(q)并不是一个标量函数,实质上是一个向量函数ef ( q ),这个向量函数里面有三个元素,分别对应xyz轴的三个分量,每个分量又由一个四元数向量q构成。那么现在就引入了一个较为复杂的误差函数ef ( q ),该误差函数不光自变量是一个向量,并且因变量也是一个向量,这种函数叫做多元向量函数。那么我们现在的问题就转化为求多元向量函数的极值问题。 针对上述极值问题,在计算机中,多采用数值解法,如最速下降法、牛顿法、共轭梯度法。我们这里讨论就是第一种算法,又叫做梯度下降法。PS:梯

[J]基于四元数姿态确定的扩展卡尔曼滤波方法

20。4中国控制与决策学术年会论文集 Precedingsof2004a妊,螂fControland£k口n。力Conference 基于四元数姿态确定的扩展卡尔曼滤波方法 李金良,刘向东,张宇河,修春波 (北京理工大学自动控制系,北京]00081) 摘要:针对卫星机尉情况下姿寿碓定闸燕提出了一种扩展卡车曼媳敢方法,栗用陀螺忮、太阳敏麝器和红井地平戗作为测量元件.秉用姿态四元撤设计荽态估计嚣井建立更加准砖有兢的盏性误差方程.仿真结果表明,使用所提出的姿卷确定算法能较好地完威卫星婆奄确定的要采. 关键词:姿态四元敷;姿志.喃定;扩展÷尔曼蘸j置;卫星 AttitudedeterminationofextendedKalmanfilteringbasedonquaternion LIJin—liang,L见TXiang—dang,ZHANGYu—k.盖几.Chun—bo (DepartmentofAutomaticControl,&ij/ngInstituteofTechnology,Beijlng100081,China.Correspondem.LtJ1.一iiang,E—mail:ljliang@bit.edu.cn) Abstract:AnextendedKalmanfihermgtechniqueiorthelargeangularmaneuveringandnormalmodeat:itudedeternainadon。fEsatelliteispresentedbyusinggyrc,sunSexqsorsandinfraredhorizonscalaneTeo.TheattitudequatermonrepresentationisadaptedtOdesNnaDattitudeestimatorandintegrationlinearerrorequationsareeszahlished.Theresultsofchesimulationshowthalatutudedeterminationisaccuratelyachievedbyusmgtheattizudedeterminationalgorithm. r:≈words:attitudequaterinon;attitude deter叫nat】。n:ex『tendedKalma口ii]tering:satellite i引言 卫星姿态确定系统决定了卫星控制和指向精度.而姿态敏感器的测量精度和姿态确定算法直接影响确定系统的精度.在常规的确定系统中,通常采用陀螺作为基准元件测量连续的姿态角速度,使用太阳敏感器、红外地平仪或磁强计=耐量姿态位置.目前,已有很多姿态确定算法,诸如宜适应滤波、预测滤波、卡尔曼滤波、自适应卡尔曼滤渡、扩展卡尔曼滤波等,用于减小敏感器的测量误差和提高确定系统的测量精度.本文使用扩展卡尔曼滤波方法研究了太阳同步轨道卫星的姿态确定,该卫星采用了陀螺、太阳敏感器、红外地平仪构成的测量系统.为各敏感器建立了更加详细的姿态估计器.考虑在大姿态角度下Euler角描述容易引起奇异性,本文采用了四元数描述建立卫星运动学方程.仿真结果表明,该方法有效地提高了卫星的测量精度. 2姿态运动学方程 使用四元数q*=b。目,口:gaj7描述在星体坐标系相对于当地轨道坐标系的卫星姿态,它的矩阵可用四元数表示如下: T。(‰)= r2(酣+爵)一12(吼gl+口。舶)2(口妇1一g。g:)一 l2曲:q2一go吼)2(毹+一)一l2(口2吼+q。q1)| l2(目,目。+goq2)2(口z啦一口。口】)2(矗+一)一1J \▲,相应四元数描述的动力学方程为 1 j-一÷口。@A(nk), ● c‰=Ⅲ-一7乙(‰)吣.(2)式中:o表示四元数乘法,A(‰)一[o‰1]。,% 收稿日期:2003一lo-12. 作者简介:李金良(1§77一),男,北京人,硬±生,从事卫星姿志控制的研究 T = -T转置方向余弦矩阵的四元数表示

常见财务软件取数方法

新年策划——常见财务软件取数方法(用友系列)[复制链接] 1984 ?组别管理员 ?生日1970-1-1 ?帖子755 ?积分34603 ?性别保密 ?注册时间 2007-08-06 1# 字体大小: t T 发表于 2008-01-30 11:38 |只看楼主 常见财务软件取数方法(用友系列) 用友财务软件是目前使用最广泛的财务软件之 一 经过最近的收集,我对用友财务中较为典型版 本数据采集的信息进行整理,希望能对论坛的 朋友有帮助 因为没条件对财务软件逐个进行测试,有错漏 的地方请论坛朋友指正。 用友系列 软件名称用友6.0 数据库类型Dbase 数据格式DBF格式 数据存放路 径 在用友软件的默认安装路径下的ufsoft目录 下的所有DBF文件。 数据获取方 法 直接将所有相对应的数据存放文件拷贝到移 动硬盘或U盘即可。 软件名称用友V7.0至U8.12 数据库类型Access 数据格式MDB格式 数据存放路 径 用友7.0 在软件默认安装路径ufsoft目录下的所有 ZW.MDB文件。用友8.0

在服务器用友8.0的安装路径下的备份目录ufsoft目录下的所有UFDATA.MDB文件。 数据取数方 法直接将所有相对应的数据存放文件拷贝到移动硬盘或U盘即可。 软件名称用友U8.20至U850 数据库类 型 SQL Server 数据格式MDF格式,备份文件为BAK格式 数据存放路径一般情况下其数据库文件会放置在某硬盘分区下,如:C:\Program Files\Microsoft SQL Server\MSSQL\Data,后缀名为*.mdf的文件即是数据文件,后缀名为*.ldf的文件则是数据库日志文件。但若被查单位数据管理比较正规,则有可能在软件安装时改变保存路径。 数据取数 方法 方法请参看我的另一贴:点我 软件名称用友V933至NC系列 数据库类型Oracle 数据格式备份文件为DMP格式 数据取数方 法Oracle的数据采集方式请参看我的另一贴:点我

基于四元数方法的姿态解算

基于四元数方法的姿态解算方法分析 摘要:载体的姿态解算算法是实现捷联式惯性导航系统精确导航的核心技术之一。分析了欧拉法、方向余弦法、四元数法求解姿态矩阵的优缺点,采用四元数法与方向余弦法两种解算方法分别计算载体姿态,两种方法的计算结果之差与理论真值比较以得到解算的相对误差,从而验证了四元数法的正确性和有效性。最后,指出提高采样频率和采用高阶计算算法能进一步减小姿态解算误差。数字化仿真与转台试验结果表明,本文提出的载体姿态解算法具有良好的实时性。 1引言 捷联惯导是一种自主式的导航方法。该方法将陀螺仪和加速度计直接安装在载体上,省掉机电式导航平台,利用计算机软件建立一个“数学平台”来代替机电平台实体[1]。由于其结构简单且抗干扰能力强,目前已成为航空航天、航海、机器人、智能交通等领域的研究热点之一。 姿态解算是捷联式惯性导航系统的关键技术,通过姿态矩阵可以得到载体的姿态和导航参数计算需要的数据,是捷联式惯导算法中的重要工作。载体的姿态和航向体现了载体坐标系与导航坐标系之间的方位关系,确定两个坐标系之间的方位关系需要借助矩阵法和力学中的刚体定点运动的位移定理。通过矩阵法推导方向余弦表,而刚体定点运动的位移定理表明,定点运动刚体的任何有限位移都可以绕过定点的某一轴经过一次转动来实现。目前描述动坐标相对参考坐标系方位关系的方法有多种,可简单地将其分为3类,即三参数法、四参数法和九参数法「1-2]。三参数法也叫欧拉角法,四参数法通常指四元数法,九参数法称作方向余弦法。欧拉角法由于不能用于全姿态飞行运载体上而难以广泛用于工程实践,且实时计算困难。方向余弦法避免了欧拉法的“奇点”现象,但方程的计算量大,工作效率低。随着飞行运载体导航控制系统的迅速发展和数字计算机在运动控制中的应用,控制系统要求导航计算环节能更加合理地描述载体的刚体空间运动,四元数法的研究得到了广泛重视。本文全面分析了3种解算方法的特点,通过对比四参法与九参法的计算结果以验证四元数法的正确性和有效性,基于数值仿真和转台实验相结合的分析方法得到进一步减少姿态解算误差的有效途径,为捷联式惯性导航技术的工程实践提供参考。(就是这部分内容需要程序解算,不会搞) 2姿态矩阵的计算方法 由于载体的姿态方位角速率较大,所以针对姿态矩阵的实时计算提出了更高的要求。通常假定捷联系统“数学平台”模拟地理坐标系,即导航坐标系;而确定载体的姿态矩阵即为研究载体坐标系(6)和导航坐标系(E)的空间转动关系,一般用载体坐标系相对导航坐标系的三次转动角确定,习惯上俯仰角和偏航角用B和必表示,滚转角用Y表示。目前主要的研究方法为:欧拉法、方向余弦法与四元数法。图1为捷联式惯性导航原理图。

四元数小波变换

四元数小波变换 Selesnick 【11】提出,基于简单阈值许多真实信号的小波系数稀疏度能够优化,尽管如此,小波变换仍然存在四种基本的缺点: 振荡——奇异点周围的小波系数更易发生积极或消极的振荡,这使奇点提取和信号建模困难。 平移敏感性——信号或图像微小的平移可能会使小波系数发生波动,从而造成混乱。 混叠性——在重建信号中,任何小波处理将打破正向和反向变换之间的平衡导致假象。 缺乏方向性——由于缺乏方向选择性,常见小波的构建结果会产生棋盘状图案。 为了解决上述问题, Selesnick 【11】基于双树框架设计了一种复小波,该框架有两个正交小波,一个作为复小波的实部,一个为虚部。因为实与虚小波是希尔伯特变换(HT)对,所以复小波变换(CWT)的系数大小是近似平移不变的但有大量冗余。CWT 是DWT D 2的一般化,同时QWT 是CWT 的一种,从而为D -2信号提供了一个更丰富的尺度空间分析。与DWT 相反,它是近似于平移不变的并给图像提供一个幅值-相位局部分析。 为了方便进一步的讨论,我们简要地回顾一些四元数和QWT 构建的基本思想。 四元数代数H 是哈密尔顿在1843年发明的,它是复代数的一般化。 {}R d c b a dk cj bi a q ∈+++==H ,,, (8) 其中正交虚数k j i 和,满足以下规则: j ki i jk k ij k j i ===-===,,,1222 四元数的另外一个表述是 ψθφk j i e e e q q = (9) 其中()[)[)[]4,42,2,,,ππππππψθφ-?-?-∈。它是利用一个幅值和三个称为相位的角度。它的计算公式可以参考Bulow 【4】。四元解析信号是由希尔伯特变换()HT 的部分(H 1,H 2)和总的(H T )定义的。 ()()()()()()()()y x f kH y x f jH y x f iH y x f y x f T A ,,,,,21+++= ()10 我们从实可分离尺度函数?和母小波D V H ψψψ,,开始,可分离就是满足 ()()()y x y x h h ψψψ=,。根据四元解析信号的定义,QWT ,即D 2小波分析可以构建如下。 ()()()()()()()()y x k y x j y x i y x g g g h h g h h ?????????+++= ()()()()()()()()y x k y x j y x i y x g g g h h g h h H ?ψ?ψ?ψ?ψψ+++= ()()()()()()()()y x k y x j y x i y x g g g h h g h h V ψ?ψ?ψ?ψ?ψ+++= ()11 ()()()()()()()()y x k y x j y x i y x g g g h h g h h D ψψψψψψψψψ+++= 沿行或列D 2HT 类似于D 1HT 。考虑到D 1希尔伯特小波函数对()h g h H ψψψ=,和尺度函数对()h g h H ???=,,D 2小波分析也是可分离的。 每一个QWT 的子带可以被看作是与图像狭窄波带部分有关的解析信号。QWT 的幅值q 具有近似平移不变的特性,能代表每个频率子带在任何空间位置的特征并能用三个相位描述那些结构特征。这里使用的更多QW

财务指标取数方式

财务指标取数方式: 偿债能力: (1)资产负债率 公式: 资产负债率=负债总额/ 资产总额×100% 取数位置: (2)流动比率 公式: 流动比率=流动资产合计/ 流动负债合计*100% 其中:流动资产合计指在一年内或者超过一年的一个营业周期内变现或者耗用的资产取数位置: (3)速动比率 公式: 速动比率=速动资产/ 流动负债 其中:速动资产=流动资产-存货 取数位置: (4)短期债务偿还比率 公式: 短期债务偿还比率=经营净现金流/ 流动负债 取数位置:

(1)总资产利润率 公式: 总资产利润率=利润总量/ 资产平均总额×100% 其中:资产平均总额=(期初资产总额–期末资产总额)/ 2 取数位置 (2)销售利润率 公式: 销售利润率=利润总额/ 营业收入×100% 其中:利润总额=营业收入-营业成本-费用 取数位置 (3)净资产利润率 公式: 净资产利润率=净利润/ 平均所有者权益×100% 其中:平均所有者权益= (期初所有者权益+期未所有者权益)/ 2 取数位置 (4)总资产周转率 公式: 总资产周转率(次)= 主营业务收入净额/ 平均资产总额X100% 其中:平均资产总额=(资产总额年初数+资产总额年末数)/2 取数位置

(1)应收账款周转率 公式: 应收账款周转率(次)=赊销收入净额/ 平均应收账款 其中:可以将现销视为收款期为零的赊销,从而用所有的主营业务收入净额代替赊销收入净额平均应收账款= (期初值–期末值)/ 2 取数位置 (2)存货周转率 公式: 存货周转率(次数)=销货成本/平均存货余额 其中:平均存货余额= (期初值–期末值)/ 2 取数位置

财务软件取数工具指引

审计大师/税审大师财务软件取数工具指引 一、如何到企业取数: 特别提示: 审计大师V2017/税审大师V2017系列请使用[财务软件取数工具2017],存放在[财务软件取数工具2017]文件夹,提示:财务软件取数工具2017.Rar 是一个压缩包,请解压。 到被审单位取数时,请将审计软件安装文件夹下的【财务软件取数工具2017.rar】解压到文件夹并复制到U盘,再运行本工具软件:取数工具2017 来实现取数;提示:审计大师一般安装在“D:\审计大师软件”这个文件夹下,在这个文件夹下,会有另外一个文件夹:“财务软件取数工具2017”,请将这个文件夹复制到U盘到企业取数。注意,税审大师的文件夹一般是:[D:\税审大师软件] 您也可以到网上下载财务软件取数工具: 取数工具下载: (支持审计大师V2017/税审大师V2017) https://www.wendangku.net/doc/8d3338669.html,再选择下载中心下载,并将取数工具解压到U盘 重要提示:如果无法取数,想将财务数据导到到Excel的方法请见取数工具文件夹下的:Excel财务数据导出.CHM 二、取数主要操作流程 1.选择财务软件及其版本,根据不同财务软件来取数 征对不同财务软件,取数工具有三种情况: (1)自动取数工具,是我们的取数工具直接将财务软件数据打开并生成一个 数据文件,主要有:用友/金蝶/浪潮/速达/AC99/降龙99软件等,如下 图: (左边选择财务软件公司,右边选择版本)

这类软件取完数据后,会自动在U 盘建一个文件夹(文件夹的名称就是取数电脑上的年月日时分秒),财务数据文件就放在这个文件夹下。 见下图: (2)标准数据接口:有的财务软件本身就支持财务软件标准数据接口,这类软件有: 这类财务软件又分为两种类型 (A )一类是立成/四方/久其/博科/万能等,这些财务软件有独立的取数工具(这些工具是财务软件自身提供的) ,也就是说,取数工具同财务软件是分开的,

四元数的初步总结

四元数的初步总结 (一) 前一阵子,以前公司的一位同事向我请教一段计算机图形程序中的算法,其中涉及齐次坐标和四元数。齐次坐标问题到好讲解,但四元数方面以前所知几乎为零。正好我看到齐民友在《复分析,可视化方法》译后记中提到的一本书:《高观点下的初等数学》([德]克莱因著,以下简称《初等数学》)当中有一段讲到四元数,于是就细读了一遍,把这个专题的整理笔记写下来。 但是那本书里有很多结果依靠繁杂的机械运算,让人看了不知道这样的结果是怎么得出来的。因此我们这里用向量代数的观点重新审视四元数的一些结果,让四元数的特性看起来更直观,更自然。另外还有一些我认为重要的有关四元数引入的背景知识,例如数域的扩充问题的证明,那本书里只有一部分提示,这里也试着补全一些。 一、四元数引入的理论背景 将实数域扩充到复数域,并用复数来表示平面向量,用复数的加、乘运算表示平面向量的合成、伸缩和旋转变换,这些观念已经在中学课程中学过了。那么,很自然的问题就是,在三维,或更高维空间中是否也有复数的类似物?也就是说,像扩充实数那样,在复数域的基础上添加一个或几个新的元素,并且让它们跟原来的复数做加减乘除,是否就可以得到一个新的数集,并且其中的元素还可以像复数域那样做加、减、乘、除运算,并满足通常复数的那些运算律,包括加法和乘法的交换律与结合律、乘法对加法的分配律等待?更进一步,我们是否可以期望用这样的数来表示三维或更高维空间中的伸缩和旋转,就像用复数表示平面向量的伸缩旋转那样方便? 把问题说得明确一些,即是说,我们是否可以像得到复数域那样,在复数域中再添加一个新的元素(因 此也是在实数基础上添加两个元素和),得到一个类似于复数集合 ,这个集合中的元素当时就是普通的复数,当时就是普通的实数,并且通常数的加减乘除运算及其性质都可以在这个集合上保持,即满足: 1、对于任意两个数,它们的和是唯一确定的。 2、对于任意两个数,它们的积是唯一确定的。 3、存在一个数0,它具有性质:对于任意a,均有a+0=a。 4、对于每一个数a,均存在数x,适合等式a+x=0。 5、加法适合交换律:a+b=b+a。 6、加法适合结合律:(a+b)+c=a+(b+c)。 7、乘法适合交换律:a·b=b·a。 8、乘法适合结合律:(a·b)·c=a·(b·c)。 9、乘法对加法适合分配律:a (b+c)=ab+ac 和(a+b)c=ac+bc。 10、1 是乘法单位元,即仍然满足1·a=a·1=a 11、乘法有逆元,即对每个非零数a,存在唯一的数x,满足等式xa=ax=1。 历史上有很多数学家试图寻找过三维的复数,但后来证明这样的三维复数是不存在的。有关这个结论的证明,我没有查到更明确的版本,据《古今数学思想》中的一个理由,三维空间中的伸缩旋转变换需要四个变量来决定:两个变量决定轴的方向,一个变量决定旋转角度,一个变量决定伸缩比例。这样,只有三个变量的三维复数无法满足这样的要求。

四元数与欧拉角之间的转换

四元数与欧拉角之间的转换 在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点。本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 图1 3D Cartesian coordinate System (from wikipedia) 定义分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、Pitch、Roll。 图2 Tait-Bryan angles (from wikipedia) 一、四元数的定义 通过旋转轴和绕该轴旋转的角度可以构造一个四元数:

其中是绕旋转轴旋转的角度,为旋转轴在x,y,z方向的分量(由此确定了旋转轴)。 二、欧拉角到四元数的转换 三、四元数到欧拉角的转换 arctan和arcsin的结果是,这并不能覆盖所有朝向(对于角的取值范围已经满足),因此需要用atan2来代替arctan。 四、在其他坐标系下使用 在其他坐标系下,需根据坐标轴的定义,调整一下以上公式。如在Direct3D中,笛卡尔坐标系的X轴变为Z轴,Y轴变为X轴,Z轴变为Y轴(无需考虑方向)。

五、示例代码 https://www.wendangku.net/doc/8d3338669.html,/Files/heath/Euler2Quaternion.rar Demo渲染两个模型,左边使用欧拉角,右边使用四元数,方向键Up、Left、Right旋转模型。 参考文献: [1] https://www.wendangku.net/doc/8d3338669.html,/wiki/Conversion_between_quaternions_and _Euler_angles [2] Ken Shoemake, Animating Rotation with Quaternion Curves, 1985

excel表格模板取数公式.doc

常用电子表格公式 1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。 2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"2009/8/30",FALSE))/360,0)。 3、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E2,7,4),"/",MID(E2,11,2),"/",MID(E2,13,2))。 4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式:=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女"),IF(MOD(MID(C2,17,1),2)=1,"男","女"))公式内的“C2”代表的是输入身份证号码的单元格。 1、求和:=SUM(K2:K56) ——对K2到K56这一区域进行求和; 2、平均数:=A VERAGE(K2:K56) ——对K2 K56这一区域求平均数; 3、排名:=RANK(K2,K$2:K$56) ——对55名学生的成绩进行排名; 4、等级:=IF(K2>=85,"优",IF(K2>=74,"良",IF(K2>=60,"及格","不及格"))) 5、学期总评:=K2*0.3+M2*0.3+N2*0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩; 6、最高分:=MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分; 7、最低分:=MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分; 8、分数段人数统计:

(1)=COUNTIF(K2:K56,"100") ——求K2到K56区域100分的人数;假设把结果存放于K57单元格; (2) =COUNTIF(K2:K56,">=95")-K57 ——求K2到K56区域95~99.5分的人数;假设把结果存放于K58单元格; (3)=COUNTIF(K2:K56,">=90")-SUM(K57:K58) ——求K2到K56区域90~94.5分的人数;假设把结果存放于K59单元格; (4)=COUNTIF(K2:K56,">=85")-SUM(K57:K59) ——求K2到K56区域85~89.5分的人数;假设把结果存放于K60单元格; (5)=COUNTIF(K2:K56,">=70")-SUM(K57:K60) ——求K2到K56区域70~84.5分的人数;假设把结果存放于K61单元格; (6)=COUNTIF(K2:K56,">=60")-SUM(K57:K61) ——求K2到K56区域60~69.5分的人数;假设把结果存放于K62单元格; (7)=COUNTIF(K2:K56,"<60") ——求K2到K56区域60分以下的人数;假设把结果存放于K63单元格; 说明:COUNTIF函数也可计算某一区域男、女生人数。 如:=COUNTIF(C2:C351,"男") ——求C2到C351区域(共350人)男性人数; 9、优秀率:=SUM(K57:K60)/55*100 10、及格率:=SUM(K57:K62)/55*100 11、标准差:=STDEV(K2:K56) ——求K2到K56区域(55人)的成绩波动情况(数值越小,说明该班学生间的成绩差异较小,反之,说明该班存在两极分化);

关于四元数的一些理解第二部分

距离上一部分关于四元数的理解写完已经有段不短的日子里,这次终于理解了所谓θ 2 的真谛。这里我就一一道来。首先经常看到网络中的关于四元数与旋转的关系中看到这样的描 述;q=(cosθ 2,?n sinθ 2 )其中?n为旋转轴的单位向量θ表示旋转的角度;有的甚至在后面描述 为“四元数表达式的形式跟其旋转的角度θ以及旋转轴?n有一定的关系”。这种模糊不清的关系令人存疑。笔者认为这只是大神们在解读解算程序语言时对于姿态解算中部分程序的误读造成的。正如笔者在上一部分中提到的: 若存在两个向量A,B其中B为单位向量且A,B的夹角为θ则有:B=?r cosθ+ r?n sinθ A?1=?1 r r cosθ+r?n sinθ?1?A?=cosθ+?n sinθ(?A?)其中(?A?)表的是一个方向与A相同的单位向量,而式子前段的cosθ+?n sinθ部分,?n很显然表示一个垂直于A,B的向量,θ角表示A,B两个向量之间的夹角。 其中?n确实表示旋转轴且这个向量是一个单位向量,而θ的的确确是旋转的角度,这一点也能从推导过程中看出端倪。那么问题究竟出在哪里呢?其实问题就在相乘的顺序上,通过阅读网上的博文我们注意到一般的文章中对于四元数表达的方式是这样的: 存在一个单位四元数q=(cosθ 2,?n sinθ 2 );P是一个没有实部的单位四元数,表述为(0,v)(P的 模为1);p′=qpq?1;好了,到了这里细心地读者已经发现一点问题了。虽然这里,向量的表示换成了没有实部的四元数(例如p,p′)。但是在这里我们发现,在变换向量的时候不但用q左乘向量p同时也用q?1右乘。到这里笔者又要啰嗦些关于四元数的性质(尽可能详细的解读)。如果您对这一部分有所了解同时时间有限的话可以直接略过!虽然笔者的上一篇文档提到了四元数的一部分内容,不过那只是笔者对于其本质在空间几何中的一些猜想。在这里我就重新梳理一遍关于四元数的前世今生(大雾)。 在正式说明之前首先我希望明确一点,不论是用空间向量的方式表述还是用复数表达,他们都表达的是同一事物。同时复数空间与几何空间也是密不可分并且能够相互联系的。 四元数通常表述为: a+bi+cj+dk(a,b,c,d∈R) i2=j2=k2=?1; ij=?ji=k; jk=?kj=i; ki=?ik=j 以上是四元数的基本规则(之前已经讲解过辣);下面将提到四元数的一些运算法则 定义两个四元数: q=a+u=a+bi+cj+dk; p=t+v=t+xi+yj+zk; 其中u表示矢量(b,c,d); v表示矢量(x,y,z) 四元数加法p+q: p+q=a+t+u+v+a+t+b+x i+c+y j+d+z k; 四元数乘法pq: pq=at?v?u+av+tu+v×u; pq=at?bx?cy?dz+ax+bt+cz?dy i+ay?bz+ct+dx j+(az+dt?cx+by)k 这里应该注意四元数乘法的不可交换性即pq≠qp;

5、取数问题解决方法总结解析

取数问题解决方法 一、导出文件 问题:新中大NGPOWER 导出文件数据库接口取出的SJC导入审计系统没有会计年。 解决方法:因为会计年大部分都是在凭证表取出的。看下导出文件,z_pz01.tx_,z_pz02.tx_,z_pz03.tx_,z_pz04.tx_。。。。。。z_pz12.tx_ 这12个文本大小。如果是0KB,1KB的说明备份里面的凭证表也是没有数据。如下图:

二、SQLSERVER 1、问题:审计系统连接简装版2005还原bak,具体提示错误为如下: Microsoft OLE DB Provider for SQL Server (0x80004005)[DBNETLIB][ConnectionOpen (PreLoginHandshake()).] 一般性网络错误。请检查网络文档。 解决方法:1:打开SQL Server 2005中的配置工具SQL Server Configure Manager 2:将命名管道和TCP/IP协议启用(如下图)

3:重新启动SQL Server(MSSQLSERVER )(如下图) 2、问题:审计系统还原bak报错“媒体集有2个媒体簇,但只提供了1个,必须提供所有成员” 解决方法:由于备份数据库时,添加了多个*.bak文件,就将数据库“分段”备份到了2个数据库*.bak,而还原时,只用了其中一个*.bak文件还原,让客户备份到一个BAK文件中,在还原。

3、问题:审计系统还原bak报错“此文件不是有效的磁带格式备份集,无法进行还原操作!Sqlstate=27000 。。无法打开备份设备......出现操作系统错误5(拒绝” 解决方法如下: 4、问题:在从该备份集进行读取时,RESTORE检测到在数据库“11”中的页上存在错误 解决方法:此错误可能是还原的备份文件是高版本数据库备份出来的,也可能是备份文件损坏导致。

四元数解算姿态完全解析及资料汇总

四元数完全解析及资料汇总 本文原帖出自匿名四轴论坛,附件里的资源请到匿名论坛下载: 感谢匿名的开源分享,感谢群友的热心帮助。 说什么四元数完全解析其实都是前辈们的解析,小弟真心是一个搬砖的,搬得不好希望大神们给以批评和指正,在此谢过了。因为本人是小菜鸟一枚,对,最菜的那种菜鸟······所以对四元数求解姿态角这么一个在大神眼里简单的算法,小弟我还是费了很大劲才稍微理解了那么一点点,小弟搬砖整理时也是基于小弟的理解和智商的,有些太基础,有些可能错了,大牛们发现了再骂过我后希望能够给与指正哈。 好,废话到此为止,开始说主体。四元数和姿态角怎么说呢先得给和我一样的小菜鸟们理一理思路,小鸟我在此画了一个“思维导图”(我承认我画的丑),四元数解算姿态首先分为两部分理解:第一部分先理解什么是四元数,四元数与姿态角间的关系;第二部分要理解怎么由惯性单元测出的加速度和角速度求出四元数,再由四元数求出欧拉角。 图1 渣渣思维导图 在讲解什么是四元数时,小弟的思维是顺着说的,先由四元数的定义说起,说到四元数与姿态角间的关系。但在讲解姿态解算时,小弟的思维是逆向的,就是反推回来的,从欧拉角一步步反推回到惯性器件的测量数据,这样逆向说是因为便于理解,因为实际在工程应用时和理论推导有很大差别。

实际应用时正确的求解顺序应该为图1中序号顺序,即1->2->3->……. 但在笔者讲解姿态求解时思路是如图2的。 ` 图2 逆向讲解思路 大家在看四元数时最好结合着代码一块看,小弟看的是匿名四轴的代码,感觉写的非常好也非常清晰,粘出来大家一块观摩。红色部分是核心代码,总共分为八个步骤,和图1中的八个步骤是一一对应的。讲解介绍时也是和代码对比起来讲解的。代码可以去匿名官网上下载,都是开源的,不是小弟的,所以小弟不方便加在附件中。 好的,下面搬砖开始!。。。。。。。。嘿咻嘿咻!!!! · 一.

四元数法

四元数是哈密顿于1843年建立的数学概念,但只有在近四十年中才在刚体运动学中得到实际应用。四元数是由1个实数单位1和3 个虚数单位i ,j ,k 组 成的包含4个实元的超复数。若将i ,j ,k 视为基矢量,则可以把四元数分为标量和矢量两部分组成。其形式为: 01230Q q q i q j q k q q =+++=+ (2-22) 且22 2 2 01231q q q q +++=,其中0 q 为标量,q 为矢量。 引入四元数后,则方向余弦矩阵可由四元数表示为 ()() ()()()() 2222 1032120313022 2 2 2 1203012323012222130223010123222222e i q q q q q q q q q q q q C q q q q q q q q q q q q q q q q q q q q q q q q ?? +--+-? ? =--+-+???? +---+? ? (2-23) 由(2-12),我们可得 ????? ????????????? ????????------= ? ??? ?? ??????3 2 1 3210000021q q q q q q q q x y z x z y y z x z y x ω ω ωωω ωωω ωωω ω (2-24) 利用毕卡逼近法求解可得: ()() ()* 1 2 0M d t q t e q t ω?= (2-25) 令: []() *0 000x y z x z y y z x z y x M d t θθθθθθθωθθθθθ θ -?-?-???? ???-?? ??==?? ?-??? ???-??? ? ? ? (2-26) (2-25)可简写为: ()[] ()1 20q t e q θ?= (2-27) 将[] 1 2 e θ?展开可得: ()[][][][]() 2 3 1111022!23!2!2n q t I q n θθθθ???????? ?????=+?+++++ ? ? ??????????? (2-28) 由于:

四元数算法

四元数与旋转 在讨论「四元数」之前,我们来想想对三维直角座标而言,在物体旋转会有何影响,可以扩充三维直角座标系统的旋转为三角度系统(Three-angle system),在Game Programming G ems中有提供这麼一段: Quaternions do not suffer from gimbal lock. With a three-angle(roll, pitch, yaw) system, there ar e always certain orientations in which there is no simple change to the trhee values to represent a s imple local roation. You often see this rotation having "pitched up" 90 degree when you are tryin g to specify a local yaw for right. 简单的说,三角度系统无法表现任意轴的旋转,只要一开始旋转,物体本身即失去对任意轴的自主性。 四元数(Quaternions)为数学家Hamilton於1843年所创造的,您可能学过的是复数,例如:a + b i 这样的数,其中i * i = -1,Hamilton创造了三维的复数,其形式为 w + x i + y j + z k,其中i、j、k的关系如下: i2 = j2 = k2 = -1 i * j = k = -j * i j * k = i = -k * j k * i = j = -i * k 假设有两个四元数: q1 = w1 + x1 i + y1 j + z1 k q2 = w2 + x2 i + y2 j + z2 k 四元数的加法定义如下: q1 + q2 = (w1+w2) + (x1+x2) i + (y1+y2) j + (z1+z2) k

相关文档
相关文档 最新文档