Пожалуйста, потерпите меня, если это звучит повторяющийся вопрос.Но я просто хочу убедиться, что весь подход, который я использую, является правильным.В основном я построил следующее из того, что я прочитал из разных источников:
У меня есть IMU, из которого я получаю значения акселерометра и вектора вращения.В документации говорится следующее о векторе вращения.
Вектор вращения обеспечивает вывод ориентации, который выражается в виде кватерниона относительно магнитного севера и силы тяжести.Он производится путем объединения выходов акселерометра, гироскопа и магнитометра.Вектор вращения является наиболее точной доступной оценкой ориентации.
Кватернион вектора вращения показывает, насколько устройство повернуто относительно земной системы координат.Я хотел получить линейное ускорение в системе координат устройства из комбинации вектора вращения и акселерометра.И я предполагаю, что всякий раз, когда устройство находится в состоянии покоя, линейное ускорение должно быть 0.
Это математика, которую я придумал.
- получить кватернион из вектора вращения
q
- получить инверсию кватерниона, чтобы гравитация была выражена в системе координат устройства.
qPrime = inverse(q)
- принять медиану нормы примерно определенного числа сигналов ускорения.
norm
- создать вектор гравитации как
g = [0 0 norm]
- получить линейное ускорение как
a_linear = a_total - qPrime*g*conjugate(qPrime)
примерно вот важные строки в моем коде matlab / octave.
%get the gravity norm at rest from 100 samples
gNorm = median(sqrt(sum(Acc(1:100, 1:3).^2, 2)), 1);
%a couple of lines and a loop later
q_inv = qInv(q);
a_p = qTimes(qTimes(q_inv, [0 g]), qConj(q_inv));
LinAcc = [Acc(i, 1:3) - a_p(2:4)];
После использования приведенного выше кода у меня есть график, который выглядит следующим образом.
Является ли какое-либо из моих предположений неверным?Неправильно ли я предположить, что я должен использовать инверсию кватерниона, чтобы повернуть к системе координат устройства?Должен ли я думать, что ошибки, такие как 0,05 м / с / с в y, исходят из других источников, таких как калибровка, а не из математики?