Как объединить две матрицы вращения 3x3, чтобы выровнять оси акселерометра с другой системой координат - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь выровнять оси 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.

Спасибо,

...