我正在研究 MRS1104C,我正在尝试绘制一个正交框。我只使用 4 层中的 1 层。我已将传感器垂直放置在地板上,并获得了从嵌入式到传感器 IMU 的距离、角度和四元数的测量值。为了完全映射盒子,我将传感器相对于地板上的垂直轴旋转 200 度(旋转 1),并相对于水平轴旋转一些度(旋转 2)。
为了转换到全局坐标系,我使用四元数衍生的旋转矩阵(Python)。
x = distance * math.cos(phi) * math.cos(theta)
y = distance * math.cos(phi) * math.sin(theta)
z = distance * math.sin(phi)
a11 = 1 - (2 * (qy**2 + (qz**2)))
a12 = 2 * (qx * qy + qw * qz)
a13 = 2 * (-qw * qy + qx * qz)
a21 = 2 * (qx * qy - qw * qz)
a22 = 1 - (2 * (qx**2 + qz**2))
a23 = 2 * (qy * qz + qw * qx)
a31 = 2 * (qx * qz + qw * qy)
a32 = 2 * (-qw * qx + qy * qz)
a33 = 1 - (2 * (qx**2 + qy**2))
x_final = a11 * x + a12 * y + a13 * z
y_final = a21 * x + a22 * y + a23 * z
z_final = a31 * x + a32 * y + a33 * z
四元数衍生旋转矩阵的数据由传感器的 IMU 获得。因此,每次移动传感器时都会收到来自传感器的新值。然而,在变换后,从 0 到 137.5 度的测量值与 -137.5 到 0 度的测量值相比,在盒子的同一侧观察到不同的斜率,如附图所示。 测量的盒子图
我相信这不应该被观察到,因为每次新的测量都会考虑到新的四元数,因此盒子同一侧同一点的变换应该给出几乎相同的结果。
1)您能否给我一些想法为什么会发生这种情况,另外,您能否给我一些建议或指导我如何解决它?
2)我错过了什么吗?
3) 上述方法正确吗?
请看下图: