Franka Emika Posenformat¶
Franka Emika Roboter nutzen eine Transformationsmatrix \(T\) um eine Pose zu definieren. Eine Transformationsmatrix kombiniert eine Rotationsmatrix \(R\) und einen Translationsvektor \(t=(\begin{array}{cccc}x & y & z\end{array})^T\).
Die Posen, die Franka Emika’s „Measure Pose“ App ausgibt, bestehen aus einer Translation \(x, y, z\) in Millimetern und einer Rotation \(x, y, z\) in Grad. Die Rotationsreihenfolge ist \(z\)-\(y'\)-\(x''\) (d.h. \(x\)-\(y\)-\(z\)) und die Rotation wird berechnet durch \(r_z(z) r_y(y) r_x(x).\)
Umrechnung von Transformation in Quaternion¶
Die Umrechnung von einer Rotationsmatrix (mit \(det(R)=1\)) in eine Quaternion \(q=(\begin{array}{cccc}q_x & q_y & q_z & q_w\end{array})\) kann wie folgt durchgeführt werden.
Der \(\text{sign}\) Operator gibt -1 zurück, falls sein Argument negativ ist. Sonst wird 1 zurück gegeben. Er wird zur Wiederherstellung das Vorzeichens der Wurzel benutzt. Die \(\text{max}\) Funktion stellt sicher, dass das Argument der Wurzel nicht negativ ist, was in der Praxis durch Rundungsfehler passieren kann.
Umrechnung von Rotation-XYZ in Quaternion¶
Zur Umrechnung von der Rotationswinkel \(x, y, z\) in Grad in eine Quaternion \(q=(\begin{array}{cccc}q_x & q_y & q_z & q_w\end{array})\) werden zuerst alle Winkel in das Bogenmaß umgerechnet mit
und damit die Quaternion berechnet durch
Umrechnung von Quaternion und Translation in Transformation¶
Die Umrechnung von einer Quaternion \(q=(\begin{array}{cccc}q_x & q_y & q_z & q_w\end{array})\) und einem Translationsvektor \(t=(\begin{array}{cccc}x & y & z\end{array})^T\) in eine Transformationsmatrix \(T\) kann wie folgt durchgeführt werden.
wobei \(s=||q||^{-2}=\frac{1}{q_x^2+q_y^2+q_z^2+q_w^2}\) und \(s=1\) wenn \(q\) eine Einheitsquaternion ist.
Umrechnung von Quaternion in Rotation-XYZ¶
Die Umrechnung von einer Quaternion \(q=(\begin{array}{cccc}q_x & q_y & q_z & q_w\end{array})\) mit \(||q||=1\) in \(x, y, z\) Winkel in Grad kann wie folgt durchgeführt werden.
Posenrepräsentation in RaceCom Messages und Statemachines¶
In RaceCom Messages und in Statemachines wird eine Pose normalerweise als eindimensionales Array aus 16 Floatwerten definiert, die in spaltenweiser Anordnung eine Transformationsmatrix repräsentieren. Die Indizes der Einträge der folgenden Matrix entsprechen den Array-Indizes.