동차변환행렬의 개념은 알겠다.(몰랐으면 아래글을 참고하자) 근데 문제는 '그래서 실제로 동차변환행렬을 어떻게 구하냐?'이다.
https://cybernogada.tistory.com/74
(Robotics) 동차변환행렬 (Homogeneous Transformation Matrix)
기준좌표계 A와 회전하는 링크 좌표계 B를 생각해보자. (원래 벡터표기할때 상단첨자를 왼쪽에 넣는다. 저 그림은 ppt에서 그린건데 도저히 ppt 수식에서 좌측 상첨자를 못찾아서 저렇게 쓴거임)
cybernogada.tistory.com
예를들어, 동차변환행렬은 3x3크기의 회전행렬을 포함한다. 회전행렬을 구할때 기준축과 좌표계가 있었으나... 6자유도 로봇에서 그런걸 구하기 쉬워보이진 않는다. 이때 동차변환행렬을 구하기 위해 사용하는 정형화된 방법이 DH표기법이다. DH는 Denavit-Hartenberg의 준말인데 이 방법을 발견한 사람(들)의 이름이다.
DH표기법은 복잡한 자유도의 로봇에서 동차변환행렬을 구하기 위해 사용되는 '메뉴얼'로, 두 좌표계간의 관계를 기술하는 방법이다. 3D 공간에서 두 좌표계의 관계를 기술할때 고려해야할 사항은? 바로 병진(translation)과 회전(Rotation)인데 3D공간이므로 병진은 x,y,z 3자유도, 회전도 roll, pitch,yaw 3자유도로 총 6개의 파라미터를 이용해 관계를 기술할수있다. 이때 DH표기법은 6개의 파라미터 중 2개의 구속조건을 부여하여 나머지 4개의 파라미터만으로 좌표계의 관계를 기술한다.
지금까지 정리해보면? → 실제 로봇 링크의 동차변환행렬을 구하기위해 링크별 좌표계간의 관계를 기술해야 하는데, 이때 사용하는 '규칙'이 DH표기법이다.

그림의 link와 joint의 번호를 잘 보자. link i는 joint i 기준으로 회전한다. (링크번호가 작을수록 base에 가깝다)
위에서 DH 표기법은 2개의 구속조건을 부여한다고 했는데 이 구속조건은 다음과같다.
1. x(i) 축은 z(i-1)축과 수직이다.
2. x(i) 축은 z(i-1)축과 교차한다.
자, DH표기법은 좌표계 설정규칙이다. 어떤 좌표계 i-1에 대해 좌표계 i는 어떻게 잡을까? 일단 두개의 구속조건을 보면 x(i)축을 설정할때는 이전 좌표계 i-1의 z축과 수직이며 교차하도록 한다 → 그림을 보며 이해해보자. x(i)축은 z(i)축과 수직/교차하며 (당연), z(i-1)축과도 수직/교차한다. 단순히 생각하면 '엇? 혹시 z(i)축과 z(i-1)축은 항상 평행한가?'라고 생각할 수 있으나 아니다. (아래와 같은 반례가 있다.)

구속조건의 의미는 'x(i)축은 z(i-1)축과 z(i)축의 공통법선으로 설정한다!'이다. 그리고 z축은 어차피 joint의 회전축이므로 두개의 z축은 이미 알고있는 정보이다. 거기에 구속조건으로 x축까지 설정하면 좌표계 i를 정의할 수 있다.
그럼끝인가? 그림을 보면 이상한게 있다. 왜 i의 원점은 떠있지? 2개의 구속조건으로 좌표계 방향을 설정했다면, 별도의 원점 결정 규칙으로 좌표계 원점을 설정해야한다. 좌표계 i의 원점 설정은 다음의 경우를 따른다.
Case 1) 공통법선과 관절 축 i+1의 교점에 설정한다
Case 2) 링크 좌표계 {i-1}의 원점인 O(i-1)을 통과하는 공통법선과 관절 축 i+1의 교점에 설정한다.
Case 3) 두 관절축이 교차하는 교점에 설정한다.
각 케이스는 공통법선에 의존한다. 공통법선의 존재성엔 다음 세가지 케이스가 있다.
Case 1) 두 관절축이 동일한 평면위에 있지않다면 공통법선은 유일하게 결정된다.
Case 2) 두 관절축이 서로 평행하면 공통법선은 무한개이다.
Case 3) 두 관절축이 교차하면 공통법선은 존재하지 않는다.
공통법선의 존재성을 고려하여 원점설정 규칙을 적용해 좌표계를 설정할수있다.
좌표계를 설정했으니 이제 다시 윗그림. 이제 4개의 DH 파라미터를 규명해야하는데 이들은 링크좌표계 i-1과 i 사이의 관계를 나타낸다. 각 파라미터는 그림에 빨간색으로 표시된것들이다.

a는 링크의 길이, d는 링크가 겹쳐있어 발생하는 offset을 의미한다. 회전관절에선 theta를 제외한 나머지 파라미터는 constant, theta만 variable로 다뤄진다.

무슨말인지 잘 안와닿을수있지만 예시와 함께 본다면 이해가 쏙쏙될수있다. 글이 너무 길어지니 이어서 정리함
'🔧 Mechanical Engineering > Robotics🐊' 카테고리의 다른 글
| (Robotics) 역기구학 (Inverse Kinematics) (0) | 2025.08.24 |
|---|---|
| (Robotics) 정기구학 (Forward Kinematics) - 연습 (0) | 2025.08.16 |
| (Robotics) 정기구학 (Forward Kinematics)-(1) (0) | 2025.08.11 |
| (Robotics) 동차변환행렬 (Homogeneous Transformation Matrix) (0) | 2025.08.08 |
| (Robotics) 회전행렬 (Rotation Matrix) (0) | 2025.08.06 |