#signal-processing #octave #android-sensors #kalman-filter
#обработка сигнала #октава #android-датчики #kalman-filter
Вопрос:
Я хочу реализовать слияние датчиков kalman на основе акселерометра, вектора вращения и WLAN. Я загружаю данные датчика из файла CSV для каждого датчика Android (акселерометр, вектор вращения и WLAN) с помощью dlmread. Каждый датчик имеет разные частоты дискретизации от 2 мс до 200 мс. Моя проблема в том, что я не знаю, как получить доступ к данным для реализации слияния датчиков, потому что значения не синхронизированы.
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 значения разных датчиков в правильном временном интервале. Результат следующий:
Проблема здесь в том, что я не могу перебирать значения для дальнейших вычислений. Поскольку значение accel (i) выполняется со скоростью 2 мс, в то время как i-й элемент в rot1 имеет скорость 20 мс. Таким образом, каждый массив датчиков из CSV имеет разные размеры, но все они выполняются за один и тот же интервал времени.
На показанном рисунке это правильно, но я не знаю, как перебирать данные в одном цикле, соответствующем разным частотам дискретизации?
Примечание: Значения зависят друг от друга (подсчет мертвого пешехода на основе вектора поворота и определение шага на основе акселерометра).
Комментарии:
1. Вы смотрели на
resample
функцию изsignal
пакета?2. ДА. Я видел, что такая функция существует. Но документация действительно минималистична. Нет информации о коэффициенте p/q . Есть только 2 ссылки, и это немного серьезное чтение.
3. Взгляните на документацию для соответствующей функции MATLAB, она намного более полная: uk.mathworks.com/help/signal/ref/resample.html