我使用兩個相同類型的IMU(BHI160,即方向相對於北方,與北方對齊,IMU的本地y軸指向北方)對象,讓我們說鋼筆,增加的困難,如果我把兩個物體平行放置,兩個IMU的z軸指向上,但是一個IMU相對於另一個繞z軸旋轉180°。對齊IMU方向,然後獲得相對旋轉
現在,如果我在這裏正確地理解數學,我從IMU接收的四元數據是相對於北方方向的半角度旋轉,從而使q * north_dir * q_inv = IMU_y_axis
(與north_dir
和IMU_y_axis
是全球空間三維向量,或爲了這個計算而使用純四元數)。
由於IMU的旋轉,我會假設當兩個筆指向相同的方向時,我應該能夠計算第二筆的方向爲q_2 = q_rot_z * q_1
,其中q_rot_z
等於圍繞z軸旋轉90°,軸 - 遵循這樣的直覺:如果我將兩個筆指向北方,我將通過計算q_rot_z * north_dir * q_rot_z_inv
因此,如果我想知道筆尖的相對旋轉(例如,我需要從第一筆筆尖移動到第二筆筆尖的旋轉),那麼我需要計算q_r = q_2 * q_rot_z_inv * q_1_inv
以便通過計算從提示1到提示?或者,圍繞z軸的「事先」旋轉在這種情況下無關緊要,我只需要像往常一樣計算q_r = q_2 * q_1_inv
?
編輯: 這基本上是this question的擴展,但我想知道,如果同樣的答案也適用於我的情況還是已知相對IMU旋轉會在我的情況需要被包括在內
哇,這是一個精心設計的答案 - 非常感謝!關於我對90°/ 180°旋轉的困惑:根據我的理解,如果您想使用四元數將矢量v圍繞特定軸旋轉180°,則需要使用90°作爲角度構建四元數,因爲'q * v * inv(q)'基本上將該角度應用兩次(導致180°旋轉)。我從來沒有真正清楚過的是爲什麼這是與直接四元數乘法不一致,因爲我認爲在技術上產品'q1 * q_rot'會隱式地再次用於旋轉,例如, y軸。 – Sty
描述角度「a」的旋轉的四元數的確在其中包含了術語「cos(a/2)」和「sin(a/2)」。儘管如此,它仍然是「a」的旋轉(只是編碼方式不同)。這種編碼也是'°'運算符兩次使用四元數的原因之一。最後,(單位)四元數描述了圍繞某個軸的某個角度的旋轉。在內部,它的編碼方式不同。但是,除非你想與簡單的圖書館不支持的四元數有關的數學計算,否則這應該不重要。 –
啊,我的困惑主要在於術語?也就是說,通過'RotateZ(180°)',你可以指定一個四元數,你可以通過指定一個角度和一個軸來獲得,在這個例子中是180°和z軸,但是在內部會導致一個四元數的計算在不同部件中90°角度的「cos」和「sin」 - 是否正確? – Sty