问题描述
我正在使用 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
其中Vperp和Vpara是向量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)