본문 바로가기

MECHANICS

[ ROBOTICS ][ Spatial Description and Transformations ]공간의 표현과 변환

로봇공학의 시작은 공간의 표현과 변환에 대한 이해에서 시작합니다.

다음 사진을 볼 까요? 



그림에서 보이다시피 3자유도 manipulator가 있고, 작업대와 작업 목표가되는 물체가 있다고 봅시다.

우리가 하고싶은 것은 manipulator의 end effector부분을 잘 제어하여 작업을 수행하는 것입니다. 

하지만, 실제 제어할 수 있는 것은 각 축의 모터죠. 

각 모터의 각도가 얼마나 되어야 end effector가 원하는 지점에 도달할지 알아야하죠.

위치뿐만 아니라 end effector의 방위 또한 고려해야합니다. 

위치와 방위를 항상 고려하며 제어하기란 복잡한 일일겁니다.

그렇기 때문에 우리는 이러한 작업들을 일반화하여 프로그래밍을 통해 구현하는데요.

오늘은 바로 그 일반화된 해석에 대해 포스팅하려 합니다.


목차는 다음과 같습니다. 


1) 위치의 표현

2) 회전의 표현

3) position mapping

4) rotation mapping

5) general mapping






1) 위치의 표현

3차원 공간상의 물체는 몇 자유도를 가지고 있을까요?

정답은 6자유도입니다. 

위치를 표현하는 x, y, z, x축에 대한 회전, y축에 대한 회전, z축에 대한 회전. 이렇게 총 6자유도를 갖습니다.

각 축에 대한 회전은 roll, pitch, yaw 방향으로의 회전으로 생각하셔도 무방할 듯합니다.



이번 목차에선 회전이 제외된 것을 가정하고 위치에 대해서만 보도록 하겠습니다.

관측자의 좌표계 {A} frame이 있고, 그 좌표계 위에 점 P가 있다고 봅시다. 


점 P의 위치는 다음과 같이 표현 될 수 있습니다.






2) 회전의 표현

이번엔 위치의 이동이 없다고 가정하고, 회전만 있는 물체의 표현을 보겠습니다. 

회전의 표현을 위해서는 좌표계가 하나더 필요하게 되는데요.

일단, 관측자의 좌표계 {A} frame이 있고, 물체의 좌표계 {B}, 물체 위의 점 P가 있다고 봅시다.


복잡해 보이시나요?

이렇게 생각해보죠. 나 자신이 보고있는 시점이 좌표계 {A} 이고, 

내가 보고있는 필통의 무게중심이 좌표계 {B}의 원점이라고 해봅시다.

서로 원점이 겹친다는게 말이 안되지만, 저의 시점을 필통의 무게중심으로 이동시켰다고 해보죠.

그리고 점 P는 필통위의 특정 점입니다. 


이제 필통이 회전합니다. 이 회전을 어떻게 표현할 수 있을까요?

나의 좌표계 x축을 기준으로 30' 회전하였다. 또는 y축을 기준으로 60' 회전하였다. 라고 표현할 수 있겠죠?

말로는 쉽습니다만.... 이제 수식으로 일반화를 해야합니다.



이제 살짝 복잡해집니다. 우선 다음과 같이 정의하죠.

관측자 좌표계 {A}에 표현된    필통의 좌표계{B}의       x축을 다음과 같이 써보죠   

관측자 좌표계 {A}에 표현된    필통의 좌표계{B}의       y을 다음과 같이 써보죠   

관측자 좌표계 {A}에 표현된    필통의 좌표계{B}의       z을 다음과 같이 써보죠   


회전의 정도를 나타내는 방법은 다음과 같습니다.

회전의 대상이 되는 {B}계의 x,y,z 축의 방향을 {A}계에서 표현해보는 겁니다.


우선 {B}계의 x 축만을 예로 들면,

{B}계의 x 축을 {A} 계의 x축에 정사영

{B}계의 x 축을 {A} 계의 y축에 정사영

{B}계의 x 축을 {A} 계의 z축에 정사영


즉, 다시 표현하면, 



여러분 점곱이 정사영을 의미한다는건 아시죠?

이제 나머지 y,z 축도 나타내보죠 



이제 이 모든걸 합쳐서 나타내주면 회전에 대해 표현하게 되는 건데요

나타내보면 다음과 같습니다. 



여기서 

이란 {A}계를 기준으로 {B}계가 회전한 양을 나타낸 행렬을 뜻합니다. 회전행렬이라고 불리웁니다.


저렇게만 써놓으면 이해가 안갈듯 하여 

예를 보여드릴게요


{A}계의 x축을 기준으로 {B}계가 만큼 회전했다고 해보죠. 

둘은 처음에 완전히 일치해있었습니다. 그 상황에서 x축을 회전축으로 만큼 회전했으니 그림은 다음과 같이 되겠죠



그럼  는 다음과 같이 계산이 됩니다.






이번엔 {A}계의 y축을 기준으로 {B}계가 회전했다고 해보죠. 






마지막으로 {A}계의 z축을 기준으로 {B}계가  회전했다고 해보죠. 





추가적으로 이 회전행렬이 갖는 특징을 알려드리면 다음과 같습니다.





3) position mapping

mapping이라는 것이 무엇일까요?

{B}계에 표현되어 있는 점P를 {A}계에 표현하고자 할때, 이것을 A계로 mapping 해준다고 하는데요.

다음 그림을 보시죠


운동학 포스팅에서 자주 보던 그림 아닌가요?

이제 B계가 회전이 없다고 가정하고 A계에서 점 P를 나타내볼까요? 

참고로 는 A계에서 나타낸 B계의 원점 좌표입니다.







4) rotation mapping


점 P를 {A}계에 표현하는 방법은 위에서 길게 얘기했던 회전행렬을 이용하는 방법입니다.



위의 계산을 이해하기 쉽게 팁을 하나 알려드리자면, 



빨갛게 표시한 부분이 같은 계를 표현하고 있다면,

 서로 상쇄되고 A만 남게 된다고 기억하시면 됩니다.






5) general mapping

이제 Translation과 Rotation이 모두 일어났을 때의 mapping을 보겠습니다. 



위와 같은 경우의 점P를 A계에서 표현하는 방법은 다음과 같습니다.



이제 마지막으로 이 모든 정보를 하나의 행렬로 표현하는 방법을 소개해 드릴텐데요 

위 식을 다음과 같이 다시 쓸 수 있습니다. 




저 중간에 있는 4X4 행렬을 homogeneous transform이라고 합니다. 

위와 같은경우 

라고 쓸 수 있습니다.



이상 포스팅을 마치겠습니다~!