我正在研究Wii Motionplus,并且我使用WiimoteLib库提取了原始值。但是,当我将其标准化时,我得到的随机值与实际发生的情况不符。
这就是我正常化的方式:
校准Motionplus(即找到对应于零的原始值;我通过将其固定一段时间来完成此操作)
对于每个后续读取的原始值,我从中减去零值以获得“相对”原始值。
然后,我使用http://wiibrew.org/wiki/Wiimote/Extension_Controllers(检查yaw_fast,pitch_fast等)来缩放此值,其中使用度量计算数值(原始值8192对应于595度/秒)< / p>
我总结了所有这些值随着时间的推移(离散积分)以获得wiimote初始方向的角度。
但是,当我计算并将其绘制在图表上时,其中一个轴的阶跃变化不会反映在图表中。我尝试使用数字罗盘进行比较,但是当罗盘正确反映值时,wii值完全不同(即使模式也不一样)
谁能告诉我我的标准化问题在哪里?
谢谢!
答案 0 :(得分:1)
发出的数字是相对于自身的x y和z轴的旋转。为了将其与x,y,z坐标相关联,您需要使用旋转矩阵,并且由于旋转读数不是固定轴,而是取决于您所处的方向,因此需要使用欧拉矩阵将此与固定的x,y,z坐标
换句话说,您正在接收滚转,偏航和俯仰速度,您需要使用欧拉矩阵将其与卡西斯坐标相关联。一旦你知道你的初始滚动,俯仰和偏航,你可以简单地将你的滚动,俯仰和偏航的下一个读数添加到该读数适用的时间间隔的初始时间。
ROLL是围绕y轴的旋转
PITCH是围绕x轴的旋转
YAW是围绕z轴的旋转