0

我正在开发 Wii Motionplus,并使用 WiimoteLib 库提取了原始值。但是,当我对其进行标准化时,我得到的随机值与实际发生的情况不符。

这就是我正常化的方式:

  1. 校准 Motionplus(即找到对应于零的原始值;我通过保持它静止一段时间来做到这一点)

  2. 对于随后读取的每个原始值,我从中减去零值以获得“相对”原始值。

  3. 然后,我使用http://wiibrew.org/wiki/Wiimote/Extension_Controllers(检查 yaw_fast、pitch_fast 等)缩放这个值,其中数值是使用度量计算的(原始值 8192 对应于 595 度/秒)

  4. 我随着时间的推移总结所有这些值(离散积分)以获得 wiimote wrt 初始方向的角度。

但是,当我计算它并将其绘制在图表上时,其中一个轴的阶跃变化不会反映在图表中。我尝试使用数字指南针进行比较,但是虽然指南针正确反映了值,但 wii 值完全不同(甚至模式也不相同)

谁能告诉我规范化哪里出了问题?

谢谢!

4

1 回答 1

1

发出的数字是围绕 xy 和 z 轴各自的旋转。为了将其与 x,y,z 坐标相关联,您将需要使用旋转矩阵,并且由于旋转读数不是固定轴,而是取决于您所处的方向,您需要使用欧拉矩阵将其与固定的 x,y,z 坐标

换句话说,您正在接收滚动、偏航和俯仰速度,您需要使用欧拉矩阵将其与笛卡尔坐标相关联。一旦您知道了您的初始横滚、俯仰和偏航,您就可以简单地将您的下一个横滚、俯仰和偏航读数添加到该读数适用的时间间隔的初始时间。

ROLL 是绕 y 轴旋转

PITCH 是围绕 x 轴的旋转

YAW 是围绕 z 轴的旋转

于 2011-06-03T01:18:52.087 回答