DCM은 Direction Cosine Matrix의 약자다. 방향코사인행렬 또는 회전행렬(rotation matrix)이라고 한다. 기호로는 \(C_b^a\) 라고 쓰고 위 첨자와 아래 첨자에 각각 좌표계를 표시한다. 그리고 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 DCM이라고 읽는다.
DCM은 \(3 \times 3\) 행렬이다. 그러면 9개의 행렬 성분(element)이 있는데, 각각은 다음과 같이 정의한다.
\[ C_b^a = \begin{bmatrix} \hat{a}_1 \cdot \hat{b}_1 & \hat{a}_1 \cdot \hat{b}_2 & \hat{a}_1 \cdot \hat{b}_3 \\ \hat{a}_2 \cdot \hat{b}_1 & \hat{a}_2 \cdot \hat{b}_2 & \hat{a}_2 \cdot \hat{b}_3 \\ \hat{a}_3 \cdot \hat{b}_1 & \hat{a}_3 \cdot \hat{b}_2 & \hat{a}_3 \cdot \hat{b}_3 \end{bmatrix} \]
정의에 의하면 DCM 행렬의 \(i\)번째 행과 \(j\)번째 열은 좌표계 \(\{a\}\)의 \(\hat{a}_i\)축과 좌표계 \(\{b\}\)의 \(\hat{b}_j\)축과의 내적이다. 두 축의 내적은
\[ \hat{a}_i \cdot \hat{b}_j = \cos \alpha \]
으로 주어지고 \(\alpha\)는 두 축사이의 사잇각이므로 '방향코사인' 이라는 이름이 붙었다.
좌표계 \(\{b\}\)에서 좌표계 \(\{a\}\)로의 DCM은 행렬 \(C\)의 위 첨자와 아래 첨자를 반대로 써서 \(C_a^b\)로 표현할 수 있다. \(C_b^a\)와 \(C_a^b\)는 서로 역변환 관계다.
DCM의 정의에 의해서 다음 3가지 성질이 파생된다.
먼저, 벡터 \(\vec{u}\)를 좌표계 \(\{a\}\)로 표현한 벡터 \(\mathbf{u}^a\)와 좌표계 \(\{b\}\)로 표현한 \(\mathbf{u}^b\)는 다음 관계가 있다.
\[ \mathbf{u}^a=C_b^a \mathbf{u}^b \]
위 식에 의하면 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 DCM \(C_b^a\)는 좌표계 \(\{b\}\)에서 표현한 벡터 \(\mathbf{u}^b\)를 좌표계 \(\{a\}\)에서 표현한 벡터 \(\mathbf{u}^a\)로 변환해 준다.
예제를 통해서 DCM을 계산해보고 좌표변환 관계식이 맞는지 확인해 보자.
다음과 같이 두 좌표계 \(\{a\}\)와 \(\{b\}\)가 있을 때 DCM 을 구하고, 길이가 2인 벡터 \(\vec{u}\)를 두 좌표계로 표현해 보자. \(\hat{a}_3\)와 \(\hat{b}_1\)은 화면에서 나오는 방향이다.
우선 \(\hat{a}_1\)과 \(\hat{b}_1\)은 직각이므로 사잇각이 90도이다. 따라서
\[ \hat{a}_1 \cdot \hat{b}_1 = \cos 90^o = 0 \]
이다. \(\hat{a}_1\)과 \(\hat{b}_2\)는 사잇각이 30도이다. 따라서
\[ \hat{a}_1 \cdot \hat{b}_2 = \cos 30^o = \frac{\sqrt{3}}{2} \]
이다. 이런 식으로 다 계산해 보면,
\[ C_b^a = \begin{bmatrix} 0 & \sqrt{3}/2 & -1/2 \\ 0 & 1/2 & \sqrt{3}/2 \\ 1 & 0 & 0 \end{bmatrix} \]
이 된다. 이제, 벡터 \(\vec{u}\)를 좌표계 \(\{a\}\)의 각 축으로 표현하면 다음과 같다.
\[ \mathbf{u}^a = \begin{bmatrix} 2 \cos 30^o \\ 2 \sin 30^o \\ 0 \end{bmatrix} = \begin{bmatrix} \sqrt{3} \\ 1 \\ 0 \end{bmatrix} \]
좌표계 \(\{b\}\)의 경우는 다행히 벡터 \(\vec{u}\)가 \(\hat{b}_2\) 방향과 일치하므로,
\[ \mathbf{u}^a = \begin{bmatrix} 2 \cos 30^o \\ 2 \sin 30^o \\ 0 \end{bmatrix} = \begin{bmatrix} \sqrt{3} \\ 1 \\ 0 \end{bmatrix} \]
이다. DCM \(C_b^a\)와 \(\mathbf{u}^b\)를 이용하여 \(\mathbf{u}^a\)를 계산하면 다음과 같다.
\[ \begin{align} \mathbf{u}^a &= C^a_b \mathbf{u}^b \\ \\ &= \begin{bmatrix} 0 & \sqrt{3}/2 & -1/2 \\ 0 & 1/2 & \sqrt{3}/2 \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 2 \\ 0 \end{bmatrix} \\ \\ &= \begin{bmatrix} \sqrt{3} \\ 1 \\ 0 \end{bmatrix} \end{align} \]
그런데 만약 \(\mathbf{u}^a\)를 이용하여 \(\mathbf{u}^b\)를 계산하려면 어떻게 해야할까. 다음과 같이 역행렬(inverse matrix)을 이용하면 될 것 같다.
\[ \mathbf{u}^b= \left( C_b^a \right)^{-1} \mathbf{u}^a \]
그런데 보통 \(3 \times 3\)행렬(행과 열이 각각 3개인 행렬)의 역행렬은 구하기가 어렵다.
이것을 해결해 줄 DCM의 두번째 성질이 있다. DCM \(C_b^a\)의 역행렬은 전치(transpose) 행렬과같다는 것이다. 즉
\[ \left( C_b^a \right)^{-1} = \left( C_b^a \right)^T \]
전치 행렬은 행렬의 행과 열을 서로 뒤바꾸는 놓은 것이기 때문에 계산이 매우 쉽다. 그러면 \(\mathbf{u}^a\)를 이용하여 \(\mathbf{u}^b\)를 계산해 보자.
\[ \begin{align} \mathbf{u}^b &= \left( C_b^a \right)^{-1} \mathbf{u}^a = \left( C_b^a \right)^T \mathbf{u}^a \\ \\ &= \begin{bmatrix} 0 & 0 & 1 \\ \sqrt{3}/2 & 1/2 & 0 \\ -1/2 & \sqrt{3}/2 & 0 \end{bmatrix} \begin{bmatrix} \sqrt{3} \\ 1 \\ 0 \end{bmatrix} \\ \\ &= \begin{bmatrix} 0 \\ 2 \\ 0 \end{bmatrix} \end{align} \]
이제 DCM \(C_b^a\)로 좌표계 \(\{a\}\)에서 표현한 벡터 \(\mathbf{u}^a\)를 좌표계 \(\{b\}\)에서 표현한 벡터 \(\mathbf{u}^b\)로 변환하든가 그 반대로 쉽게 변환할 수 있다.
DCM의 세번째 성질은 연쇄법칙이 성립한다는 것이다. 연쇄법칙은 다음과 같은 것이다.
\[ C_c^a = C_b^a C_c^b \]
좌표계 \(\{a\}\)에서 좌표계 \(\{c\}\)로의 DCM을 직접 계산할 수도 있지만 중간 단계의 좌표계 \(\{b\}\)를 두고 각각의 DCM을 계산해서 구할 수도 있다는 이야기다. 즉 \(\{a\}\)에서 \(\{c\}\)로 가는 것은 \(\{a\}\)에서 \(\{b\}\)로, 다시 \(\{b\}\)에서 \(\{c\}\)로 가는 것과 같다는 뜻이다. DCM을 직접 구하기 어려운 경우 매우 유용하다.
'항공우주 > 동역학' 카테고리의 다른 글
짐벌락 (Gimbal Lock) (0) | 2021.02.07 |
---|---|
오일러각 (Euler Angles) (0) | 2021.02.07 |
벡터를 직교 좌표계로 표현하기 (0) | 2021.02.05 |
직교 좌표계 (0) | 2021.02.05 |
자이로스코프 효과 (1) | 2021.01.10 |
댓글