当iphone不移动时,加速计不返回0值

当iphone不移动时,加速计不返回0值,iphone,objective-c,Iphone,Objective C,我有一个简单的应用程序,它只实现了加速计的功能,然后NSR将结果记录到控制台 2011-03-11 00:35:38.248 Accel[1070:307] ************ 2011-03-11 00:35:38.737 Accel[1070:307] x: -0.0362244 2011-03-11 00:35:38.743 Accel[1070:307] y: -0.0181122 2011-03-11 00:35:38.747 Accel[1070:307] z: -1.0323

我有一个简单的应用程序,它只实现了加速计的功能,然后NSR将结果记录到控制台

2011-03-11 00:35:38.248 Accel[1070:307] ************
2011-03-11 00:35:38.737 Accel[1070:307] x: -0.0362244
2011-03-11 00:35:38.743 Accel[1070:307] y: -0.0181122
2011-03-11 00:35:38.747 Accel[1070:307] z: -1.03239
2011-03-11 00:35:38.750 Accel[1070:307] ************
2011-03-11 00:35:39.238 Accel[1070:307] x: -0.0181122
2011-03-11 00:35:39.243 Accel[1070:307] y: -0.0181122
2011-03-11 00:35:39.248 Accel[1070:307] z: -1.03239
2011-03-11 00:35:39.250 Accel[1070:307] ************
2011-03-11 00:35:39.739 Accel[1070:307] x: -0.0181122
2011-03-11 00:35:39.744 Accel[1070:307] y: -0.0181122
2011-03-11 00:35:39.749 Accel[1070:307] z: -1.03239
2011-03-11 00:35:39.751 Accel[1070:307] ************
2011-03-11 00:35:40.240 Accel[1070:307] x: -0.0362244
2011-03-11 00:35:40.245 Accel[1070:307] y: -0.0362244
2011-03-11 00:35:40.249 Accel[1070:307] z: -1.05051
2011-03-11 00:35:40.252 Accel[1070:307] ************
2011-03-11 00:35:40.741 Accel[1070:307] x: -0.0362244
2011-03-11 00:35:40.746 Accel[1070:307] y: -0.0362244
2011-03-11 00:35:40.750 Accel[1070:307] z: -1.05051
2011-03-11 00:35:40.752 Accel[1070:307] ************
2011-03-11 00:35:41.241 Accel[1070:307] x: -0.0362244
2011-03-11 00:35:41.247 Accel[1070:307] y: -0.0181122
2011-03-11 00:35:41.251 Accel[1070:307] z: -1.03239
2011-03-11 00:35:41.253 Accel[1070:307] ************
我本以为x、y和z为0,因为手机放在桌子上,没有移动

因此,通过研究,我发现加速度计总是读取静止手机的加速度,除非手机处于自由落体状态,否则加速度计总是读取z轴上+1g的加速度。 这就解释了一些z轴读数

但是x,y,z上的0.03到0.01额外值(在为+1g调整z轴之后)是某种误差裕度

我应该对所有这些值做些什么来获得更真实的读数吗

因为我想用图表显示结果

非常感谢,,
-代码

这只意味着你的桌子不是完全水平的,你所在区域的重力高于平均水平。可能有一点误差,但至少应精确到小数点后几位。

在任何实际用途中使用加速计值时,对值使用高通滤波器。您还可以对加速度计返回的重力矢量进行归一化处理,以获得正常重力矢量。

“工作台不是完全水平的”,因此它无法读取运动?它读取重力对加速计侧面的拉力?@代码你说它静止不动。如果它不移动,那么唯一的加速度是由重力引起的(实际上,桌子抵消了重力,但差异并不重要)。使用过滤器去除一些数值的准确性?要抵消读数的.03(误差裕度)?过滤器将稳定您的值,使它们不会很快跳到极端。例如,在游戏中使用不带过滤器的加速计值时,结果可能会不稳定。但我想这取决于加速度计值的用途。