Denavit-Hartenberg (DH) Parameter
Summary of Denavit-Hartenberg (DH) Parameter
Denavit-Hartenberg Convention and Homogene Transformation
DH Convention
로봇의 두 Körper 사이의 상대적인 위치와 방향을 4개의 파라미터로 정의하는 방법이다.
DH Parameter
| Parameter | Description |
|---|---|
| \(a_{i-1}\) | \(x_{i-1}\) 축을 따라 측정한 \(z_{i-1}\) 축과 \(z_i\) 축 사이의 거리 |
| \(\alpha_{i-1}\) | \(x_{i-1}\) 축을 따라 측정한 \(z_{i-1}\) 축과 \(z_i\) 축 사이의 회전각 |
| \(d_{i-1}\) | \(z_{i}\) 축을 따라 측정한 \(x_{i-1}\) 축과 \(x_i\) 축 사이의 거리 |
| \(\theta_{i-1}\) | \(z_{i}\) 축을 따라 측정한 \(x_{i-1}\) 축과 \(x_i\) 축 사이의 회전각 |
KOS Setting rules
- Körper / Achse 에 번호
- Körper는 \(1\) 부터 \(N\) 까지,
- Achse는 \(1\) 부터 \(N\) 까지,
- Körper 0은 Basis 이다.
- \(z_{i-1}\) Achse 세팅
- Bewegungsachse \(i-1\) 과 동일하게 설정한다.
- Ursprung \(B_{i-1}\) 설정
- Achse \(i-1\)과 \(z_{i-1}, z_i\) 의 공통 수선이 만나는 지점.
- 축들이 교차하는 경우엔 교차점을 Ursprung 으로 설정한다.
- \(x_{i-1}\) Achse 세팅
- \(z_{i-1}\) 에서 \(z_i\) 로 향하는 공통 수선을 따라 설정한다.
- 축들이 평행할경우 - 임의로 선택 가능하지만, 주로 파라미터가 0 이 되도록 세팅.
- 축들이 교차할 경우 \(z_{i-1}\)와 \(z_i\) 가 이루는 평면에 수직이 되도록 세팅
- \(y_{i-1}\) Achse 설정
- 오른손 법칙에 따라 결정 (\(x_{i-1} \times z_{i-1}\))
- 특수한 경우,
- \(B_0\) : 종종 \(q_1 = 0$ 일때는,\)B_1$$과 동일하게 세팅한다.
- \(B_N\) (Endeffektor) : 가능한 많은 dh-parameter 가 0이 되도록 선택한다.
Homogene Transformation (동차 변환, \(D\))
Drehmatrix 와 Ortsvektor 를 하나의 \(4 \times 4\) matrix 로 통합해서 좌표계 간의 변환ㅇ르 간결하게 표현.
- 구조:
여기서
- \(_j A_i \in \mathbb{R}^{3 \times 3}\) : Rotation matrix이고, 시스템의 i의 벡터를 시스템의 j 벡터로 변환한다.
- \(_j r_{ji} \in \mathbb{R}^3\) : Ortsvektor (Translation), 시스템 j 에서 시스템 i 의 ursprung 위치를 나타낸다.
이것을 사용해서
\[_{j} r_{jP} = _{j} r_{ji} + _{j} A_{i} \ {}_{i} r_{iP}\]로 나타낼 수 있는데 이게
\[\begin{bmatrix} _{j} r_{jP} \\ \mathbf{1} \end{bmatrix} = \begin{bmatrix} _{j} A_i & _{j} r_{ji} \\ \mathbf{0} & \mathbf{1} \end{bmatrix} \begin{bmatrix} _{i} r_{iP} \\ \mathbf{1} \end{bmatrix}\]이것을 사용해서 DH transformation 을 만들 수 있다.
DH Transformation \({}^{i-1} D_i\)
방법
1. Rotation \(-\theta_i\) um \(z_i\)
\[D_1 = \begin{bmatrix} A_z (-\theta_i) & \mathbf{0} \\ \mathbf{0} & \mathbf{1} \end{bmatrix}\]2.Translation \(-d_i\) entlang \(z_i\)
\[D_2 = \begin{bmatrix} \mathbf{E} & e_z d_i \\ \mathbf{0} & \mathbf{1} \end{bmatrix}\]3.Translation \(-a_{i-1}\) entlang \(x_{i-1}\)
\[D_3 = \begin{bmatrix} \mathbf{E} & e_x a_{i-1} \\ \mathbf{0} & \mathbf{1} \end{bmatrix}\]4. Rotation \(-\alpha_{i-1}\) um \(x_{i-1}\)
\[D_4 = \begin{bmatrix} A_x (-\alpha_{i-1}) & \mathbf{0} \\ \mathbf{0} & \mathbf{1} \end{bmatrix}\]Somit ergibt sich die resultierend homogene Transformation zu:
Example
예시를 통해 알아보자.
이렇게 파라미터가 있다고 가정한다.
여기서 마지막 몸체에서 inertial system 으로의 변환은
\[{}_0 \mathbf{D}_3 = {}_0 \mathbf{D}_1 {}_1 \mathbf{D}_2 {}_2 \mathbf{D}_3\]와 같다.
이걸 계산을 따따따 하면
\[{}_0 \mathbf{D}_1 = \begin{bmatrix}\mathbf{E} \mathbf{A}^T_z (q_1) & \mathbf{0} \\ \mathbf{0} & \mathbf{1} \end{bmatrix} = \begin{bmatrix} c q_1 & -s q_1 & 0 & 0 \\ s q_1 & c q_1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\]마찬가지로 계산을 쭉쭉 하다보면
\[{}_1 \mathbf{D}_2 = \begin{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & -1 & 0 \end{bmatrix} \begin{bmatrix} c q_2 & -s q_2 & 0 \\ s q_2 & c q_2 & 0 \\ 0 & 0 & 1 \end{bmatrix} & \mathbf{0} \\ \mathbf{0} & \mathbf{1} \end{bmatrix} = \begin{bmatrix} c q_2 & -s q_2 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -s q_2 & -c q_2 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\]그리고
\[{}_1 \mathbf{D}_2 = \begin{bmatrix} c q_3 & -s q_3 & 0 & l \\ s q_3 & c q_3 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\]이렇게 쭉쭉 계산이 가능하다. 참고로 \({}_1 \mathbf{D}_3\)는 \({}_1 \mathbf{D}_2 {}_2 \mathbf{D}_3\) 로 계산 가능하다.
\[{}_1 \mathbf{D}_3 = \begin{bmatrix} c q_2 c q_3 - s q_2 s q_3 & - c q_2 s q_3 - s q_2 c q_3 & 0 & c q_2 l \\ 0 & 0 & 1 & 0 \\ -cq_2 s q_3 - s q_2 c q_3 & - c q_2 c q_3 - s q_2 c q_3 & 0 & -s q_2 l \\ 0 & 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} c q_{23} & -s q_{23} & 0 & c q_2 l \\ 0 & 0 & 1 & 0 \\ -s q_{23} & -c q_{23} & 0 & -s q_2 l \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]마찬가지로 3 to 0 은
\[{}_0 \mathbf{D}_3 = {}_0 \mathbf{D}_1 {}_1 \mathbf{D}_3 = \begin{bmatrix} c q_1 c q_{23} & - c q_1 s q_{23} & -s q_1 & c q_1 c q_2 l \\ s q_1 c q_{23} & - s q_1 s q_{23} & c q_1 & w q_1 c q_2 l \\ -s q_{23} & -c q_{23} & 0 & -s q_2 l \\ 0 & 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} {}_0 A_3 & {}_0 r_{03} \\ 0 & 1 \end{bmatrix}\]Direct Kinematic
여러개의 Gelenk 를 가진 로봇의 경우, 각 관절의 변환행렬은 순차적으로 곱해서 Basis에 대한 Tool-Center-Point (TCP, Endeffektor) 의 위치를 구한다.



