使用Android手机为头戴式显示器构建头部跟踪器

时间:2012-05-09 13:50:40

标签: android accelerometer gravity

我的目标是使用我的Android手机为我的头戴式显示器编写一个头部追踪器。该动作转移到鼠标移动,而鼠标移动又用于PC游戏。我想把我的Android手机安装到头部跟踪器的后面,所以它将固定在我的脑后。 y轴朝上,当向前看时,x轴朝向右侧,这意味着当你看到我的后脑勺时,你会看到手机显示屏。

mobile phone image

由于此设置的机制,y轴和重力轴之间存在一个角度,因此当直视前方时,移动电话会略微偏离头部后部。它也绕z轴稍微旋转,可能在绕z轴移动的同时在约5到10°的角度内旋转。

我的手机没有陀螺仪。我用了

public void onSensorChanged(SensorEvent event)
{
  // alpha is calculated as t / (t + dT)
  // with t, the low-pass filter's time-constant
  // and dT, the event delivery rate

  final float alpha = 0.8;

  gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
  gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
  gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

  linear_acceleration[0] = event.values[0] - gravity[0];
  linear_acceleration[1] = event.values[1] - gravity[1];
  linear_acceleration[2] = event.values[2] - gravity[2];
}

比仅使用加速度计的原始数据更好。我只使用0.8作为alpha,我是否需要根据t /(t + dT)进行调整?那么如何获得t和dT呢?

使用这种设置,向上和向下倾斜头部工作 - 在这里和那里进行一些改进 - 好吧。

但左右移动结果是一个问题。同时将对角线从左下方移动到右上方并进行镜像。或者在圈子里移动。

来自基础数学,而不是我的错误描述,你建议使用哪些代码?

0 个答案:

没有答案