如何测量车辆的加速和减速?

时间:2014-08-03 00:50:52

标签: ios iphone accelerometer

鉴于以下数据

  • 设备的方向(CMAttitude - 四元数或旋转矩阵)
  • 加速度矢量(CMAcceleration - userAcceleration - >无重力)

有没有办法让汽车加速和减速,将设备置​​于汽车的任意位置?

如果不是通过将设备放置在车内的固定位置来获得加速和减速的最佳方法是什么?

任何提示或解决方案都将受到高度赞赏。

提前致谢!

修改 我尝试从这个答案Using CMDeviceMotion and CMAttitude to isolate vertical or horizontal acceleration实施建议的方法来隔离垂直和水平加速度。

我将参考框架设置为 CMAttitudeReferenceFrameXMagneticNorthZVertical

//Quaternion Conjugation
CMQuaternion quaternion = newMotion.attitude.quaternion;
GLKQuaternion conjugated_quaternion = GLKQuaternionMake(quaternion.x, quaternion.y, quaternion.z, quaternion.w);
conjugated_quaternion = GLKQuaternionConjugate(conjugated_quaternion);

//Rotation of Accelerometer vector with quanternion
GLKVector3 acceleromationVector = GLKVector3Make(newMotion.userAcceleration.x, newMotion.userAcceleration.y, newMotion.userAcceleration.z);
GLKVector3 accelerometionVector_toReferenceFrame = GLKQuaternionRotateVector3(conjugated_quaternion, acceleromationVector);

//Horizontal Acceleration
float horizontalAcceleration = sqrtf(powf(accelerometionVector_toReferenceFrame.x,2)+powf(accelerometionVector_toReferenceFrame.y,2));

在建议的答案中,应该使用的参考框架是东北向下。这是否与 CMAttitudeReferenceFrameXMagneticNorthZVertical 相同?或者可能是这是wron参考框架,因此这种实现的结果是错误的?

1 个答案:

答案 0 :(得分:0)

您正在寻找一种算法,而不是设备本身的功能。我不相信任何苹果的iDevice中都有一个功能可以让你获得当前的**减速/加速**

使用运动方程式a = (Vf - Vi) / t

  • a :加速
  • Vf :最终速度
  • Vi :初始速度
  • t Vi Vf 之间的时差

这就是我要做的 de / acceleration

  1. 计算Vf = d/t说汽车在10秒内移动10公里(这是d distance米)(这是t time秒)你应该能够得到最终速度Vf
  2. 首先计算Vi = 0,然后通过指定current-Vi = previous-Vf
  3. 跟踪它
  4. 计算de / acceleration a = (Vf - Vi) / t
  5. 请记住减速只是否定加速

    修改:您还可以使用CMDeviceMotion.h中定义的userAcceleration