【问题标题】:ios accelerometer values at any orientation任何方向的 ios 加速度计值
【发布时间】:2015-03-10 09:21:20
【问题描述】:

加速度计值是根据设备方向提供的。

我的目标是获得这些值,而与设备位置无关。

在考虑的情况下,如果设备放置在车辆中、正面朝上或水平放置,沿 y 轴的加速度计值将指示车辆加速度。

如果设备以随机方向放置在手套箱中怎么办? 我们可以获得滚动俯仰和偏航值,并将它们转换为度数以获得设备从正常面朝上方向位置的角位移但是在那个随机方向时刻,我可以将加速度值获取/转换为正常面朝上方向位置值?

基本上我所关注的是:获取设备的角位移 -> 将在扭曲位置接收到的加速度计值转换为正常的面朝上方向位置 -> 获取 Y 以查看车辆的实际加速度,而与设备无关位置。

参考(第 3.1 点):http://www.itsasiapacificforum2014.co.nz/files/3314/0194/4873/Abstract_-_Automatic_Accelerometer_Reorientation_for_Driving_Event_Detection_Using_Smartphone_by_Passakon_Prathombutr.pdf

【问题讨论】:

标签: ios iphone uiaccelerometer


【解决方案1】:

其实很简单,只需使用参考帧生成设备运动更新:

- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

根据您想要实现的目标,您可以选择不同的选项之一

typedef enum {
   CMAttitudeReferenceFrameXArbitraryZVertical = 1 << 0,
   CMAttitudeReferenceFrameXArbitraryCorrectedZVertical = 1 << 1,
   CMAttitudeReferenceFrameXMagneticNorthZVertical = 1 << 2,
   CMAttitudeReferenceFrameXTrueNorthZVertical = 1 << 3
} CMAttitudeReferenceFrame;

例如,通过使用“CMAttitudeReferenceFrameXMagneticNorthZVertical”,无论设备位置如何,您从加速度中获得的读数都是恒定的(它们与前面的“重力”波纹管和“北”对齐)。我不记得确切的参考位置,但我相信“手机顶部”指向北方,而“手机屏幕”指向上方。

【讨论】:

  • 我已经使用它绘制了一个图表,我期望无论设备如何保存,我都应该能够获得设备在 Y 轴上的真实加速度,但这不是我得到的。这就是为什么我要计算设备从正常位置(面朝上并水平放置)的角位移。因此,我可以以某种方式将 3 轴向后平移并计算 正常位置 处的加速度
  • 对于记录,这是 CMattitudeReferenceFrameXMagneticNorthZVertical 的当前definition:“描述一个参考系,其中 Z 轴垂直,X 轴指向磁北。请注意,使用此参考系可能需要移动设备来校准磁力计。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多