관성 텐서(Inertia tensor)
이게 왜 필요할까?
그냥 원판이 돌면 $\frac{1}{2}mr^{2}\pi$라고 하면 안되나? 라고 생각하면 좋겠지만, 고등학교나 교양물리학을 넘어서 실전적으로 회전체를 다루고자 한다면 회전에 대해 살짝 깊게 파고 들 이유가 있다.
게임을 예상해보자. 예를 들자면 이렇게
팽이와 통나무가 한 화면에 있는데 얘네 둘이 평행한 축으로 돌고있지 않다면 어떻게 표현할건지?
또, 어떤 물체가 월드의 x,y,z축과 평행/수직의 축이 아닌 이상한 방향코사인을 갖고 돌고있다면 어떻게 표현하는지?
이것을 표현할수 있게 해주는 것이 관성텐서다.
특히, 다관절 로봇을 시뮬레이션 하려면 각 액추에이터들이 대부분 다 다른 축으로 돌고있기때문에, 각 부분이 어떻게 움직이는지를 일일이 좌표변환을 해가면서 하려면 굉장히 피곤할 것이다.
텐서라고 적으니까 압박감이 좀 들긴 해지만, 벡터미적분학을 착실히 배워두었다면 크게 어렵지는 않다.
그럼 일단 시작해보자.
질량 $m$을 가진 어떤 강체(혹은 질점)가 벡터 $\textbf{v}$의 속도로로 움직이고 있다고 한다면, 이 강체(질점)의 운동에너지는 다음과 같다는 것을 교양물리시간에 배웠다.
$$T=\frac{1}{2}m\textbf{v}\bullet \textbf{v}$$
여기서 벡터 $\textbf{v}$는 병진운동(회전운동이 아닌 운동)의 일반적 표현이니, 이를 회전하는 물체의 표현으로 바꿔주자. 회전축으로부터의 $\boldsymbol{r}$위치에서 회전벡터$\boldsymbol{\omega}$의 각속도로 회전하고 있는 물체의 속도벡터는 ${\boldsymbol{r}}{\times}{\boldsymbol{\omega}}$이다. (각속도에 반지름을 곱하면 해당 물체의 속도의 스칼라값이 나오고, 회전벡터와 축으로부터 질점까지의 벡터를 외적하면 회전하는 방향이 나온다.) 즉,
$$T=\frac{1}{2}m({\boldsymbol{r}}{\times}{\boldsymbol{\omega}})\bullet({\boldsymbol{r}}{\times}{\boldsymbol{\omega}})$$
이고, 이 식을 다시 한번 벡터항등식으로 바꿔주자.
$$T=\frac{1}{2}m(\omega^{2}r^{2}- (\boldsymbol{\omega}\bullet\boldsymbol{r} )^2{})$$
그 다음은, 이제 벡터에 포함되어있었던 축에 대한 표현을 적어주자. 여기선 $x,y,z$가 아니라 $x_1, x_2, x_3$이라고 표현할 것이다. 또한 $\omega$나 $r$의 하첨자로 1,2,3을 붙이는 것 또한 이들의 각 축들의 성분이다.
$$T=\frac{1}{2}m\left( \sum_{i=1}^{3}\omega^{2}_{i}\sum_{i=1}^{3}r^{2}_{i}- \sum_{i=1}^{3}\omega_{i}r_{i}\sum_{j=1}^{3}\omega_{j}r_{j} \right)$$
여기서, 회전 자체에 대한 서술인 $\boldsymbol{\omega}$가 있으면 관성모멘트처럼 써먹기 힘들기 때문에 왼쪽으로 따로 빼내어 줄 것이다. 문제는 두 번째 항인 $\omega^{2}_{i}$인데, 이는 크로네커 델타를 써서 $\delta_{ij}\omega_{i}\omega_{j}$라고 바꿔주어, $i$와 $j$가 동일할 때에만 $\omega^{2}_{i}$로 나타나게 해 줄 것이다.
$$T=\sum_{i=1}^{3}\sum_{j=1}^{3}\frac{1}{2}\omega_{i}\omega_{j}\left[ m\left( \delta_{ij}\sum_{i=1}^{3}r^{2}_{i}- r_{i}r_{j} \right) \right]$$
여기서 대괄호 안의 내용을 드디어 "질점의 관성텐서"$I$라고 부른다. 이걸 이제 i와 j를 각각 행렬의 행과 열이라고 생각하여 풀어준다면 이렇게 적어줄 수 있다.(i가 행인지 j가 행인지는 상관없다. 어차피 대칭행렬이니까)
$$I =\begin{bmatrix}
m(x^2_{2}+x^2_{3}) & -mx_{1}x_{2} & -mx_{1}x_{3} \\
-mx_{1}x_{2} & m(x^2_{1}+x^2_{3}) & -mx_{2}x_{3} \\
-mx_{1}x_{3} & -mx_{2}x_{3} & m(x^2_{1}+x^2_{2})
\end{bmatrix}$$
자, 그럼 맨 처음에 논했던, "회전축이 x,y,z축이 아니라 임의의 축$\omega$라면 회전운동에너지는 어떻게 계산해야하나요? 에 대한 답을 해야겠다.
우선 각운동량부터. 각운동량 벡터 $\boldsymbol{L}$의 각 성분은 이렇게 구할 수 있다.
$$L_{i} = \sum_{j=1}^{3}I_{ij}\omega_{j}$$
그러니까, 행렬과 벡터의 곱으로 나타낼 수 있고, 이를 텐서표현식으로 나타내면
$$\boldsymbol{L} = \boldsymbol{I} \bullet\boldsymbol{\omega}$$
가 된다.
그 다음엔 양변에 $\frac{m}{2}\sum_{i=1}^{3}\omega_{i}$를 적어주면
$$\frac{m}{2}\sum_{i=1}^{3}\omega_{i}L_{i} = \frac{m}{2}\sum_{i=1}^{3}\sum_{j=1}^{3}I_{ij}\omega_{i}\omega_{j}$$
가 되며, 우변은 앞 단락에서 언급한 회전운동에너지 $T$와 같다.
따라서, 관성텐서로 나타낸 회전운동에너지는
$$T=\frac{1}{2}\boldsymbol{\omega^T}\boldsymbol{I}\boldsymbol{\omega}$$
가 된다.
쪼금만 더 파고들기....
각운동량인 $L$을 관성텐서$I$에 각속도 벡터$\omega$를 행렬의 곱이라고 한다면... 고유값과 고유벡터를 한번 생각해보자
$$L = I\omega = \lambda\omega$$
고유벡터와 고유값의 정의를 그냥 수식이 아니라, 직관적인 언어로 표현하자면, 어떤 변환행렬이 있을때, 이 벡터는 변환되어도 방향은 바뀌지 않고 크기만 (고윳값의 크기만큼)늘거나 줄거나 한다고도 볼 수 있다.
즉, 관성텐서의 고유벡터를 찾는다는 것은, 각속도벡터와 각운동량 벡터의 방향이 동일해지는 경우를 찾는다는 것이 된다.
또한, 그 고유벡터에 대한 고유값은 그 축으로 회전시킬때의 관성모멘트고....