티스토리 뷰
좌표축 간의 관계를 표현하고,
표현법에 의해서 원하는 Homogeneous Transformation을 어떻게 생성하는지를 자동화하는 기법
가정
1. 해석하고 싶은 매니퓰레이터(예시 : 로봇)가 있다면,
이러한 매니퓰레이너는 n+1 link로 구성이 된다.
고정되어 있는 바닥이 하나의 링크라고 표현해서, n+1개의 링크로 표현
2 . joint가 n개가 있다.
3. 각각의 링크에는 좌표계가 하나씩 붙어 있다.(어떤 점이라도 상관 없음)
축 정하는 방법
기본적인 D-H 파라미터를 잡기 위해서 가장 기본적으로 z축을 잡아야 한다.
z축을 잡는 가장 기본적인 방법은 joint의 i+1번째에 위치시키는 걸 원칙으로 한다.
즉, i 번째의 joint에 i 번째 프레임(링크)을 잡는 게 아니라,
i+1번째의 joint에 i번째 프레임(링크)을 잡는다.
첫 번째 joint가 있다면, 0번째 프레임(바닥)이 붙게 된다.
두 번째 joint가 있다면, 1번째 프레임(첫번째 링크)가 붙게 된다.
이렇게 i 번째 프레임에다가 z1축을 잡았다고 했을 때, 그 다음으로 필요한 건 z축과 관계되는 x,y 축을 잡아주는 것
이 x,y 축을 결정하기 위해서 필요한 건 이전의 축이다.
i-1번째 축에서 i축을 연결했을 때, 공통으로 수직되게 연결 될 수 있는 하나의 선(커먼 노멀) 방향
이 커먼 노멀 방향을 x축으로 설정한다.
쉽게 설명하면, Zi-1과 Zi를 같은 평면에 두고, 둘의 수직 방향으로 나가는 곳(커먼 노멀) 방향으로 x축을 잡는다.
이렇게 2개의 축이 결정되면, 나머지 y축은 오른손 법칙에 따라서 자동으로 결정(x축에서 z축으로 오른손 법칙을 쓰면 그 방향이 y의 +)
조인트에 따른 z축
Rotational/translational
revolute joint는 회전축에 대해서 잡아준다.
translational 하는 경우(prismatic)에는 이동하는 방향에 대해서 z축을 잡아준다.
x축을 결정하기 위해서는 z-1 번째 축이 존재해야 한다.
그렇지만 우리는 0번째 프레임부터 시작하기 때문에 z-1 번째 축이 존재하지 않는다.
그렇기 떄문에 x축을 결정할 수 없게 된다.
하지만 0번째 프레임은 기준좌표계이므로 편하게 x축을 결정
비슷하게 마지막 축에서는 Zn축 같은 경우에는 joint가 존재하지 않는다.
링크의 끝점은 조인트가 존재하지 않기 때문에 z축을 결정할 수 없다.
일반적으로는 두 가지 방법을 쓴다.
1. 바로 이전 축의 Z축, Zn-1번째와 같은 축을 잡아준다.
2. end-effector에서, 밖으로 향하는 방향(목표하는 물체를 가리키는 방향)으로 잡아주는 경우
입맛대로 결정
만약에 Prismatic joint라고 하면 z축은 위쪽 아니면 아래쪽인데,
벡터의 방향은 보통 prismatic joint가 늘어나는 방향으로 설정한다.
만약에 zi-1과 zi축이 수평으로 연결되어 있을 경우에는, x축이 무수히 많다.
보통은 원점을 기준으로 해서, xi-1과 xi축이 교차할 수 있도록 보통은 설계한다.
마지막 케이스 - zi-1번째 축과 zi 축이 평행하면서도 아예 같은 방향으로 일치
평면 전체가 x축이 되기 때문에, 임의로 x축의 방향이 설정된다.
이때는 zi-1과 zi축 거리도 일정 부분 필요한데, 그 거리도 임의로 원점을 잡아줌으로서 임의로 잡을 수 있게 된다.
D-H 파라미터 정의
세타 : angle between Xi-1 and Xi, Zi-1이 기준.
(얼마만큼 각도가 로테이션되어 있느냐. zi-1축을 기준으로 회전했다고 볼 수 있다.)
di : distance between two common normal(Xi-1. Zi-1이 기준
Zi-1 방향으로의 i-1 프레임의 원점 벡터와, Xi축을 늘려서 Zi-1이랑 만나게 되는 지점까지의 거리
ai : distance between Zi-1 and Zi. Xi가 기준
Xi축 방향으로 얼마나 떨어져 있는지에 대한 거리
alpha i: angle between Zi-1 and Zi. Xi가 기준
Xi를 기준으로 했을 때, Zi-1과 Zi가 얼마나 틀어져 있는지에 대한 기준
Tranformation과 Rotation
각 링크를 거꾸로 가면서 곱해준다.
Translation을 해주고, Rot을 해도 되고, Rot을 한 뒤에 Trans를 해도 된다.
이렇게 4개의 호모지니어스 트랜스포메이션을 활용해서 전부다 연산을 취하면, D-H matrix(Ai)를 얻는다.
이걸 위에서 구한 세타, alpha, d, a를 넣어서 계산을 한다.
이걸 D-H transformationd이라고 한다.
3*3은 rotation 의미하고, 마지막 3*1은 translation을 의미한다.
revolute joint의 경우, 세타는 변수
나머지 d,a,alpha는 변하지 않는다.(한 번 로봇이 만들어지면 constant)
prismatic joint의 경우, d가 변수
나머지 세타,a, alpha가 변하지 않는다.
Workspace
가각의 조인트값들을 전부다 이용해서 만들어낼 수 있는 공간
Forward kenematics를 이용해서 구성한다.