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=(xyz)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 rz(z)ry(y)rx(x).
Umrechnung von Transformation in Quaternion¶
Die Umrechnung von einer Rotationsmatrix (mit det(R)=1) in eine Quaternion q=(qxqyqzqw) kann wie folgt durchgeführt werden.
Der 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 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=(qxqyqzqw) 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=(qxqyqzqw) und einem Translationsvektor t=(xyz)T in eine Transformationsmatrix T kann wie folgt durchgeführt werden.
wobei s=||q||−2=1q2x+q2y+q2z+q2w und s=1 wenn q eine Einheitsquaternion ist.
Umrechnung von Quaternion in Rotation-XYZ¶
Die Umrechnung von einer Quaternion q=(qxqyqzqw) 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.