如何以八度为单位以不同的采样率同步传感器数据?

时间:2019-04-23 16:07:59

标签: signal-processing octave android-sensors kalman-filter

我想基于加速度计,旋转矢量和WLAN实现卡尔曼传感器融合。我使用dlmread从CSV文件为每个Android传感器(加速度计,旋转矢量和WLAN)加载传感器数据。每个传感器具有从2ms到200ms的不同采样率。我的问题是我不知道如何访问数据以实现传感器融合,因为这些值不同步。

accelData = dlmread("1.csv", ",", 1, 0);

accelX = accelData(:, 15);
accelY = accelData(:, 16);
accelZ = accelData(:, 17);

rotVecData = dlmread("11.csv", ",", 1, 0);

rot1 = rotVecData(:, 15);
rot2 = rotVecData(:, 16);
rot3 = rotVecData(:, 17);
rot4 = rotVecData(:, 18);
rot5 = rotVecData(:, 19);

dtA = 0.002;#2ms
samplesA = length(accelX);
tAccel = 0:dtA:(samplesA*dtA - dtA);
dtR = dtA*5;#10ms
samplesR = length(rot1);
tRot = 0:dtR:(samplesR*dtR - dtR);

for i = 1 : samplesR
  r = [rot1(i), rot2(i), rot3(i), rot4(i), rot5(i)];

  [azimuth] = Orientation(r, 90);
  a(end+1) = rad2deg(azimuth);
end

figure
plot(tAccel, accelX, tRot, rot1)

在示例中,我可以按正确的时间间隔绘制2个不同传感器的值。输出如下: plottet accelerometer and rot vector

这里的问题是我无法迭代这些值以进行进一步的计算。因为accel(i)值以2ms的速率发生,而rot1中的第i个元素的速率为20ms。因此,来自CSV的每个传感器阵列都有不同的大小,但是所有它们都在相同的时间间隔内发生。

在所示的图中是正确的,但我不知道如何在与不同采样率相对应的一个循环中迭代数据?

注意:这些值相互依赖(基于旋转矢量的行人航位推算和基于加速度计的步检测)。

0 个答案:

没有答案