将Android设备坐标系转换为“用户”坐标系

5
我的问题与更改Android中的传感器坐标系类似。
我想能够比较用户的运动,而不受设备方向的影响。这样,当用户将手机保持在纵向并弯曲手臂时,加速度读数与当他将手机保持在横向并朝同一方向弯曲手臂时相同。
这就是我所谓的“用户”坐标系。它不同于世界坐标系,因为用户面对的风向不重要。它也不同于设备坐标系,因为用户如何握住设备不重要。
在我的应用程序中,每次运动之前进行校准步骤是可以接受的,以确定基础/静止方向矩阵。也许只需要将第一个移动矩阵乘以第二个的逆(然后与新值相乘)?
提到的答案似乎是正确的,但我需要更具体的解释,实际代码示例最理想。
请注意,remapCoordinateSystem功能不能满足要求,因为它仅接受直角。我需要能够处理小偏差,因为设备固定在手腕上,可能不总是与手臂成直角。
1个回答

0

我目前正在解决这个问题,我认为这可能会有所帮助: 将设备坐标系转换为世界坐标系

我们可以假设大多数情况下人们使用手机时是站立、行走或坐着的,这意味着用户坐标系与z轴(重力)相同,并且y轴(用户坐标,用户面前)和y轴(世界坐标,北方向)之间存在固定的角度差。通过TYPE_MAGNETIC_FIELD传感器可以获取角度差。因此,我们可以从世界坐标系转换到用户坐标系。

如果用户在床上使用手机怎么办?我认为对于这种情况,需要进行预校准,定义用户坐标系的y轴,例如通过移动来告诉手机用户面前的方向。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接