Formate für Posendaten

XYZABC-Format

Das XYZABC-Format wird verwendet, um eine Pose mit sechs Werten auszudrücken. \(XYZ\) gibt die Positionskoordinaten in Millimetern an. \(ABC\) sind Eulersche Winkel in Grad. Die für Eulersche Winkel eingesetzte Konvention lautet ZYX, d.h. zuerst rotiert \(A\) um die \(Z\)-Achse, danach \(B\) um die \(Y\)-Achse und dann \(C\) um die \(X\)-Achse. Bei dieser Konvention sind die verwendeten Achsen die intrinsischen, körperfesten Achsen, die sich mit der Rotation verändern. Somit ist \(A\) der Gier-Winkel (engl. yaw), \(B\) der Nick-Winkel (engl. pitch) und \(C\) der Roll-Winkel (engl. roll). Die Elemente der Drehmatrix lassen sich wie folgt berechnen:

\[\begin{split}r_{11} & = \cos{B}\cos{A}, \\ r_{12} & = \sin{C}\sin{B}\cos{A}-\cos{C}\sin{A}, \\ r_{13} & = \cos{C}\sin{B}\cos{A}+\sin{C}\sin{A}, \\ r_{21} & = \cos{B}\sin{A}, \\ r_{22} & = \sin{C}\sin{B}\sin{A}+\cos{C}\cos{A}, \\ r_{23} & = \cos{C}\sin{B}\sin{A}-\sin{C}\cos{A}, \\ r_{31} & = -\sin{B}, \\ r_{32} & = \sin{C}\cos{B}, \text{and} \\ r_{33} & = \cos{C}\cos{B}. \\\end{split}\]

Bemerkung

Es wird davon ausgegangen, dass die trigonometrischen Funktionen \(\sin\) und \(\cos\) Werte in Grad akzeptieren. Das Argument muss mit dem Faktor \(\frac{\pi}{180}\) multipliziert werden, wenn die Funktionen ihre Argumente im Bogenmaß erwarten.

Mithilfe dieser Werte lassen sich die Drehmatrix \(R\) und der Translationsvektor \(T\) wie folgt definieren:

\[\begin{split}R = \left(\begin{array}{ccc} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{array}\right), \qquad T = \left(\begin{array}{c} X \\ Y \\ Z \end{array}\right).\end{split}\]

Die Transformation lässt sich wie folgt auf einen Punkt \(P\) anwenden:

\[P' = R P + T.\]

XYZ+Quaternion-Format

Das XYZ+Quaternion-Format wird verwendet, um eine Position durch Positionskoordinaten und eine Einheitsquaternion auszudrücken. \(XYZ\) gibt die Positionskoordinaten in Metern an. Die Quaternion ist ein Vektor der Länge 1, der eine Rotation durch vier Werte definiert, d.h. \(q=(\begin{array}{cccc}x & y & z & w\end{array})^T\) mit \(||q||=1\). Hierfür lassen sich die Drehmatrix und der Translationsvektor wie folgt definieren:

\[\begin{split}R = 2 \left(\begin{array}{ccc} \frac{1}{2} - y^2 - z^2 & x y - z w & x z + y w \\ x y + z w & \frac{1}{2} - x^2 - z^2 & y z - x w \\ x z - y w & y z + x w & \frac{1}{2} - x^2 - y^2 \end{array}\right), \qquad T = \left(\begin{array}{c} X \\ Y \\ Z \end{array}\right).\end{split}\]

Die Transformation lässt sich wie folgt auf einen Punkt \(P\) anwenden:

\[P' = R P + T.\]

Bemerkung

Im XYZ+Quaternion-Format werden die Posendaten in Metern, im XYZABC-Format in Millimetern angegeben.

Umrechnung von ABC in Quaternionen

Die Umrechnung der \(ABC\) Eulerwinkel in Grad in eine Quaternion \(q=(\begin{array}{cccc}x & y & z & w\end{array})^T\) kann wie folgt durchgeführt werden.

\[\begin{split}x = \cos{(A/2)}\cos{(B/2)}\sin{(C/2)} - \sin{(A/2)}\sin{(B/2)}\cos{(C/2)} \\ y = \cos{(A/2)}\sin{(B/2)}\cos{(C/2)} + \sin{(A/2)}\cos{(B/2)}\sin{(C/2)} \\ z = \sin{(A/2)}\cos{(B/2)}\cos{(C/2)} - \cos{(A/2)}\sin{(B/2)}\sin{(C/2)} \\ w = \cos{(A/2)}\cos{(B/2)}\cos{(C/2)} + \sin{(A/2)}\sin{(B/2)}\sin{(C/2)}\end{split}\]

Bemerkung

Es wird davon ausgegangen, dass die trigonometrischen Funktionen \(\sin\) und \(\cos\) Werte in Grad akzeptieren. Das Argument muss mit dem Faktor \(\frac{\pi}{180}\) multipliziert werden, wenn die Funktionen ihre Argumente im Bogenmaß erwarten.

Umrechnung von Quaternionen in ABC

Die Umrechnung einer Quaternion \(q=(\begin{array}{cccc}x & y & z & w\end{array})^T\) in die \(ABC\) Eulerwinkel in Grad kann wie folgt durchgeführt werden.

\[\begin{split}A &= \text{atan2}{(2(wz + xy), 1 - 2(y^2 + z^2))}\frac{180}{\pi} \\ B &= \text{asin}{(2(wy - zx))}\frac{180}{\pi} \\ C &= \text{atan2}{(2(wx + yz), 1 - 2(x^2 + y^2))}\frac{180}{\pi}\end{split}\]