我已经编写了一个iOS
应用,它依赖于在整个物理空间中移动设备。我正在处理IMU
上的噪音问题,对于那些了解accelerometers
您可能听说过double integration issues的人的人来说。
如果我把我的设备放在桌子上,它会捡到足够的噪音,以为它会慢慢移动。我加入了一个"最小值"价值,这似乎工作,但它也意味着如果你移动设备非常慢,你不会获得运动。
有什么方法可以滤除这些不必要的噪音? Kalman Filter?
float ax = 0, ay = 0, az = 0;
float MIN = 0.002;
int MULT = 5;
...
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *data, NSError *error) {
float x = data.acceleration.x;
float y = data.acceleration.y;
float z = data.acceleration.z;
// find & store difference between last accel amount
float dx = ax - x;
float dy = ay - y;
float dz = az - z;
float diff = fabsf(dx + dy + dz);
NSLog(@"%f %f %f", dx, dy, dz);
if(diff > MIN * MULT) {
// work some magic
}
// save current values for next iteration
ax = x;
ay = y;
az = z;
}];