【问题标题】:Using accelerometer and gyrometer to track the phone movement independently from the orientation使用加速度计和陀螺仪来独立于方向跟踪手机运动
【发布时间】:2013-04-07 17:56:42
【问题描述】:

我一直在尝试使用 Coremotion APIS,目标是将坐标从手机参考系统转换为“地球”参考系统,即存储在 CMAttitude 对象中的参考系统。 到目前为止,我尝试的是获取 CMRotationMatrix

CMRotationMatrix r = motionManager.deviceMotion.attitude.rotationMatrix;

和做一个矩阵乘法

CMAcceleration a = motionManager.deviceMotion.gravity;

按如下方式(typedef float vec3f[3])

vec3f accelerationInReferenceSystem;
accelerationInReferenceSystem[0] = a.x * r.m11 + a.y * r.m12 + a.z * r.m13;
accelerationInReferenceSystem[1] = a.x * r.m21 + a.y * r.m22 + a.z * r.m23;
accelerationInReferenceSystem[2] = a.x * r.m31 + a.y * r.m32 + a.z * r.m33;

但是,没有运气。我对 3D 图形不太感兴趣,也没有太多关于如何使用各种 CMRotationMatrix、四元数等的文档。在此之前,我尝试记录 d.attitude.pitch、d.attitude.roll 的值和d.attitude.yaw。对于我所读到的内容,这不是要走的路,但除此之外,我发现 d.attitude.pitch 返回的值仅跨越 PI 弧度,因此我需要在计算俯仰角时包括偏航0 到 2PI,以便了解手机头部的方向。在我看来,使用旋转矩阵将是一个好方法。另外,我想知道是否需要使用与当前旋转矩阵相反的矩阵才能将坐标带入由 r.attitude 标识的系统中,如果您能提供帮助,谢谢!

【问题讨论】:

标签: ios accelerometer gyroscope core-motion


【解决方案1】:

我不确定我是否理解您想要做什么.. 但是如果“地球”参考系是指固定参考系,而“坐标”是指 x、y、z 坐标,那么就不可能做你想做的事(或者至少不可能准确地做)。 因为您可以使用这些来计算设备的位移,这是不可能做到令人满意的——例如:How can I find distance traveled with a gyroscope and accelerometer?

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2021-09-02
    • 2011-04-25
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多