我有一个想法为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的原因。欢迎任何建议,这对我来说非常重要。非常感谢你提前!