我有一个IMU传感器,它使用四元数输出其方向。我首先将其平放在曲面上并检索四元数( q_rest )。然后我开始随机旋转它。我想知道它绕y轴达到90度。所以我有一个 q_target ,等于(cos(pi / 4)0 sin(pi / 4)0)。
如果传感器的方向为 q_t ,则在给定时间 t 如何检查 q_t 与 q_target之间的相关性?
即。如何告知正在旋转传感器的用户,旋转多少以及向哪个方向旋转。
我已经做了什么?
我计算了旋转矢量 q_target 以及 q_t wrt q_rest 的矢量。然后我检查了这两个向量之间的角度。但似乎这不起作用,我相信我对四元数的旋转向量的理解是错误的。我该如何解决这个问题?
答案 0 :(得分:1)
您可以按如下方式制定问题:
您希望将轮换q_diff
应用于当前的方向,以便转到q_target
:
q_t * q_diff = q_target
根据您是否希望在本地或全球系统中表达q_diff
,您还可以使用q_diff * q_t
。
然后,显然:
q_diff = q_t^(-1) * q_target
然后 q_diff
基本上是目标旋转的距离。使用角度分量确定它的距离,并使用轴组件确定您必须旋转的方向。
当然,您可以将q_diff
转换为任何其他表示形式,无论用户最友好。