Der Titel klingt vielleicht etwas sperrig. Es geht in diesem Beitrag nicht um den Einsatz von Transformationsmatrizen in der Geodäsie an sich, sondern wie sie in Vermessungsgeräten selbst, in der Firmware, ein mächtiges Werkzeug sind.
Ob Computergrafik oder Robotik, Transformationsmatrizen sind fester Bestandteil der IT. Sie ermöglichen eine konsistente und durchgängige Arbeit mit und zwischen lokalen und einem globalen Koordinatensystem. Dieser Beitrag bezieht sich auf \(R^3\) und konzentriert sich auf Kernaussagen, mathematische Herleitungen etc. werden ausgelassen.
Transformationsmatrizen ermöglichen vereinfacht gesagt den Wechsel von Vektoren zwischen Koordinatensystemen durch pure Multiplikation. Die Mathematik spricht hier von Basiswechsel, einem Teilgebiet der linearen Algebra. Ein Vektor \(\vec{v_1}\) in einem kartesischen Koordinatensystem \(K_1\) (in der linearen Algebra Urbildraum genannt) wird in ein anderes kartesisches Koordinatensystem \(K_2\) (in der linearen Algebra Zielraum genannt) als \(\vec{v_2}\) überführt durch \(\vec{v_2} = M \cdot \vec{v_1}\). Transformationsmatrizen sind dabei prinzipbedingt immer quadratisch und invertierbar. Das gleiche mathematische Prinzip, welches zu ihrer immer quadratischen und invertierbaren Form / Eigenschaft führt, sorgt für zwei weitere wichtige Eigenschaften.
- durch Multiplikation von zwei Transformationsmatrizen \(M_1\) und \(M_2\) ergibt sich eine Transformationsmatrix \(M_3 = M_1 \cdot M_2\), welche die Transformationen von \(M_1\) und \(M_2\) in einem Rechenschritt zusammenführt:
$$
\vec{v_{temp}} = M_1 \cdot \vec{v_1} \\
\vec{v_2} = M_2 \cdot \vec{v_{temp}} \\
M_3 = M_1 \cdot M_2 \\
\vec{v_2} = M_3 \cdot \vec{v_1}
$$ - die Inverse \(M^{-1}\) einer Matrix \(M\) kehrt die Projektion dieser Matrix zwischen Urbild- und Zielraum um:
$$
\vec{v_2} = M \cdot \vec{v_1} \\
\vec{v_1} = M^{-1} \cdot \vec{v_2}
$$
Hinzu kommt nun noch eine wichtige Eigenschaft, die der homogenen Koordinaten: Vereinfacht gesagt erlaubt die Ergänzung von Koordinaten im Raum um eine Dimension auch die Projektion von z.B. Translationen durch Transformationsmatrizen. Auch andere wichtige Projektionen werden so möglich, dazu später mehr in einem Beitrag am Beispiel der Photogrammetrie.
Auf den \(R^3\) übertragen bedeutet dies eine Ergänzung zu \(R^4\). Statt eines Vektors \( \vec{v} = \left( \begin{array}{ccc} x & y & z \end{array} \right)^T \) wird ein Vektor \( \vec{v} = \left( \begin{array}{cccc} x & y & z & w \end{array} \right)^T \) genutzt. Die zusätzliche Komponente \(w\) sorgt nun dafür, dass eine Koordinate im \(R^3\) nicht mehr eine eindeutige (inhomogenen) Koordinate besitzt, sondern unendlich viele Varianten in Abhängigkeit von ihr. Die Interpretation von \(w\) ist eine zusätzliche Tiefeninformation im Hyperraum. An dieser Stelle sei ausreichend, in den meisten Fällen kann \(w\) einfach als Skalierungsfaktor für \( \left( \begin{array}{ccc} x & y & z \end{array} \right)^T \) interpretiert werden.
Im \(R_3\) besitzt ein Körper 6 Freiheitsgrade, seine Position und seine Ausrichtung. Diese lassen sich mit Translation und Rotation beschreiben. Dazu später mehr.
Nun ergeben sich zwei verschiedene Möglichkeiten der Berechnungen:
- Die Verwendung der Vektoren in Normalform:
$$
\vec{v^´} = \left( \begin{array}{c} x´ \\ y´ \\ z´ \\ w´ \end{array} \right) = \left( \begin{array}{cccc} m_{11} & m_{12} & m_{13} & m_{14} \\ m_{21} & m_{22} & m_{23} & m_{24} \\ m_{31} & m_{32} & m_{33} & m_{34} \\ m_{41} & m_{42} & m_{43} & m_{44} \end{array} \right) \cdot \left( \begin{array}{c} x \\ y \\ z \\ w \end{array} \right)
$$ - Die Verwendung der Vektoren in transponierter Form:
$$
\vec{v^´} = \left( \begin{array}{cccc} x´ & y´ & z´ & w´ \end{array} \right) = \left( \begin{array}{cccc} x & y & z & w \end{array} \right) \cdot \left( \begin{array}{cccc} m_{11} & m_{12} & m_{13} & m_{14} \\ m_{21} & m_{22} & m_{23} & m_{24} \\ m_{31} & m_{32} & m_{33} & m_{34} \\ m_{41} & m_{42} & m_{43} & m_{44} \end{array} \right)
$$
Üblicherweise wird der erste Ansatz genutzt, z.B. bei OpenGL, Microsoft dagegen kocht auch hier wieder sein eigenes Süppchen und nutzt den zweiten Ansatz in z.B. Direct3D und .Net. Wichtig ist die unterschiedliche Reihenfolge der Transformationen (exakter Projektionen im mathematischen Sinne). Werden im mechanischen Sinne Translationen und Rotationen in einer gewissen Reihenfolge durchgeführt, so erfolgt ihre mathematische Modellierung von rechts nach links:
$$
M_G = M_n \cdot … \cdot M_3 \cdot M_2 \cdot M_1
$$
Dagegen erfolgt die mathematische Modellierung bei Verwendung der transponierten Form von links nach rechts:
$$
M_G = M_1 \cdot M_2 \cdot M_3 \cdot … \cdot M_n
$$
Die weiteren Ausführungen beziehen sich auf die allgemein übliche erste Form. Die besondere Bedeutung von Translation und Rotation wurde bereits angerissen. Translationen lassen sich einfach modellieren als
$$
M_T = \left( \begin{array}{cccc} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{array} \right)
$$
Schwieriger fällt die Modellierung von Rotationen aus. Im Gegensatz zu Game Engines etc. spielen bei Vermessungsgeräten Winkelgenauigkeiten und ihre numerischen Effekte eine höhere Rolle. Technisch anschaulich sind Modellierungen von Rotationsmatrizen nach dem Prinzip der kardanischen Aufhängung. Neben der Problematik des Gimbal Locks werden solche Rotationsmatrizen mittels trigonometrischer Funktionen gebildet. Trigonometrische Funktionen sollten numerisch betrachtet immer vorsichtig eingesetzt werden. Besser ist hier die Verwendung von Rotationsmatrizen auf Basis von Quaternionen. Quaternionen werden durch vierdimensionale Vektoren beschrieben. Deren Betrag ist stets 1. Mithilfe eines Quaternions kann eine Rotationsmatrix auf verschiedene Weise gebildet werden, inhomogen oder homogen. Der Unterschied ergibt sich, wenn der das Quaternion abbildende Vektor nicht die Bedingung erfüllt, den Betrag 1 zu besitzen. Die inhomogene Form hat einen leicht geringeren Rechenaufwand, bildet aber in diesem Fall ein „verzerrtes“ willkürliches Ergebnis. Die homogene Form dagegen mit etwas mehr Rechenaufwand bewirkt in einem solchen Fall eine Skalierung, aber keine „Verzerrung“.
Die inhomogene Form kommt sehr häufig in der Computergrafik /-geometrie zum Einsatz, z.B. in Qt oder .Net (die Links führen jeweils zum Quellcode in den Repositorien, Stand 21.04.2024).
$$
M_R =
\left(
\begin{array}{cccc}
1 – 2 \left( {q_y}^2 + {q_z}^2 \right) & 2 \left( q_x q_y – q_w q_z \right) & 2 \left( q_w q_y + q_x q_z \right) & 0 \\
2 \left( q_x q_y + q_w q_z \right) & 1 – 2 \left( {q_x}^2 + {q_z}^2 \right) & 2 \left( q_y q_z – q_w q_x \right) & 0 \\
2 \left( q_x q_z – q_w q_y \right) & 2 \left( q_w q_x + q_y q_z \right) & 1 – 2 \left( {q_x}^2 + {q_y}^2 \right) & 0 \\
0 & 0 & 0 & 1 \\
\end{array}
\right)
$$
Nun im Gegensatz die homogene Form. Diese spielt vor allem im Vermessungswesen eine große Rolle, wie z.B. in der Photogrammetrie:
$$
M_R =
\left(
\begin{array}{cccc}
{q_w}^2 + {q_x}^2 – {q_y}^2 – {q_z}^2 & 2 \left( q_x q_y – q_w q_z \right) & 2 \left( q_w q_y + q_x q_z \right) & 0 \\
2 \left( q_x q_y + q_w q_z \right) & {q_w}^2 – {q_x}^2 + {q_y}^2 – {q_z}^2 & 2 \left( q_y q_z – q_w q_x \right) & 0 \\
2 \left( q_x q_z – q_w q_y \right) & 2 \left( q_w q_x + q_y q_z \right) & {q_w}^2 – {q_x}^2 – {q_y}^2 + {q_z}^2 & 0 \\
0 & 0 & 0 & 1 \\
\end{array}
\right)
$$
Hier spielt die numerische Stabilität vor allem in Verbindung mit der geodätischen Ausgleichungsrechnung eine große Rolle. Diese ist auch für die Anwendung bei Vermessungsgeräten wichtig, bei ihrer Verwendung für die Kalibrierung. Meist kommt dabei die vermittelnde Ausgleichung zum Einsatz und die Bedingung, dass das Quaternion einen Betrag von 1 besitzen muss, wird numerisch über hohe Gewichtung umgesetzt.
Der „Defaultwert“ für ein Quaternion ist \( \left( \begin{array}{cccc} 0 & 0 & 0 & 1 \end{array} \right)^T \). Mit diesem Wert werden die genannten Rotationsmatrizen zu Identität- / Einheitsmatrizen. Natürlich ist ein Quaternion keine „sehr anschauliche“ Repräsentation. Jedoch können Quaternionen in die eulerschen Winkel einer kardanischen Aufhängung umgerechnet werden und umgekehrt. Bedeutet im Klartext, für die Berechnungen und Kalibrierung sollte hier „intern“ auf Quaternionen gesetzt werden. Sehr viele bereits optimierte Operationen finden sich hier.
Mit der Translation und der Rotation können nun bereits alle 6 Freiheitsgrade eines Körpers modelliert werden. Ein Vermessungsgerät hat aber bewegliche Teile. Als Beispiel sei ein Tachymeter genannt. Dieses besitzt zwei Achsen, die Steh- und die Kippachse. Beide lassen sich wieder als Rotationsmatrizen modellieren:
$$
M_{Stehachse} =
\left(
\begin{array}{cccc}
\cos \alpha & – \sin \alpha & 0 & 0 \\
\sin \alpha & \cos \alpha & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
\end{array}
\right) \\
M_{Kippachse} =
\left(
\begin{array}{cccc}
\cos \alpha & 0 & \sin \alpha & 0 \\
0 & 1 & 0 & 0 \\
– \sin \alpha & 0 & \cos \alpha & 0 \\
0 & 0 & 0 & 1 \\
\end{array}
\right)
$$
Für den Leser, welcher bereits mehr in der Materie steckt, die Rotationsmatrix für die Kippachse ist darum eine Rotationsmatrix um die y-Achse und nicht um die x-Achse, um die Berechnungen gleich im linkshändigen Koordinatensystem, wie üblich im Vermessungswesen, einzusetzen. Zur Vereinfachung wird der Kompensator hier ausgelassen. Ein anderer Beitrag wird sich ausschließlich mit dem Kompensator, seiner numerischen Behandlung und Vektoren im Schwerefeld befassen. In diesem Beitrag geht es zunächst nur um das Grundprinzip der Anwendung von Transformationsmatrizen.
Mit Hilfe der beschriebenen Transformationsmatrizen können jetzt die Teile des Tachymeters geometrisch modelliert werden. Das Tachymeter besitzt eine Ausrichtung im Raum mit 6 Freiheitsgraden, welche mit einer Translations- und einer Rotationsmatrix beschrieben werden. Diese werden hier mit \( M_{T-Gerät} \) und \( M_{R-Gerät} \) benannt. Damit können Vektoren zwischen dem lokalen Koordinatensystem des Tachymeters und dem lokalen Koordinatensystem in beide Richtungen projeziert werden (Basiswechsel).
Genauso verhält es sich nun mit dem Lager der Stehachse des Tachymeters. Diese beitzt gegenüber dem Gesamtsystem wieder eine Position und Ausrichtung, welche wieder mittels Translation und Rotation beschrieben werden. Die Matrizen werden hier mit \( M_{T-Stehachse} \) und \( M_{R-Stehachse} \) benannt. In der Realität würde dabei der Ortsvektor für die Translationsmatrix eine Voreinstellung nach den Konstruktionsplänen und das Quaternion seinen Grundwert \( \left( \begin{array}{cccc} 0 & 0 & 0 & 1 \end{array} \right)^T \) erhalten. Bei der Kalibrierung würden die Werte dann dem realen Gerät entsprechend verändert.
Die Rotationsmatrix der Stehachse \( M_{Stehachse} \), welche deren Rotation im Lager modelliert, schließt sich an. Ihr Wert \( \alpha \) wird vom Drehgeber der Stehachse geliefert. Ein möglicher fester Offset wird im Rahmen der Kalibrierung ermittelt und ist bereist im vorangegangenen Quaternion abgebildet.
Es schließt sich das Lager der Kippachse an, welches wieder eine Position und Ausrichtung bezüglich der Stehachse besitzt. Dieses wird wieder per Translation und Rotation modelliert und die Matrizen hier mit \( M_{T-Kippachse} \) und \( M_{R-Kippachse} \) benannt. Es schließt sich nun wie bei der Stehachse die Modellierung der Rotation der Kippachse mit \( M_{Kippachse} \) an, \( \alpha \) wird vom Drehgeber der Kippachse geliefert. Auch hier wird mit den Initial- und Endwerten der Transformationsmatrizen wie bei der Stehachse verfahren.
Nun verbleiben nur noch Fernrohr und Entfernungsmesser. Ein anderer Beitrag wird sich separat mit mathematischen Projektionen beschäftigen, welche photogrammetrische Methoden mit den hier gezeigten Techniken vereinigen. Daher wird beim Fernrohr an dieser Stelle nur sein Brennpunkt und seine optische Achse betrachtet.
… wird fortgesetzt