为了测试磁力计的航向输出,我将磁力计放在了我认为没有磁性的环境中的地板上。然后,我已经收集了大约5分钟的磁力计数据-我使用的是pololu开发板,并将LIS3MDL磁力计连接到Arduino UNO。然后,我在Matlab中使用了atan2函数来计算航向(乘以180 / pi来输出以度为单位的答案)。当我查看标题输出时,数据的最大值和最小值显示了超过3度的范围。我尚未校准磁力计,但我的理解是,校准只会提供偏差和缩放比例,因此任何校准结果仍然会受到相同的噪声的影响。磁力计在测试过程中不会移动,因此我认为,不管磁力仪的俯仰,横摇和前进方向如何,只要它在物理上能够向我提供1度航向,它在测试过程中都将输出一个相对恒定的航向值。 />
我的问题是:
-这似乎是测试航向精度的合理方法吗?
-我可以过滤磁力计数据以减少噪声吗?如果是这样,我应该使用哪个滤波器(我想到的是移动平均滤波器),以及在使用方法上有哪些限制/限制?
-一个好的磁力计是否应该比这个噪声少,因此不需要任何滤波?
#1 楼
首先,根据给定的数据表规格,让我们看一下您的发现是否合理。为此,我假设Wikipedia通常是正确的,并且地球磁场的强度在给定范围(0.25至0.60高斯)的更强的一端,所以我将使用0.6高斯。然后,我还要假设+ Y指向磁北,而+ X指向磁东。最后,我假设您的atan2函数为
atan2(yAxis, xAxis)
,并且您要否定该输出(以沿顺时针方向获得正角度)并偏移90度(以北磁为零)。 那么,数据表怎么说?对于“ RMS噪声”,它表示您应该在x轴和y轴上预期+/- 3.2 mgauss。这算什么呢?好吧,假设您如上所述进行了传感器设置,则可以预期y轴读数为0.6高斯,x轴读数为0.0高斯。
但是,您的噪音可能会改变这些读数!最坏的情况是将y轴读数从0.6高斯降低到(0.6-0.0032)= 0.5968高斯,然后将x轴“增强”到+/- 3.2 mgauss或0.0032高斯。然后将给出以下读数:
minReading = -atan2(0.5968, -0.0032)*(180/pi) + 90; % Negate and offset to get to compass headings
maxReading = -atan2(0.5968, 0.0032)*(180/pi) + 90;
得出的最小/最大读数为-0.3到0.3度。这不能确认您的发现!这是怎么回事?
问题在于RMS噪声是平均噪声。如果您考虑的是最坏情况,则应考虑可以预期看到的峰值噪声值。当您开始谈论期望值时,您将进入统计领域。这是ADI公司的应用笔记,而德州仪器公司的另一个应用笔记都说相同的话(分别在第5页和第4页):
将RMS噪声值乘以6可转换为峰值峰值噪声。
这里要小心,因为现在我们从+/- RMS噪声变为峰峰值噪声。峰峰值已经包括正值和负值范围。峰峰值不会超出+/-,因为它已经跨越了负峰到正峰。现在,如果您要估计负峰值,则将使用峰峰值的一半。
那么,这算什么呢?首先,将RMS转换为峰峰值:
noiseP2P = 6*noiseRMS;
然后,您的最大噪声峰值为(正)一半,而最小噪声峰值为(负)峰峰值信号的一半:
minNoise = -noiseP2P/2;
maxNoise = noiseP2P/2;
,然后最终重新计算之前的
minReading
和maxReading
值:noiseRMS = 0.0032;
noiseP2P = noiseRMS*6.6;
minNoise = -noiseP2P/2;
maxNoise = noiseP2P/2;
minReading = -atan2(0.6 + minNoise, minNoise)*(180/pi) + 90;
maxReading = -atan2(0.6 + minNoise, maxNoise)*(180/pi) + 90;
范围几乎为2度。如果您所在区域的地球磁场弱于维基百科给出的上限,则您将获得一个不同的(更大)范围。在下限0.25高斯时,您得到的范围是5度!
因此,鉴于上述数字,我认为您观察到的3度散度是正常的,并且对于您拥有的设备。
您可以使用相同的方法来分析其他潜在的磁力计,并比较它们的预期性能与项目的性能需求等。
关于减轻压力的技术,您可以执行任何操作,从简单的滞后滤波器(选择0.05之类的alpha值,然后执行
filterValue = alpha*newReading + (1-alpha)*filterValue
)到您提到的移动平均值,再到卡尔曼滤波器,再到Madgwick滤波器。选择实施明智的过滤器取决于您的项目需求,过滤器时间常数/响应,过滤器复杂性等。
您可能会发现不可能生产出能够同时快速响应的过滤器根据需要,同时保持可接受的本底噪声。如果是这种情况,则需要评估具有更快基本响应和/或更低本底噪声的其他设备。
评论
$ \ begingroup $
这是一个了不起的答案!很好的解释和详细-谢谢!
$ \ endgroup $
–乔
18-11-16在6:54
$ \ begingroup $
@Joe-不用客气!我知道数据表可能很难阅读,尤其令人沮丧的是,一些制造商试图“洗净”其设备额定值,使这些设备一目了然地显示出更高的质量。感谢您提出的好问题!
$ \ endgroup $
–卡盘
18年11月20日在14:26