# Denavit-Hartenberg-Transformation

Die Denavit-Hartenberg-Transformation (DH-Transformation) aus dem Jahr 1955 wurde nach Jacques Denavit und Richard S. Hartenberg benannt und ist ein mathematisches Verfahren, das auf der Basis von homogenen Matrizen und der sogenannten Denavit-Hartenberg-Konvention (DH-Konvention) die Überführung von Ortskoordinatensystemen (OKS) innerhalb von kinematischen Ketten beschreibt. Dies wird vor allem in der Berechnung der direkten Kinematik (Vorwärtskinematik), der inversen Kinematik, als auch bei in der Kalibrierung von Industrierobotern gezielt ausgenutzt und gilt hierbei mittlerweile als das Standardverfahren im Bereich Robotik.

## DH-Konvention

Folgende Voraussetzungen sind notwendig:
* die $z_{n-1}$-Achse liegt entlang der Bewegungsachse des $n$-ten Gelenks
* die $x_{n}$-Achse ist das Kreuzprodukt von $z_{n-1}$-Achse und $z_{n}$-Achse (${\vec {e}}_{x_{n}}={\vec {e}}_{z_{n-1}}\times {\vec {e}}_{z_{n}}$).
* das Koordinatensystem wird durch die $y_{n}$-Achse so ergänzt, dass es ein rechtshändiges System ergibt.
Für das erste Gelenk wird die $x$-Achse vom zweiten Gelenk übernommen. Es ist weiter zu beachten, dass die nach der DH-Konvention modellierten Gelenke nicht an den gleichen Positionen liegen müssen wie ihre physischen Gegenstücke. Sofern die Verschiebung in einem der nachfolgenden Segmente der kinematischen Kette ausgeglichen wird, können Gelenke nach Belieben entlang ihrer Rotationsachse verschoben und um diese gedreht werden, ohne das Gesamtergebnis der Berechnung zu beeinflussen. Diese Eigenschaft wird gezielt ausgenutzt, um Gelenke so aneinander auszurichten, dass Rotationen und Verschiebungen entlang der $y$-Achse vermieden werden und in der Folge die Anzahl der notwendigen Parameter zur Beschreibung der jeweiligen Transformationen von sechs auf vier reduziert werden kann.
Einen Sonderfall bilden Schubgelenke: Hier ist zusätzlich eine Translation orthogonal zum Schubvektor möglich, wodurch es in DH konformen Modellen - genau wie bei aufeinander folgenden, parallel ausgerichteten Gelenken - noch immer zu Redundanzen in den Modellparametern kommen kann. Um eine vollständige Kalibrierung zu ermöglichen, werden in der Theorie zudem zwei zusätzliche Freiheitsgrade zwischen dem letzten Gelenk und dem Endeffektor eines Roboters benötigt. Neueren Modellen wie dem S-Model, das complete and parametrically continuous kinematic (CPC) Model und das Modifizierte CPC (MCPC) Model ist es gelungen einzelne oder sogar alle Schwächen der DH-Konvention auszugleichen, jedoch haben diese Modelle nie eine ähnliche Bekanntheit wie die DH-Konvention erlangen können.

## DH-Transformation

Die eigentliche DH-Transformation vom Objektkoordinatensystem (OKS) $T_{n-1}$ in das OKS $T_{n}$ besteht in der Hintereinanderausführung folgender Einzeltransformationen:
* einer Rotation $\theta _{n}$ (Gelenkwinkel) um die $z_{n-1}$-Achse, damit die $x_{n-1}$-Achse parallel zu der $x_{n}$-Achse liegt
    $\operatorname {Rot} (z_{n-1},\theta _{n})={\begin{pmatrix}\cos \theta _{n}&-\sin \theta _{n}&0&0\\\sin \theta _{n}&\cos \theta _{n}&0&0\\0&0&1&0\\0&0&0&1\\\end{pmatrix}}$
* einer Translation $d_{n}$ (Gelenkabstand) entlang der $z_{n-1}$- Achse bis zu dem Punkt, wo sich $z_{n-1}$ und $x_{n}$ schneiden
    $\operatorname {Trans} (z_{n-1},d_{n})={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&d_{n}\\0&0&0&1\\\end{pmatrix}}$
