裝置方向四元數向量演算法
本文說明 Windows 硬體實驗室套件 (Windows HLK) 所使用的演算法,以判斷進階方向感應器測試中 9 軸資料精確度的接收向量與預期向量之間的差異。 測試會驗證感應器融合是否已正確整合,以及感應器融合所需的所有感應器都已正確整合並安裝。
注意
在某些情況下,您可以使用感應器診斷工具來檢查受測的 3D 傾角計和匯總裝置方向感應器。
四元數向量演算法
演算法會使用兩個向量之 4 維點乘積的弧形餘數,除以兩個向量的大小乘積,並除以 2。 此演算法顯示在圖 1 四元數向量演算法公式中:
旋轉矩陣值會轉換成四元數值,以進行精確度驗證。 計算的四元數向量應該不會超過預期四元數向量的 +/- 5 度, (容錯,相較于四元數向量之間形成的角度,) (**+/- 在標題軸方向上允許的 10 度精確度) 。 Windows HLK 測試可讓 Øt 差異高達 15 度。
如何計算接收和預期的四元數向量之間的差異角度
本節描述計算 Windows HLK 中進階方向測試中接收和預期的四元數向量之間的差異角度。
下列兩個數據值對匯總裝置方向感應器的資料包表感興趣:
四元數向量
旋轉矩陣
測試包含下列兩個驗證:
驗證感應器資料包告中收到的四元數向量。 四元數向量 (的格式為 xi + yj + zk + w) 。
w的值一律為正數。
四元數向量必須是正規化和非零。 例如,向量的大小必須接近 1.0。 提供百分比 (1%) 路,以進位計算大小時捨棄錯誤。
差異角度是使用 delta = 2 * Acos ( ( Exp 來計算。Rec ) / ( |Exp |* |Rec |) ) ,其中:
\* 表示純量乘法
. 表示點產品
Exp 是預期的 Quternion 向量
Rec 是收到的四元數向量
|Q |表示量子向量的大小
差異 是以度為單位的角度
如果 delta 大於 360 度,差異會重新計算為 delta = delta - 360。
此時,差異應小於或等於錯誤容錯;例如,10 度。
驗證收到的旋轉矩陣。 旋轉矩陣必須是 3x3 矩陣。
旋轉矩陣的每個資料行和資料列向量都必須正規化和非零。 (1 個) 的百分比會提供 ,以進位計算大小時捨棄錯誤。
接收的旋轉矩陣會轉換成四元數向量。
重新使用從 < 到 >< e > 的驗證 (1) 的所有步驟。