# Convenzione di Denavit-Hartenberg

La convenzione di Denavit-Hartenberg, abbreviata anche in D-H, è spesso usata per scegliere i sistemi di riferimento utilizzati in applicazioni robotiche introdotto da Jacques Denavit e Richard S. Hartenberg. Essa fa sì che una trasformazione geometrica possa essere rappresentata nello spazio euclideo tridimensionale con il numero minimo di parametri, ovvero quattro.
In tale convenzione ogni trasformazione omogenea è rappresentata dal prodotto di quattro trasformazioni base.

## Parametri di Denavit-Hartenberg

I quattro parametri in grado di descrivere la trasformazione sono definiti come segue. Considerando due giunti consecutivi:
* l'asse $Z_{n-1}$ si sceglie coincidente con l'asse del giunto $i-1$, l'asse $Z_{n}$ coincidente con l'asse del giunto $i$;
* l'asse $X_{n-1}$ può essere scelto liberamente, ma è conveniente porlo in direzione del giunto successivo, e si interseca con $Z_{n-1}$ in corrispondenza del centro del giunto $i-1$ (scelto come origine); l'asse $X_{n}$ corre lungo la normale comune fra gli assi $Z_{n-1}$ e $Z_{n}$;
* gli assi $Y_{n-1}$ e $Y_{n}$ sono scelti in modo da completare le rispettive terne levogire.
La trasformazione è allora descritta da quattro parametri di Denavit-Hartenberg:
* $d$: distanza dell'asse $Z_{n-1}$ dalla normale comune; nel caso vi siano infinite normali comuni (assi $Z_{n}$ e $Z_{n-1}$ paralleli) si sceglierà il valore di $d$ più conveniente;
* $\theta$: l'angolo di rotazione intorno all'asse $Z_{n-1}$ necessario per allineare $X_{n-1}$ con $X_{n}$;
* $a$ (a volte indicato anche con $r$): distanza minima fra gli assi $Z_{n-1}$ e $Z_{n}$;
* $\alpha$: l'angolo di rotazione intorno alla normale comune (ovvero attorno a $X_{n}$) per allineare l'asse $Z_{n-1}$a $Z_{n}$.
Si può notare che l'asse $X_{n}$ è perpendicolare sia all'asse $Z_{n-1}$ che all'asse $Z_{n}$ e interseca entrambi.

## Trasformazione di coordinate

Ogni coppia braccio-giunto si può descrivere come un'operazione di trasformazione di coordinate fra i due sistemi di riferimento associati ai giunti. Se si sceglie di orientare l'asse $X_{n}$ lungo la normale comune fra gli assi $Z_{n-1}$ e $Z_{n}$, la matrice di trasformazione è definita come una serie di due rototraslazioni consecutive:
    $^{n-1}T_{n}=\operatorname {Trans} _{z_{n-1}}(d_{n})\cdot \operatorname {Rot} _{z_{n-1}}(\theta _{n})\cdot \operatorname {Trans} _{x_{n}}(r_{n})\cdot \operatorname {Rot} _{x_{n}}(\alpha _{n})$
dove:
    $\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}}$
    $\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}}$
    $\operatorname {Trans} _{x_{n}}(r_{n})={\begin{pmatrix}1&0&0&r_{n}\\0&1&0&0\\0&0&1&0\\0&0&0&1\\\end{pmatrix}}$
    $\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}}$
Da qui si ricava la matrice di trasformazione completa:
    $\operatorname ^{n-1}T_{n}={\begin{pmatrix}\cos \theta _{n}&-\sin \theta _{n}\cos \alpha _{n}&\sin \theta _{n}\sin \alpha _{n}&r_{n}\cos \theta _{n}\\\sin \theta _{n}&\cos \theta _{n}\cos \alpha _{n}&-\cos \theta _{n}\sin \alpha _{n}&r_{n}\sin \theta _{n}\\0&\sin \alpha _{n}&\cos \alpha _{n}&d_{n}\\0&0&0&1\\\end{pmatrix}}$