Я пытаюсь выровнять оси X, Y, Z от акселерометра к осям X, Y, Z транспортного средства.
Мой подход состоит из двух этапов:
1 шаг: Найдите матрицу вращения Rz, чтобы выровнять оси Z обеих систем координат. Я знаю, что вектор ускорения автомобиля равен A_veh=(0,0,1000)
(значения в мг), когда он остановлен на ровной поверхности, поэтому я измеряю ускорение, сообщаемое акселерометром в тот самый момент, и я получаю свой вектор A_acc=(6,64,1016)
(значения в мг. ), поэтому я перехожу к поиску матрицы вращения, чтобы выровнять A_a cc с осью Z автомобиля (A_veh). Я формирую матрицу рационов, используя реализацию формулы Родригеса, перечисленной здесь , и находим:
`Rz[][] = 0.999983 -0.000185 -0.005894
-0.000185 0.998022 -0.062866
0.005894 0.062866 0.998005`
Чтобы проверить матрицу вращения, я умножаю вектор A_a cc на Rz и получите выровненный вектор A_z_aligned=(0.000000,0.000000,1018)
(в мг), который является ожидаемым, поскольку все ускорение находится на оси Z транспортного средства.
Изображение, показывающее отладочную информацию о процессе получения Rz
2 шаг: Найдите матрицу вращения Rxy для выравнивания осей XY обеих систем координат. Измеряя некоторое ускорение автомобиля с помощью внешнего датчика, я получаю следующий вектор ускорения для автомобиля A_veh=(-323,0,1009)
, а из акселерометра получаю A_acc=(-11,-322,1009)
(в мг), поэтому, повторяя процедуру, начиная с шага 1, я получаю матрицу вращения Rxy:
`Rxy[][] = 0.954307 0.135202 -0.266494
-0.050168 0.951624 0.303143
0.294151 -0.275922 0.914924`
И для проверки этой матрицы вращения я умножаю вектор A_a cc на Rxy и получаю выровненный вектор A_xy_aligned=(-322,0,1008)
, который является ожидаемым.
Изображение отображение отладочной информации о процессе получения Rxy
Вопрос: Как можно «объединить» две матрицы вращения, чтобы иметь одну матрицу вращения, которая позволяет мне выровнять любой необработанный вектор ускорения, считанный с акселерометра, по осям автомобиля?
Я попытался умножить необработанные векторы ускорения на Rz, а затем на Rxy, и кажется, что это не работает.
Я также пытался умножить обе матрицы Rz * Rxy = R и использовать R для выравнивания необработанных векторов, но это тоже не работает.
Мне нужна помощь с этой топи c.
Спасибо,