Spatial Vector Algebra 입문 (1)

강체의 병진과 회전을 3D 벡터로 따로 쓰면, 기준점만 바꿔도 선속도 식이 증가하기 때문에 spatial(6D) vector 로 묶어 운동을 하나의 객체로 다루는 것이 좋습니다. 이 글에서는 spatial 표기의 동기와 Plücker motion 좌표로 정의한 spatial velocity, 그리고 원점을 옮겨도 같은 공간 벡터로 남는다는 성질까지 살펴봅니다.

\begin{equation*} \hat{v} = \omega_x d_{Ox} + \omega_y d_{Oy} + \omega_z d_{Oz} + v_{Ox} d_x + v_{Oy} d_y + v_{Oz} d_z \end{equation*}

6 자유도 공간 벡트(Spatial Vector)

합력과 모멘트를 나누어 표현하면 다음과 같이 표혈 할 수 있습니다.

\begin{equation*} f_{3} = m\, a_{C}, \qquad n_{C} = \bar{I}_{C}\,\dot{\omega} + \omega \times \bar{I}_{C}\omega \end{equation*}
  • \(f_{3}\): 질량중심에 작용하는 ​합력(N, \(\mathbb{R}^{3}\))

  • \(m\): 질량(kg)

  • \(a_{C}\): 질량중심 선가속도(m/s²)

  • \(n_{C}\): 질량중심 기준 ​모멘트(N·m)

  • \(\bar{I}_{C}\): 질량중심 기준 회전 관성 텐서(\(3\times 3\), kg·m²)

  • \(\omega\), \(\dot{\omega}\): 각속도·각가속도(rad/s, rad/s²)

Spatial 표기에서는 같은 내용을 하나의 식으로 표현합니다.

\begin{equation*} f = I a + v \times^{*} I v \end{equation*}
  • \(f \in F^{6}\): spatial force (모멘트 3 + 힘 3)

  • \(v \in M^{6}\): spatial velocity (각속도 3 + 기준점 선속도 3)

  • \(a \in M^{6}\): spatial acceleration

  • \(I : M^{6}\to F^{6}\): spatial inertia (보통 \(6\times 6\) 대칭)

  • \(\times^{*}\): 힘 공간용 spatial cross-product 연산자

이를 통해 두 강체를 붙일 때 \(I_{\mathrm{new}}=I_{1}+I_{2}\)​처럼 합성이 단순해지고 대수와 코드 길이가 줄어드는 효과를 볼 수 있습니다.

Spatial velocity — Plücker motion 좌표

하나의 고정점 \(O\)​에 대해서 강체 \(B\)​의 운동은 아래와 같이 표현될 수 있습니다.

  • \(\omega \in \mathbb{R}^{3}\): \(O\)​를 지나는 축에 대한 ​각속도(rad/s)

  • \(v_{O} \in \mathbb{R}^{3}\): 지금 \(O\)​와 일치하는 물체고정점의 ​선속도(m/s)

따라서 강체위에 존재하는 한점 \(P\)​에서의 선속도는 다음과 같으며, \(O\)​를 바꿔도 물리 운동은 같고, 표현 \((\omega,v_{O})\)​만 바뀝니다.

\begin{equation*} v_{P} = v_{O} + \omega \times \overrightarrow{OP} \end{equation*}
  • \(v_{P}\): \(P\)​에 있는 물체고정점의 선속도(m/s)

  • \(\overrightarrow{OP}\): \(O\)​에서 \(P\)​로 가는 위치 벡터(m)

공간 속도 벡터 \(\hat{v} \in M_6\)​를 정의하기 위해 \(M_6\) 공간 상의 기저 \(D_O\)​를 정의합니다.

\begin{equation*} D_O = \{d_{Ox}, d_{Oy}, d_{Oz}, d_x, d_y, d_z\} \end{equation*}
  • \(d_{Ox}, d_{Oy}, d_{Oz}\): \(Ox, Oy, Oz\) 축에 대한 단위 회전(unit rotation)

  • \(d_x, d_y, d_z\): \(x, y, z\) 방향으로의 단위 병진(unit translation)

