使用MPU(arduino + MPU + PC)“准确”的本地位置

时间:2018-02-12 19:51:01

标签: arduino virtual-reality motion-detection

我有一个想法为VR创建自定义手动跟踪器。

经过几天的搜索,我意识到MPU的本地位置可以仅使用加速度计计算如下:

dt = 0;
acceleration = {0, 0, 0};
speed = {0, 0, 0};
position = {0, 0, 0};

compute_position()
{
  t = time();
  acceleration = read_acceleration();
  speed = speed + acceleration * dt;
  position = position + speed * dt;
  dt = time() - t;
}

但据我所知,这个职位非常不准确。

所以我有另一个想法:从arduino传感器读取数据并使用采样在PC端进行所有数学运算。例如,在设备的开头,我可以找出每秒的读数 - RPS。因此,对于60 FPS,我可以做RPS / 60样品:

get_average_position()
{
   sample_count = RPS / 60;
   buffer = {0, 0, 0};
   position = {0, 0, 0};

   for(sample = 0; sample <  sample_count; ++sample)
   {
       position = compute_position(device.acceleration(), position);
       buffer += position;
   }

   return buffer / sample_count;
}

这会提高准确性吗?

在我的项目中,我计划使用具有3轴加速度计/磁力计/陀螺仪的MPU9250。磁力计和陀螺仪如何提高位置跟踪精度?我已经知道使用卡尔曼滤波器过滤噪声值,但我不确定它在MPU基础上是如何工作的

P.S。精度对我来说非常重要。我担心虚拟手会颤抖很多 - 这就是我没有订购MPU9250的原因。欢迎任何建议,这对我来说非常重要。非常感谢你提前!

0 个答案:

没有答案