2 minute read



4.4.1 Basic Concepts


4p

다시 우리에게 친숙한(?) Newton-Euler Formulation으로 돌아가자.

Motion(velocity, acceleration, inertal forces)는 base에서부터 end effector로, Force는 end effector에서 base 순서로 계산한다.


5p

End effector에 force $\textbf{f}$와 moment $\textbf{n}$이 주어져 있고, joint torque가 주어져 있다고 하자.

Joint를 전부 분해한다. 그러면 각 link에 대해 internal force와 moment들이 표현된다. Action과 reaction들이 서로 상쇄된다는 점을 생각하자.



4.4.2 Rigid Body Dynamics


Rigid body dynamics로 돌아가보자.

6p

Translational motion,

\[m \dot{\textbf{v}_C} = m \textbf{a} = \textbf{F}\]

Rotation motion,

\[\textbf{I}_C \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times \textbf{I}_C \boldsymbol{\omega} = \textbf{N}\]

여기서, $C$는 center of mass


Angular Acceleration

7p

3.2.9 참조.

\[\boldsymbol{\omega}_i = \boldsymbol{\omega}_{i-1} + \dot{\theta}_i \hat{\textbf{z}}_{i-1} \\ \dot{\boldsymbol{\omega}}_i = \dot{\boldsymbol{\omega}}_{i-1} + \dot{\theta}_i (\boldsymbol{\omega}_{i-1} \times \hat{\textbf{z}}_{i-1}) + \ddot{\theta}_i \hat{\textbf{z}}_{i-1}\]

Velocity에 대한 recursive equation으로부터 얻을 수 있다.


Linear Acceleration

8p

3.2.9 참조. 조금 더 복잡하다.

Inceremental velocity를 다음과 같이 정의하자. Prismatic joint라면 $0$이 아닐 것이다.

\[\textbf{V}_i = \dot{d}_i \hat{\textbf{z}}_{i-1}\]

그러면,

\[\textbf{v}_i = \textbf{v}_{i-1} + \boldsymbol{\omega}_i \times {}^{i-1}\textbf{P}_i + \textbf{V}_i\]

Derivative를 취하면

\[\begin{align*} \dot{\textbf{v}}_i &= \dot{\textbf{v}}_{i-1} + \dot{\boldsymbol{\omega}}_i \times {}^{i-1}\textbf{P}_i + \boldsymbol{\omega}_i \times {}^{i-1}\dot{\textbf{P}}_i + \dot{\textbf{V}}_i \\ &= \dot{\textbf{v}}_{i-1} + \dot{\boldsymbol{\omega}}_i \times {}^{i-1}\textbf{P}_i + \boldsymbol{\omega}_i \times (\boldsymbol{\omega}_i \times {}^{i-1}\textbf{P}_i) + 2 \dot{d}_i \boldsymbol{\omega}_i \times \hat{\textbf{z}}_{i-1} + \ddot{d}_i \hat{\textbf{z}}_{i-1} \end{align*}\]

위 그림에서, \({}^{i-1}\textbf{P}_i = a_i \hat{\textbf{x}}_{i-1} + d_i \hat{\textbf{z}}_{i-1}\). DH parameter를 기억하자.


Center of mass에 대해 나타내면,

\[\textbf{v}_{C_i} = \textbf{v}_{i-1} + \boldsymbol{\omega}_i \times \textbf{p}_{C_i} \\ \dot{\textbf{v}}_{C_i} = \dot{\textbf{v}}_{i-1} + \dot{\boldsymbol{\omega}}_i \times \textbf{p}_{C_i} + \boldsymbol{\omega}_i \times (\boldsymbol{\omega}_i \times \textbf{p}_{C_i})\]

이렇게 linear/angular acceleration에 대한 recursive equation 완성. $0$에서 시작해서 $n$으로 가는 outward iteration 형태이다.




11p

Link $i$에 작용하는 internal force와 moment는

\[\textbf{F}_i = m_i \dot{\textbf{v}}_{C_i} \\ \textbf{N}_i = \textbf{I}_{C_i} \dot{\boldsymbol{\omega}}_i + \boldsymbol{\omega}_i \times \textbf{I}_{C_i} \boldsymbol{\omega}_i\]

여기에 force/moment balance.

\[\textbf{F}_i = \sum \textrm{forces} \\ \textbf{N}_i = \sum \textrm{moments}\]


이제 계산해 보자.

\[\textbf{F}_i = \textbf{f}_i - \textbf{f}_{i+1} \\ \textbf{N}_i = \textbf{n}_i - \textbf{n}_{i+1} + (-\textbf{p}_{C_i}) \times \textbf{f}_i + ({}^{i-1}\textbf{P}_i - \textbf{p}_{C_i}) \times (-\textbf{f}_{i+1})\]

그런데 여기서 문제가 하나 있다. Mass는 어디로 갔지? Gravity는?

지금 상황에서는 필요없다. 일단 gravity-free space에서 움직인다고 가정하고, gravity term은 나중에 추가하기로 하자.

Recursive equation으로 만들자. 즉 link $i$에 대한 식으로 정리하면,

\[\textbf{f}_i = \textbf{F}_i = \textbf{f}_{i+1} \\ \textbf{n}_i = \textbf{N}_i + \textbf{n}_{i+1} + \textbf{p}_{C_i} \times \textbf{F}_i + {}^{i-1}\textbf{P}_i \times \textbf{f}_{i+1}\]

따라서 이 식은 velocity와는 반대로 $n$에서 $0$으로 가는 inward iteration 형태이다. End effector에 주어진 힘과 모멘트로부터 joint를 거슬러 올라가는 방식이기 때문.

이를 토대로 joint torque를 계산하면

\[\tau_i = \begin{cases} \textbf{n}_i^T \hat{\textbf{z}}_{i-1} & \textrm{ Revolute}\\ \textbf{f}_i^T \hat{\textbf{z}}_{i-1} & \textrm{ Prismatic}\\ \end{cases}\]



4.4.4 Gravity


Gravity를 고려하면 어떻게 될까? Ground에서 중력 가속도를 ${}^{0}\dot{\textbf{v}}_0 = \textbf{g}$로 두자.

그런데, 우리는 가속도에 대한 방정식을 recursive equation으로 계산했으므로, 공통되는 중력 가속도는 모조리 상쇄되고 만다.

따라서 중력을 고려한 운동 방정식 역시 똑같다!