6가지 기본 운동 성분을 플뤼커 기저 벡터와 1:1로 대응시킴으로써, 하나의 6차원 공간 속도 벡터로 합성합니다.

\begin{equation*} \hat{v} = \omega_x d_{Ox} + \omega_y d_{Oy} + \omega_z d_{Oz} + v_{Ox} d_x + v_{Oy} d_y + v_{Oz} d_z \end{equation*}
  • \(\hat{v}_{O}\): 좌표 프레임 \(O\)​에서 본 spatial velocity 좌표 표현

  • \(\omega_{x}, \omega_{y}, \omega_{z}\): \(Ox, Oy, Oz\) 축에 대한 회전 속도 성분

  • \(v_{O_x}, v_{O_y}, v_{O_z}\): \(x, y, z\) 방향으로의 선속도 성분

원점 변경에 대한 공간 속도 벡터의 불변성

원점 \(O\) 대신 새로운 점 \(P\)​를 기준 원점으로 삼아 정의한 공간 속도 벡터를 \(\hat{v}'\)​이라 할 때, \(\hat{v}' = \hat{v}\) (원점 위치와 상관없이 동일한 벡터)임을 증명하고자 합니다. 계산의 편의를 위해 점 \(P\)​의 좌표를 \(O\) 기준으로 \((r, 0, 0)\)​이라 가정했을 때 점 \(P\)​에서의 속도 \(v_P\)​는 \(v_P = v_O + \boldsymbol{\omega} \times \vec{OP}\) 관계식에 의해 다음과 같이 계산됩니다.

Figure 2.2 — Expressing dPy and dPz at O

Figure 2.2: Expressing \(d_{Py}\) and \(d_{Pz}\) at \(O\)

\begin{equation*} \begin{bmatrix} v_{Px} \\ v_{Py} \\ v_{Pz} \end{bmatrix} = \begin{bmatrix} v_{Ox} \\ v_{Oy} + \omega_z r \\ v_{Oz} - \omega_y r \end{bmatrix} \end{equation*}

기저 벡터의 변화: 원점이 \(P\)​로 이동함에 따라 기저 벡터 역시 이동합니다.

  • \(d_{Px} = d_{Ox}\) (\(Px\) 축과 \(Ox\) 축은 동일한 직선)

  • \(d_{Py} = d_{Oy} + r d_z\) (\(Py\) 축 회전 시, 원점 \(O\)​에서는 \(z\) 방향으로 \(r\)​만큼의 선속도 발생)

  • \(d_{Pz} = d_{Oz} - r d_y\) (\(Pz\) 축 회전 시, 원점 \(O\)​에서는 \(-y\) 방향으로 \(r\)​만큼의 선속도 발생)

\(P\)​를 기준으로 작성한 공간 속도 벡터 \(\hat{v}'\) 식에 위 성분들과 기저를 대입하면 \(r\) 관련 항들이 서로 상쇄됩니다.

\begin{equation*} \begin{aligned} \hat{v}' &= \omega_x d_{Px} + \omega_y d_{Py} + \omega_z d_{Pz} + v_{Px}d_x + v_{Py}d_y + v_{Pz}d_z \\ &= \omega_x d_{Ox} + \omega_y(d_{Oy} + \mathbf{r d_z}) + \omega_z(d_{Oz} - \mathbf{r d_y}) \\ &\quad + v_{Ox}d_x + (v_{Oy} + \mathbf{\omega_z r})d_y + (v_{Oz} - \mathbf{\omega_y r})d_z \\ &= \omega_x d_{Ox} + \omega_y d_{Oy} + \omega_z d_{Oz} + v_{Ox}d_x + v_{Oy}d_y + v_{Oz}d_z \\ &= \hat{v} \end{aligned} \end{equation*}

정리

  • 공간 벡터(Spatial Vector)의 사용

  • Plücker motion 기저 \(D_O\)​와 spatial velocity \(\hat{v}\)

  • 원점을 바꿔도 \(\hat{v}'=\hat{v}\)​인 불변성에 대한 증명


​참고: Roy Featherstone, Rigid Body Dynamics Algorithms, Springer, 2008, Chapter 2. Springer link

On this page