뱡향 코사인 행렬(DCM:Direction Cosine Matrix)라고 불리는 이 행렬은 3-by-3로 총 9개의 성분으로 기준 좌표계에서 다른 좌표계사이의 회전 관계를 정의할 때 사용하고 도형 또는 어떠한 물체의 회전을 표현할 때 사용한다(더 다양한 분야에도 쓰일 수 있다).
Fig 1. Frame A and Frame B
위와 같은 관계를 가진 좌표계가 있다고 하자 두사이의 회전 관계를 정의하기위한 DCM은 다음과 같이 표현한다.
$$\begin{bmatrix}\hat{b}_1 \\ \hat{b}_2 \\ \hat{b}_3\end{bmatrix}=C^A_B\begin{bmatrix}\hat{a}_1 \\ \hat{a}_2 \\ \hat{a}_3\end{bmatrix}$$
여기서 $C^A_B$는 좌표계 A에서 좌표계 B로 변환하는 DCM이라고 명명하며 다음과 같다.
$$C^A_B=\begin{bmatrix}c_{11} & c_{12} & c_{13} \\c_{21} & c_{22} & c_{23}\\c_{31} & c_{32} & c_{33}\end{bmatrix}$$
$$\hat{a}_{i} \quad is \quad each \quad 3-by-1 \quad matrix,\quad i=1,2,3$$
$$\hat{b}_{j} \quad is \quad each \quad 3-by-1 \quad matrix,\quad j=1,2,3$$
또한 DCM의 각 요소는 다음과 같이 각 좌표계의 basis의 내적으로서 정의된다.
$$\begin{cases}c_{11} = \hat{a}_1\cdot\hat{b}_1 \\c_{12} = \hat{a}_1\cdot\hat{b}_2\\c_{13} = \hat{a}_1\cdot\hat{b}_3\\c_{21} = \hat{a}_2\cdot\hat{b}_1\\c_{22} = \hat{a}_2\cdot\hat{b}_2\\c_{23} = \hat{a}_2\cdot\hat{b}_3\\c_{31} = \hat{a}_3\cdot\hat{b}_1\\c_{32} = \hat{a}_3\cdot\hat{b}_2\\c_{33} = \hat{a}_3\cdot\hat{b}_3\end{cases}$$
이를 요약하여 내적관계로 표현하면 다음과같다.
$$\hat{a}_i\cdot\hat{b}_j = ||a_i||_2||b_j||_2cos\alpha$$
내적 연산 정의에 따라 $\alpha$는 두 축 간의 사이 각도를 의미한다. 단적인 예를 들기위해 서로 마주보는 좌표계를 정의해서 설명한다.
Fig 2. Frame Example 1
각 Frame의 1번째 단위 기저 벡터를 내적을통해 계산면 다음과 같다.
$$\hat{a}_1\cdot\hat{b}_1=||\hat{a}_1||_2||\hat{b}_1||_2cos(\pi)=-1$$
그러면 같은 방식으로 Frame A의 첫번째 기저 벡터 그리고 Frame B의 2번째 기저벡터를 내적을 통해 계산하면 다음과 같다.
$$\hat{a}_1\cdot\hat{b}_2=||\hat{a}_1||_2||\hat{b}_1||_2cos(\pi/2)=0$$
이러한 방식으로 $C^A_B$의 요소를 모두 계산하면 다음과 같다.
$$C^A_B = \begin{bmatrix}-1 & 0 & 0 \\0 & 0 & 1 \\0 &1 &0 \end{bmatrix}$$
그러면 서로 마주보고있는 좌표계가 아니라 살짝 틀어져서 보고있는 예를 들어본다.
Fig 3. Frame Example 2
$\hat{a}_1$과 $\hat{b}_1$는 서로 직교하므로 내적이 0임을 바로 알 수 있다. 그리고 $\hat{a}_2$는 $\hat{a}_1$을 기준으로 30도 차이가 있다. 이를 가지고 DCM을 계산하면 다음과 같다.
$$C^A_B = \begin{bmatrix}0 & \sqrt{3}/2 & -1/2 \\0 & 1/2 & \sqrt{3}/2 \\1 &0 &0 \end{bmatrix}$$
그럼 $C^A_B$는 Frame A에서 Frame B사이의 관계를 표현한 DCM임을 알고 있다. 반대로 Frame B에서 Frame A의 관계는 $C^B_A$이다. 이는 다음과 같이 역행렬로 구해지는대 DCM의 특성에 따라 Transpose(전치)로 정의할 수 있다.
$$C^B_A = {C^A_B}^{-1}$$
$${C^A_B}^{-1} = {C^A_B}^{T}$$
직관적으로 이해를 해보면 DCM의 각 성분들은 두 좌표계 사이의 basis의 내적임을 알 때 $C^A_B$의 경우 Frame A의 기저 벡터들을 Frame A 기준으로 표현된 Frame B의 부합되는 기저들로 정사영 한다는 것이다. 이런 관점에서 $C^B_A$은 반대로 Frame B 기준으로 표현된 Frame A 기저 벡터들로 정사영 한다고 생각하면 좀 쉽게 이해될까 적어본다.
그러면 간단한 예시를 하나 더 들어본다.
Frame B는 기준 좌표계 Frame A에 대해 $\hat{a}_1$에 대해 45도 회전한 형태라고 가정한다. 그리고 Frame A에서 다음과 같은 벡터가 존재한다.
$$\vec{u^A}=[0\; 0.7071\; 0.7071]^T$$
Fig 4. Frame Example 3
위의 그림에 포함된 정보를 통해 다음과같이 Frame A에서 Frame B에 대한 DCM을 다음과 같이 구할 수 있다.
$$C^A_B=\begin{bmatrix}1 & 0 & 0 \\ 0 & 0.7071 &0.7071 \\ 0 & -0.7071 & 0.7071 \\ \end{bmatrix}$$
그렇다면 주워진 벡터 $u$는 Frame B에서 어떻게 표현될지 궁금한 것이다. 다음과 같이 계산하면 된다.
$$\vec{u}^B =C^A_B \vec{u}^A $$
여기서 주어진 벡터를 $\vec{u}^A$로 표현했는데 이는 Frame A서 표현된 벡터라는 의미이다. 마찬가지로 $vec{u}^B$는 Frame B에서 표현한 벡터 $u$ 이다. 결과적으로 Frame A에서 Frame B로의 DCM을 곱 연산을 통해 쉽게 구할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | clear all; close all; clc; deg2rad = pi/180; u_a = [0 0.7071 0.7071]'; dcm_A_B = angle2dcm(45*deg2rad,0,0,'xyx'); u_b = dcm_A_B * u_a; %%%%%%% Result %%%%%%%%% % u_b = % % 0 % 1.0000 % 0.0000 | cs |
이렇게 DCM에 간단한 사용 방법과 일부 특성을 확인해보았다.
이 글을 통해 어떤 기준 좌표계를 기준으로 얼마나 회전되어있는 다른 좌표계를 알 때 주어진 벡터를 기준 좌표계, 상대 좌표계로 어떻게 변환되는지 알 수 있을 것이다.
Comments
Post a Comment