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

Ios 如何测量车辆的加速度和减速度?,ios,iphone,accelerometer,Ios,Iphone,Accelerometer,鉴于以下数据 设备的方向(Cmatitude-四元数或旋转矩阵) 加速度矢量(CMAcceleration-用户加速度-->无重力) 是否有一种方法可以获得汽车的加速度和减速度,将设备以任意方向放入汽车中 如果不是,那么通过将设备定位在车内的固定位置来获得加速和减速的最佳方法是什么 如有任何提示或解决方案,我们将不胜感激 提前谢谢 编辑: 我试图根据这个答案实施建议的方法,以隔离垂直和水平加速度 我将参考框架设置为CmatitudeReferenceFramexMagneticNorthzV

鉴于以下数据

  • 设备的方向(Cmatitude-四元数或旋转矩阵)
  • 加速度矢量(CMAcceleration-用户加速度-->无重力)
是否有一种方法可以获得汽车的加速度和减速度,将设备以任意方向放入汽车中

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

如有任何提示或解决方案,我们将不胜感激

提前谢谢

编辑: 我试图根据这个答案实施建议的方法,以隔离垂直和水平加速度

我将参考框架设置为CmatitudeReferenceFramexMagneticNorthzVertical

//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));

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

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

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

  • a:加速
  • Vf:最终速度
  • Vi:初始速度
  • tViVf之间的时差
这就是我要做的,以获得de/acceleration

  • 计算
    Vf=d/t
    假设汽车在10秒内行驶10公里(这是以米为单位的距离)(这是以秒为单位的时间)。你应该能够得到最终速度
    Vf
  • 在第一次计算时假设
    Vi=0
    ,然后通过分配
    current Vi=previous Vf
  • 计算de/加速度
    a=(Vf-Vi)/t
  • 记住,减速只是一个负加速度


    编辑:您也可以使用

    中定义的
    用户加速
    ,每个iOS设备都通过CMMotionManager类提供最新的加速数据。@Caleb-谢谢。我刚刚添加了一个参考!谢谢你的回答!获取加速度数据不是我面临的问题。我基本上希望能够得到汽车向前移动的加速度和减速,无论装置在车内的方向如何。我只是编辑了我的问题,让它更清楚。