从设备坐标系到绝对坐标系的加速度

2024-05-08

从我的 Android 设备中,我可以读取线性加速度值数组(在设备的坐标系中)和绝对方向值数组(在地球坐标系中)。我需要的是获得后一个坐标中的线性加速度值。系统。

我怎样才能转换它们?

EDIT阿里在评论中回复后:

好吧,如果我理解正确的话,当我测量线性加速度时,手机的位置完全不重要,因为读数是在地球坐标系中给出的。正确的?

但我只是做了一个测试,将手机放在不同的位置并在不同的轴上获得加速度。有 3 对图片 - 第一张显示了我如何放置设备(抱歉我的绘画“大师技能”),第二张显示了线性ACC提供的数据读数。传感器:

  1. 设备放在左侧
  1. 设备仰卧
  1. 设备站立

现在 - 为什么在第三种情况下加速度沿着 Z 轴(而不是 Y)发生,因为设备位置并不重要?


我终于成功解决了!所以要得到加速度矢量 in 地球坐标系你需要:

  1. 得到旋转矩阵(float[16]所以以后可以使用它android.opengl.Matrix类)来自SensorManager.getRotationMatrix() (using SENSOR.TYPE_GRAVITY and SENSOR.TYPE_MAGNETIC_FIELD传感器值作为参数),
  2. use android.opengl.Matrix.invertM()在旋转矩阵上进行反转(不是转置!),
  3. use Sensor.TYPE_LINEAR_ACCELERATION传感器获取线性加速度矢量(在设备的坐标系中),
  4. use android.opengl.Matrix.multiplyMV()将旋转矩阵乘以线性加速度矢量。

现在你就拥有了!我希望我能为别人节省一些宝贵的时间。

感谢爱德华·福尔克和阿里的提示!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从设备坐标系到绝对坐标系的加速度 的相关文章