4. 数据采集与预处理:陀螺仪静态数据采集规范、采样率选择、数据长度要求、去趋势处理

做Allan方差分析,第一步不是写代码,而是把数据采对。我见过太多人花大把时间调算法,结果数据本身就有问题,分析出来的东西根本没法用。说白了,数据采集这个环节要是没做好,后面全是白搭。

4.1 静态数据采集规范

陀螺仪的静态数据,指的是传感器在完全静止状态下输出的数据。注意,我说的是「完全静止」。你把它放在桌面上,桌面本身有没有振动?周围有没有人走动?空调风吹没吹到?这些都会影响。

我个人习惯的做法是这样的:

  • 固定安装:把陀螺仪用螺丝固定在一个刚性平台上,最好是铸铁或者大理石台面。别用手拿着,也别用双面胶粘。
  • 环境隔离:放在无风、无振动的环境中。我在项目中遇到过,有一次数据里出现了周期性的波动,查了半天,结果是隔壁实验室的离心机在转。
  • 预热充分:上电后至少等30分钟再开始采集。陀螺仪内部有温度敏感元件,刚上电时温度还没稳定,数据会有漂移。
  • 接地处理:确保传感器和采集系统的地线连接良好,避免共模干扰。
注意: 我曾经因为偷懒,没等预热就直接采数据,结果Allan方差曲线在短时间尺度上出现了异常的凸起。后来重新采了一遍,问题就消失了。所以,预热这一步千万别省。

4.2 采样率选择

采样率怎么定?这取决于你想分析的时间尺度。Allan方差能分析的时间范围,是从采样间隔的2倍到总时长的一半。

举个例子:

  • 采样率100Hz,采样间隔10ms,能分析的最短时间是20ms
  • 采样率1Hz,采样间隔1s,能分析的最短时间是2s

我建议的采样率选择原则:

应用场景 推荐采样率 理由
消费级MEMS陀螺仪 100Hz 噪声较大,高频成分需要足够采样点
工业级光纤陀螺 10-50Hz 噪声较低,采样率可以低一些
高精度激光陀螺 1-10Hz 主要关注长期漂移,高频信息意义不大

你想想看,采样率太高会怎样?数据量太大,处理起来慢,而且高频噪声会掩盖掉你关心的低频特性。采样率太低呢?又看不到短时间尺度上的噪声特性。所以,得根据你的陀螺仪类型来选。

4.3 数据长度要求

数据长度,说白了就是你要采多久。这个跟采样率一样,取决于你想分析的时间尺度。

核心公式很简单:总时长 = 采样间隔 × 采样点数

但实际中,我一般遵循这个经验法则:

  • 想分析到100秒的时间尺度,至少采1000秒的数据
  • 想分析到1000秒的时间尺度,至少采10000秒的数据
  • 以此类推
经验值: 对于大多数MEMS陀螺仪,我建议至少采集2小时(7200秒)的数据。这样既能分析到几分钟量级的漂移特性,又不会让数据量大到难以处理。

为什么会这样?因为Allan方差在长相关时间上的置信度,取决于你拥有的独立样本数量。样本太少,方差估计就不准。我在项目中吃过这个亏,有一次只采了30分钟的数据,结果Allan方差曲线在末端抖得跟心电图似的,根本没法用。

4.4 去趋势处理

陀螺仪的静态数据里,通常包含一个缓慢变化的趋势项。这个趋势可能来自温度漂移、电源波动,或者传感器本身的零偏稳定性。

如果不把这个趋势去掉,Allan方差分析的结果会被严重扭曲。说白了,你会把趋势误认为是噪声,得出错误的结论。

去趋势的方法,我常用两种:

  1. 线性去趋势:用最小二乘法拟合一条直线,然后从原始数据中减去这条直线。适用于趋势近似线性的情况。
  2. 多项式去趋势:用高阶多项式拟合趋势项。适用于趋势比较复杂的情况,但阶数不要太高,一般2-3阶就够了。

代码实现很简单,Python里用scipy.signal.detrend就行:

import numpy as np
from scipy import signal

# 假设 data 是采集到的陀螺仪数据
# 线性去趋势
data_detrended = signal.detrend(data, type='linear')

# 也可以做常数去趋势(减去均值)
data_detrended = data - np.mean(data)
小技巧: 我个人的习惯是,先做常数去趋势(减去均值),然后看一眼数据的波形。如果还有明显的趋势,再考虑线性或多项式去趋势。别一上来就搞复杂的,简单方法往往够用。

嗯,这里要注意一点:去趋势操作本身会引入一些误差,尤其是当你用高阶多项式拟合时。所以,能简单就别复杂。我曾经为了追求完美,用了一个5阶多项式去拟合趋势,结果把一些低频噪声也给去掉了,Allan方差曲线在长相关时间上出现了不正常的下降。后来换成线性去趋势,问题就解决了。

4.5 本章小结

数据采集和预处理,是整个Allan方差分析的基础。采样率、数据长度、去趋势处理,这三个环节环环相扣。采样率决定了你能看到的最短时间尺度,数据长度决定了你能看到的最长时间尺度,去趋势处理则保证了分析结果的准确性。

做这一章的时候,我脑子里一直在回想自己踩过的那些坑。希望你能少走弯路,把数据采好、处理好,后面的分析才能顺风顺水。

数据采集与预处理核心流程 采集规范 固定安装·环境隔离 预热30min·接地处理 采样率选择 MEMS: 100Hz 光纤: 10-50Hz · 激光: 1-10Hz 数据长度 至少2小时 时长=采样间隔×点数 去趋势处理 常数去趋势 → 线性去趋势 → 多项式去趋势 输出:干净的静态数据

专注资料整理