좌표체계에서 x와 z축 방향으로 y축 방향 결정하기
로봇 조립계획을 위하여 각 부품별로 지역 좌표 혹은 모델 좌표계(Local 혹은 Model Coordinate System)를 관리해야 한다. 예로 그림과 같이 원통형 부품을 설계할 때 상부 중심 좌표를 (10, 10, 20)으로 정했다면, 이를 조립할 다른 부품에 조립해야 하므로 (10, 10, 22)로 좌표 값이 변경된다. 조립품에서 부품의 조립품 상의 위치 정보를 placement라고 하며 조립품에서 위치는 원래 부품의 좌표계를 표시하는 지역 좌표계를 기준으로 전역 좌표계(World Coordinate System)로의 3차원 좌표변환(Coordinate Transformation)을 사용하여 표현한다.
Placement 정보는 원점 위치와 x, y, z 축의 방향(Direction)으로 표현한다. 그런데 ISO 표준 등에서 palcement 정보에 y 축 방향은 빠져있다. 이유는 x와 z 축 방향만 주어지면 y 축 방향을 구할 수 있기 때문이다.
point # 원점 위치
x diretion # x 축 방향
z direction # z 축 방향
x축과 z 축 방향이 주어졌을 때 어떻게 y 축 방향을 구할 수 있을까? 질문을 잘 만들지 못해서 그런지 웹 검색을 통해 답을 찾아내기 어려웠다. 그래서 직접 계산해 보기로 하였다.
우선 ISO STEP이나 OpenGL에서 사용하는 오른손 법칙을 사용하는 3차원 좌표 체계를 가정하였다. 즉 오른손 엄지가 +x 축 방향, 집게손가락이 +y 방향이면 가운데 손가락 방향이 +z 방향이다.
이 상태에서 x와 z 축 방향이 주어졌을때 두 방향에 수직인 y 축 방향은 z * x(z와 x 방향의 외적)을 통해 계산할 수 있었다. 외적은 다음과 같이 구할 수 있다.
a = (a1, a2, a3)
b = (b1, b2, b3)
a * b = (a2*b3-a3*b2, a3*b1-a1*b3, a1*b2-a2*b1)
확인을 위해 x=(1,0,0) z=(0,0,1) 경우와 x=(-1,0,0) z=(0,0,1)인 경우 y축 방향을 구해보았다.
case z=(0,0,1) x=(1,0,0)
z*x =(0*0-1*0, 1*1-0*0, 0*0-0*1) = (0,1,0)
case z=(0,0,1) x=(-1,0,0)
z*x =(0*0-1*0, 1*(-1)-0*0, 0*0-0*(-1))=(0,-1,0)
두 번째 경우(z=(0,0,1) x=(-1,0,0)) 결과를 오른손 법칙으로 확인하면 다음과 같다.
2023 EDBLab