본문 바로가기

MECHANICS

[ROBOTICS][Transformation] 좌표계의 변환

안녕하세요 ^^

이번에 소개해드릴 내용은 저번 ROBOTICS 관련 첫 포스팅인 '공간의 표현'과 이어지는 내용입니다.

저번 포스팅은 Description과 mapping에 집중되어있었다면, 이번 포스팅은 그 내용을 기반으로 실질적인 연산방법에 대해 논합니다.

그렇다면 바로 좌표계 변환에 대해서 포스팅 시작하도록 하겠습니다~~^^




1) 좌표계 변환


저번 포스팅의 마지막 부분에서 Homogeneous transform에 대해 소개해드렸었죠?

바로 이렇게 생긴 친구입니다 =>  

B 좌표계에 표현된 궤적이나 점을 A 좌표계로 이동시켜주는 Transformation matrix 이지요.

다음 그림을 보면서 사용방법을 익히도록 하겠습니다.

위와 같이 여러개의 좌표계가 있고, 우리는 D좌표계를 U좌표계로 변환해주는 Transformation Matrix를 구하고자합니다.

즉, 최종적으로 를 구하는 것이겠죠.

를 구하는 방법은 위 그림의 화살표를 따라 연산해주면 간단하게 해결됩니다. 



한가지 팁을 알려드리자면,


빨갛게 표시한 부분이 서로 동일한 좌표계를 나타내고 있을때, 상쇄되고 의 모양이 완성된다고 생각하시면 됩니다.

또, U좌표계는 다른 화살표 방향으로도 D에 다다를 수 있으니 를 다른 방법으로도 쓸 수 있겠군요 






자, 그럼 이번엔 화살표의 방향이 반대로 되어있을때를 예로 들겠습니다.

그림이 살짝 바꼈는데... 혹시 보이시나요?

A에서 D를 가리키던 화살표가 반대로 뒤집혔고, C에서 D를 가리키던 화살표가 반대로 뒤집혔습니다.

이런 경우에 는 어떻게 나타낼 수 있을까요?

정답부터 알려드리면, 다음과 같습니다.



화살표의 방향이 반대로 바뀌었기 때문에, 화살표가 의미하는 것은 A좌표계를 D좌표계로 mapping한다는 것입니다. 따라서 를 의미하죠.

하지만 이 매트릭스의 역행렬 의 의미는 그 반대가 됩니다. D좌표계를 A좌표계로 mapping한다는 것입니다.

조금 헷갈리시나요?

다시 정리해서 쓰자면, 이렇게 쓸 수 있겠네요.



즉, Homogeneous Transform의 역행렬은 그 반대 방향으로 매핑을 시키겠다는 의미를 갖는답니다!!






2) 회전 및 방위에 대한 표현


저번 ROBOTICS 포스팅에서 회전행렬에 대한 소개를 드렸었습니다.

이번엔 그 회전이 연쇄적으로 일어났을때 수식적으로 표현하는지에 대해 배워보도록 하겠습니다.


연쇄적으로 일어나는 회전을 나타내는 방법은 크게 두가지가 있습니다.

(1) Fixed angles rotation

(2) Euler angles rotation

각각의 방법에 대해 설명하도록 하겠습니다. 



(1) Fixed angles rotation

Fixed angles rotation란, 고정된 좌표계를 기준으로 회전하겠다는 말입니다. 

그림을 보며 설명하도록 하겠습니다.



위의 그림을 말로 설명하자면 다음과 같습니다.


B 좌표계 회전시키려고 하는데 다음과 같이 회전시킬거야

 X축을 기준으로 만큼 회전 후, Y축을 기준으로 만큼 회전 후, Z축을 기준으로 회전.

그리고 그 회전의 기준은 A좌표계의 각 축들로 할꺼야.


즉, 처음 말씀드렸듯이 회전의 기준 축들은 절대적으로 고정되어있습니다.

이러한 방법을 따라 최종 회전행렬을 구하는 방식은 다음과 같습니다.


우변을 주의깊게 보시면, 순서가 뒤집혔다는 것을 보실 수 있습니다. 

분명 X축을 기준으로 만큼 회전하는걸 제일 먼저했는데, 제일 뒤에 있죠?


즉, 제일 먼저 실행한 회전의 회전행렬을 제일 오른쪽에 써주고, 차례차례 앞에 곱해주는 형식입니다.

이와같은 방법을 Pre-multiplication이라고 합니다.


간단한 예를 들어 

고정축 회전 방법으로,

X축을 기준으로 45` 만큼 회전 후, 

Y축을 기준으로 90` 만큼 회전 후,

 Z축을 기준으로 30` 회전한다고 하면, 

다음과 같이 쓸 수있죠





(2) Euler angles rotation

이번에 설명할 Euler angles rotation은  Fixed angles rotation와 다르게

회전의 기준이 되는 축이 별도로 있는것이 아니라, 회전의 주체가 되는 좌표계의 축이 기준이 되는 것입니다.

즉, 자기 자신의 축들이 회전의 축이 된다는 말이죠!

다음 그림을 보시죠.


그림이 다소 난해하죠..?

자세히 보시면, 매 회전마다 새롭게 명명된 좌표축들이, 다음 회전의 축이 되는 것을 보실 수 있습니다.


위의 그림을 말로 설명하자면 다음과 같습니다.


어떤 좌표계를 회전시키려고 하는데 다음과 같이 회전시킬거야

 Z축을 기준으로 만큼 회전 후, 새롭게 생긴 Y축을 기준으로 만큼 회전 후, 또 새롭게 생긴 X축을 기준으로 회전.


즉, 처음 말씀드렸듯이 회전의 기준 축들은 매번 회전후 새롭게 형성됩니다.

이러한 방법을 따라 최종 회전행렬을 구하는 방식은 다음과 같습니다.



Fixed angles rotation 때와는 다르게 순서대로 곱해진다는 것을 눈치채셨을 겁니다!!

훨씬 편하죠?? 

이와같은 방법을 Post-multiplication이라고 합니다.


간단한 예를 들어 

오일러 회전 방식으로 

X축을 기준으로 45` 만큼 회전 후,

 Y축을 기준으로 90` 만큼 회전 후, 

Z축을 기준으로 30` 회전한다고 하면, 

다음과 같이 쓸 수있죠




오늘 준비한 포스팅은 여기까지입니다.

위의 내용들을 잘 익혀 두어야 기본적인 로봇 오퍼레이팅이 수월해집니다! 

많은 도움이 되었으면 좋겠습니다~!!