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

问题描述 投票:-2回答:1

鉴于以下数据

  • 设备的方向(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));

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

ios iphone accelerometer
1个回答
0
投票

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

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

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

这就是我要做的de / acceleration:

  1. 计算Vf = d/t说汽车在10秒内移动了10公里(这是以米为单位的d distance)(这是几秒钟内的t time)你应该能够获得最终速度Vf
  2. 首先计算Vi = 0然后通过分配current-Vi = previous-Vf来跟踪它
  3. 计算de / acceleration a = (Vf - Vi) / t

记住减速只是负加速度

编辑:您还可以使用userAcceleration中定义的CMDeviceMotion.h

© www.soinside.com 2019 - 2024. All rights reserved.