Вращение вокруг оси Z мира - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь применить вращение, чтобы исправить положение камеры в моей настройке, поскольку одна из осей, кажется, выключена. Я подозреваю, что эта ось будет Z "мировой" рамки. Другими словами, мне нужно повернуть кадр "stereo_camera" вокруг оси Z "мирового кадра" на 90 градусов. Тогда все должно быть в порядке.

enter image description here

Я пытался использовать несколько библиотек Python и Octave для достижения этой цели, но мне не удалось. Каким-то образом умножение или способ выражения квотерниона, похоже, не соответствуют.

# Here is the current quarternion of "stereo_camera"
q = np.array([0.0, 0.70710678, 0.0, 0.70710678])

# Rotation matrix, 90 degrees around Z would be:
I = np.array([[0, -1, 0],[1,0,0],[0,0,1]])

# apply the transformation
q.dot(I)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: shapes (4,) and (3,3) not aligned: 4 (dim 0) != 3 (dim 0)

Есть ли кто-нибудь, кто мог бы предложить мне хороший пакет Python, который может справиться с такими ситуациями, с минимальным примером? Не должно быть трудно применить 1 единственный оборот к четвертиону.

1 Ответ

0 голосов
/ 03 июля 2019

Итак, нужно было использовать матрицу вращения, а не четверть. Я использовал this для преобразования из кватерниона в матрицу вращения.

Матрица вращения - это матрица, которая выглядит следующим образом:

[  0.0000000, -1.0000000,  0.0000000;
   0.0000000,  0.0000000,  1.0000000;
  -1.0000000,  0.0000000,  0.0000000 ]

Как только эта матрица получена, ее можно умножить.

...