* einer Translation $a_{n}$ (Armelementlänge) entlang der $x_{n}$-Achse, um die Ursprünge der Koordinatensysteme in Deckung zu bringen
    $\operatorname {Trans} (x_{n},a_{n})={\begin{pmatrix}1&0&0&a_{n}\\0&1&0&0\\0&0&1&0\\0&0&0&1\\\end{pmatrix}}$
* einer Rotation $\alpha _{n}$ (Verwindung) um die $x_{n}$-Achse, um die $z_{n-1}$-Achse in die $z_{n}$-Achse zu überführen
    $\operatorname {Rot} (x_{n},\alpha _{n})={\begin{pmatrix}1&0&0&0\\0&\cos \alpha _{n}&-\sin \alpha _{n}&0\\0&\sin \alpha _{n}&\cos \alpha _{n}&0\\0&0&0&1\\\end{pmatrix}}$
Die beiden Rotationen entsprechen hierbei den klassischen Euler Winkeln. In Matrixschreibweise lautet die Gesamttransformation dann (von links nach rechts zu interpretieren):
    ${\begin{aligned}^{n-1}T_{n}=&\operatorname {Rot} (z_{n-1},\theta _{n})\cdot \operatorname {Trans} (z_{n-1},d_{n})\cdot \operatorname {Trans} (x_{n},a_{n})\cdot \operatorname {Rot} (x_{n},\alpha _{n})\\&\\=&{\begin{pmatrix}\cos \theta _{n}&-\sin \theta _{n}\cos \alpha _{n}&\sin \theta _{n}\sin \alpha _{n}&a_{n}\cos \theta _{n}\\\sin \theta _{n}&\cos \theta _{n}\cos \alpha _{n}&-\cos \theta _{n}\sin \alpha _{n}&a_{n}\sin \theta _{n}\\0&\sin \alpha _{n}&\cos \alpha _{n}&d_{n}\\0&0&0&1\\\end{pmatrix}}\,.\end{aligned}}$
Die Inverse dieser Matrix
    ${\begin{aligned}^{n-1}T_{n}^{-1}=&\operatorname {Rot} (x_{n},-\alpha _{n})\cdot \operatorname {Trans} (x_{n},-a_{n})\cdot \operatorname {Trans} (z_{n-1},-d_{n})\cdot \operatorname {Rot} (z_{n-1},-\theta _{n})\\&\\=&{\begin{pmatrix}\cos -\theta _{n}&-\sin -\theta _{n}&0&-a_{n}\\\sin -\theta _{n}\cos -\alpha _{n}&\cos -\theta _{n}\cos -\alpha _{n}&-\sin -\alpha _{n}&-\sin(-\alpha _{n})(-d_{n})\\\sin -\alpha _{n}\sin -\theta _{n}&\sin -\alpha _{n}\cos -\theta _{n}&\cos -\alpha _{n}&\cos(-\alpha _{n})(-d_{n})\\0&0&0&1\\\end{pmatrix}}\\&\\=&{\begin{pmatrix}\cos \theta _{n}&\sin \theta _{n}&0&-a_{n}\\-\sin \theta _{n}\cos \alpha _{n}&\cos \theta _{n}\cos \alpha _{n}&\sin \alpha _{n}&-d_{n}\sin \alpha _{n}\\\sin \alpha _{n}\sin \theta _{n}&-\cos \theta _{n}\sin \alpha _{n}&\cos \alpha _{n}&-d_{n}\cos \alpha _{n}\\0&0&0&1\\\end{pmatrix}}\end{aligned}}$
