了解四元数轴角

问题描述

我正在使用 Madgwick 算法,该算法为我提供了加速度计和陀螺仪的四元数。 所以我可以用这个公式从 q0 得到角度 2 * acors(q0) 它是我尝试过的工作并且我得到了很好的价值。但现在我不明白我怎么知道 x 或 y 已经旋转到 x°,因为我只有一个角度与四元数。

例如,假设我有这个四元数 q0 到 q3 {0,71,18,-0,65,0.30},因此对于 q0 等于 0.71,我的角度为 90°。但在我的例子中,x 和 y 是不同的,所以我怎么知道 x 是 90°,y 是 20°,例如,不使用欧拉角是否可能? 我已经为 x q1/sin(angle/2) 尝试了这个公式,但结果并没有让我信服......

解决方法

如果你有四元数(u是单位向量,旋转轴的方向向量)

(cos(a/2),u * sin(a/2))

并想知道向量 V 如何用这个四元数 (in the end of Rotation Identity section) 进行变换

V' = Vperp*cos(a) + (u x Vperp) * sin(a) + Vpara

其中VperpVpara是向量V垂直和平行于向量u

的分量
Vpara = u * (u.dot.V)
Vperp = V - Vpara

示例:

let rotation axis (u) is (0.707,0.707,0),we want to know how 
OX-aligned vector (1,0) will look after rotation by 180 degrees

Vpara = (0.707,0) * (0.707*1 + 0.707*0 + 0) = (0.5,0.5,0)
Vperp = (1,0) - (0.5,0) = (0.5,-0.5,0)
V' = (0.5,0) * -1  + (u x Vperp) * 0 + (0.5,0) = (0,1,0)

(OX变成OY)