使用加速度计计算旋转矩阵
我目前面临更多的数学问题。 我正在开发一个对X和Y轴的加速感兴趣的应用程序。 换句话说,我想追踪左右或前后的加速度。
如果设备躺在桌面上,所有方向的加速度都可以在这些轴的加速度值中看到。 出现问题的是设备未放置在这样的位置,并且围绕X或Y轴(俯仰,滚动)有一定的旋转。
我需要一个旋转矩阵(Rm),我可以乘以一个度量加速度(x)向量来获得一个新的校准向量(x'),其他类可以使用: x'= Rm * x 。 这应该从参考矢量(0,0,-1)和设备的当前重力矢量中计算得出。
我知道这与欧拉角有关,但我无法弄清楚如何计算这些并使用这些来创建我的旋转矩阵。 我也知道在CMAttitude类中有一个旋转矩阵,但我希望更深入地了解这些矩阵的计算方式。
例:
想象一下,你想知道你在自行车上制动的难度。 如果您的iPhone安装在自行车上并且显示屏朝上,则可以读取加速度矢量的y值中的加速度。 您的项目中的其他课程假设制动时的加速度始终可以在此值中看到。
问题出在iPhone被放置在纵向视图中,指向你的显示器。 然后制动不会增加y值,而是增加z值。 所以你必须围绕x轴旋转你的加速度值-90度。
我需要这个旋转矩阵来进行设备的任意旋转。 我知道无法通过重力矢量来计算围绕z轴的旋转,但是当长x和y旋转被否定时,我很好。
非常感谢你的帮助
要计算欧拉角,需要计算参考矢量与当前重力矢量之间的角度。
http://chemistry.about.com/od/workedchemistryproblems/a/scalar-product-vectors-problem.htm
之后,旋转矩阵非常简单。 http://en.wikipedia.org/wiki/Rotation_matrix
注意我确信有很多简单的方法可以在ios和android中执行此操作,而无需手动进行这些计算。 这个答案就是几何图形如何运作。
我认为以下链接应该有帮助将iPhone加速度计数据转换为汽车轴注意旋转矩阵中存在错误,元素rm11应该是cos“Beta”* cos“gamma”而不是cos“alpha”* COS“伽马”
链接地址: http://www.djcxy.com/p/81803.html