beschreibt die Transformation eines Punktes vom OKS $T_{n}$ ins OKS $T_{n-1}$. Entsprechend kann die ursprüngliche Matrix $^{n-1}T_{n}$ auch als Transformation eines Punktes vom OKS $T_{n-1}$ ins OKS $T_{n}$ interpretiert werden, wenn der Ortsvektor des Punktes von rechts an die Matrix multipliziert wird. Es ist zu beachten, dass die Matrizen-Multiplikation im Allgemeinen nicht kommutativ und somit die Berechnungsfolge der Gesamttransformation nicht vertauschbar ist.
Die Parameter $\theta _{n},d_{n},a_{n}$ und $\alpha _{n}$ werden dabei auch Denavit-Hartenberg-Parameter genannt.
Bei offenen kinematischen Ketten sind $\theta _{n}$ und $d_{n}$ variable Größen während der Bewegung des Roboters, abhängig von dessen spezieller Geometrie und Maßen. Bei einem rotatorischen Gelenk ist $\theta _{n}$ variant und $d_{n}$ konstant, bei einem Schubgelenk umgekehrt. $\alpha _{n}$ und $a_{n}$ dagegen sind sowohl bei Rotations-, als auch bei Schubgelenken invariante Größen und müssen für die spätere Berechnung der direkten Kinematik nur einmal für jedes einzelne Armelement bestimmt werden.

## Modifizierte DH-Parameter

Einige Bücher wie Introduction to Robotics: Mechanics and Control (3rd Edition) verwenden modifizierte DH-Parameter. Der Unterschied zwischen den klassischen DH-Parametern und den modifizierten DH-Parametern sind die Orte der Koordinatensystemanbindung an die Glieder und die Reihenfolge der durchgeführten Transformationen.
Im Vergleich zu den klassischen DH-Parametern werden die Koordinaten des Rahmens $O_{i-1}$ auf die Achse $i-1$ gelegt, nicht auf die Achse $i$ in klassischer DH-Konvention. Die Koordinaten von $O_{i}$ werden in klassischer DH-Konvention auf die Achse $i$, nicht auf die Achse $i+1$ gelegt.
Ein weiterer Unterschied ist, dass nach der modifizierten Konvention die Transformationsmatrix durch die folgende Reihenfolge der Operationen gegeben ist:
    $^{n-1}T_{n}=\operatorname {Rot} _{x_{n-1}}(\alpha _{n-1})\cdot \operatorname {Trans} _{x_{n-1}}(a_{n-1})\cdot \operatorname {Rot} _{z_{n}}(\theta _{n})\cdot \operatorname {Trans} _{z_{n}}(d_{n})$
Somit wird die Matrix der modifizierten DH-Parameter
    $\operatorname ^{n-1}T_{n}=\left[{\begin{array}{ccc|c}\cos \theta _{n}&-\sin \theta _{n}&0&a_{n-1}\\\sin \theta _{n}\cos \alpha _{n-1}&\cos \theta _{n}\cos \alpha _{n-1}&-\sin \alpha _{n-1}&-d_{n}\sin \alpha _{n-1}\\\sin \theta _{n}\sin \alpha _{n-1}&\cos \theta _{n}\sin \alpha _{n-1}&\cos \alpha _{n-1}&d_{n}\cos \alpha _{n-1}\\\hline 0&0&0&1\end{array}}\right]$
bzw. die Inverse:
    $\operatorname ^{n}T_{n-1}=\left[{\begin{array}{ccc|c}\cos \theta _{n}&\sin \theta _{n}\cos \alpha _{n-1}&\sin \theta _{n}\sin \alpha _{n-1}&-a_{n-1}\cos \theta _{n}\\-\sin \theta _{n}&\cos \theta _{n}\cos \alpha _{n-1}&\cos \theta _{n}\sin \alpha _{n-1}&a_{n-1}\sin \theta _{n}\\0&-\sin \alpha _{n-1}&\cos \alpha _{n-1}&-d_{n}\\\hline 0&0&0&1\end{array}}\right]$
In einigen Büchern wird die Transformationsreihenfolge für ein Paar aus aufeinanderfolgender Rotation und Translation (z. B. $d_{n}$ und $\theta _{n}$) ersetzt. Da die Reihenfolge der Matrixmultiplikation für ein solches Paar jedoch keine Rolle spielt, ist das Ergebnis dasselbe. Ein Beispiel: $\operatorname {Trans} _{z_{n}}(d_{n})\cdot \operatorname {Rot} _{z_{n}}(\theta _{n})=\operatorname {Rot} _{z_{n}}(\theta _{n})\cdot \operatorname {Trans} _{z_{n}}(d_{n})$.