如何将2个四元数旋转回起始位置然后计算相对旋转?

Jon*_*han 5 rotation quaternions

我有2个IMU(惯性测量单位),我想计算它们的相对旋转.不幸的是,IMU的输出给了我两个相对于全局的四元数(我假设四元数是如何工作的).但是,我需要测量其中一个传感器相对于另一个传感器的旋转.一直以来,这两个传感器已经从它们在全局轴上的初始方向旋转.

例如:我有一个传感器连接到胸部,另一个传感器连接到手臂.两个传感器都校准到全局轴.如果我保持这个方向,我可以很好地计算旋转.然而,当我将我的身体旋转到不同的方向(向右90度)并执行相同的运动时,传感器围绕其局部轴旋转但输出相对于全局轴的四元数(围绕传感器y轴的旋转输出作为围绕x全局轴的旋转).

我希望相同的运动产生相同的四元数(因此显示相同的旋转),无论我的方向如何(放下,面向左,右,前或后)

基本上,我想让一个传感器成为旋转"参考"轴,我想测量另一个传感器相对于参考传感器(旋转参考轴)的旋转变化.

min*_*gic 4

从一个 Q1 框架到另一个 Q2 框架的转换就像

Q1intoQ2 = q1.inversed() * q2;
// check it,  q2 = q1 * Q1intoQ2 == q1 * q1.inversed() * q2 == q2
Run Code Online (Sandbox Code Playgroud)