四元數姿態解算c語言例程 交換位置的四元數

2021-10-12 21:11:51 字數 828 閱讀 3827

四元數和尤拉角、旋轉矩陣都是描述姿態的一種方式。

個人不怎麼使用四元數,一般會將四元數修改為旋轉矩陣和齊次變換矩陣的旋轉部分然後進行操作。但是,在開發和科研中發現,如果能夠對四元數表示的姿態有乙個大概的認識,則在**編寫中可以直觀的防止相關轉換錯誤;如果能夠知道常用的四元陣列表達的位置,以及通過交換四元數獲得的結果,可以大大提高演算法開發中的效率,減少不必要的錯誤和除錯成本。

在三維空間中,乙個座標系可以可以通過和其原點相同的座標系繞某一軸旋轉某一角度獲得,因此可以將該旋轉表示為:

對比四元數的定義,可以看到四元數和這個表示是相對應的,表示為

,即四元數的實數部分表示了轉動的角度,虛數部分表示了轉動的軸有了對四元數的直觀理解,可以直接獲得以下結論,對於四元數

取四元數實數部分的相反數,虛數部分不變,獲得

,表示的變換為q的逆變換,二者對應的旋轉矩陣互逆(實數部分不變,虛數部分取反有同樣效果)。對

四元數全部取相反數則與原四元數表示的含義相同(以下描述中,數值驗證可能出現正負號完全相反的情況)

表示的旋轉為將q表示的旋轉,再繞q的x軸旋轉180°

表示的旋轉為將q表示的旋轉,再繞q的y軸旋轉180°

表示的旋轉為將q表示的旋轉,再繞q的z軸旋轉180°

轉換為旋轉矩陣為單位矩陣

轉換為旋轉矩陣為diag(1,-1,-1)

轉換為旋轉矩陣為diag(-1,1,-1)

轉換為旋轉矩陣為diag(-1,-1,1)

轉換為旋轉矩陣為

對四元數解算姿態的理解

問題 為什麼不用尤拉角來表示旋轉而要引入四元數呢?前面介紹了什麼是尤拉角,而且尤拉角微分方程解算姿態關係簡單明瞭,概念直觀容易理解,那麼我們為什麼不用尤拉角來表示旋轉而要引入四元數呢?一方面是因為尤拉角微分方程中包含了大量的三角運算,這給實時解算帶 來了一定的困難。而且當俯仰角為90度時方程式會出現...

四軸飛行器姿態解算預備知識

其實我覺得要說四軸的姿態,我們必須說幾樣東西。1 座標系 2 方向余弦矩陣 3 尤拉角 4 四元數 對上面這四樣東西有了初步的理解,就可以開始看imu的飛控解算程式了。其實我剛剛接觸四軸的時候我沒明白為什麼四軸裡面一會來個地理座標系,一會來個機體座標系。搞這麼多座標系幹什麼用的。後來在秦永元的書裡面...

四元數法求姿態角,九軸

第一版 import math kp 2.0 比例增益控制加速度計 磁強計的收斂速度 ki 0.005 積分增益控制陀螺偏差的收斂速度 halft 0.01 取樣週期的一半 def update imu ax,ay,az,gx,gy,gz,mx,my,mz global q0,q1,q2,q3 gl...