이번 포스팅에서는 평면에서의 기구학에 대해 다뤄보겠습니다.
본문의 내용은 참고문헌의 내용을 참고한 것임을 밝힙니다.
참고문헌: Computer-aided analysis of mechanical systems, Parviz E. Nikravesh
평면 기구학(Planar kinematics)
평면에 임의의 body $i$가 존재한다면, 해당 body의 운동을 기술하기 위해서는
3개의 좌표가 필요합니다. $x_i, y_i, \phi_i$가 그것입니다.
$x_i, y_i$는 평면 상의 위치를 나타내고, $\phi_i$는 얼마나 기울어져 있는지에 대한 자세를 나타냅니다.
위 그림에서 벡터 $r_i^P$는 아래와 같이 나타낼 수 있습니다.
$$r_i^P = r_i+A_i s\prime_i^P \tag{1}$$
이 때,
$$A_i = \begin{bmatrix}\cos\phi_i &-\sin\phi_i \\ \sin\phi_i & \cos\phi_i \end{bmatrix}$$
입니다. 식 (1)을 조금 풀어서 쓰면 아래와 같습니다.
$$\begin{bmatrix} x_i^P \\ y_i^P \end{bmatrix}=\begin{bmatrix}x_i \\y_i \end{bmatrix}+\begin{bmatrix}\cos\phi_i &-\sin\phi_i \\ \sin\phi_i & \cos\phi_i \end{bmatrix}+\begin{bmatrix}\xi_i \\\eta_i \end{bmatrix}$$
기구학적 구속(kinematic constraint)
우리가 실생활에서 접하는 기구라 부를 수 있는 구조물들은
모두 목적성을 가지고 저마다의 자유도를 가진 채 운동합니다.
여기에선 특정 자유도의 움직임을 제한하는 것을 joint라 부르기로 합니다.
리벳, 볼트, 못 등이 있을 수 있겠죠.
우리는 이와 같은 joint들을 구속 자유도에 따라 다르게 부르며,
이를 구속식($\Phi$, constraint equation)이라는 형태로 나타낼 수 있습니다.
Revolute joint
Revolute joint는 병진자유도를 구속하는 joint로써, 회전에 대한 자유도 1개만을 가집니다.
위 그림과 같이 벡터 $r_i^P = r_i+s_i^P$와 $r_j^P=r_j+s_j^P$가 동일하면
해당 점이 일치하니 그 점으로 구속되는 형태입니다.
수식으로 아래와 같이 정의됩니다.
$$\Phi^{(r,2)} \equiv r_i+A_i s\prime_i^P - r_j - A_j s\prime_j^P = 0$$
이를 조금 풀어쓰면 아래와 같습니다.
$$\Phi^{(r,2)} = \begin{bmatrix} x_i + \xi_i^P\cos\phi_i - \eta_i^P\sin\phi_i - x_j - \xi_j^P \cos\phi_j + \eta_j^P \sin\phi_j \\ y_i + \xi_i^P \sin\phi_i + \eta_i^P \cos\phi_i - y_j - \xi_j^P \sin\phi_j - \eta_j^P \cos\phi_j \end{bmatrix} = \begin{bmatrix}0 \\0 \end{bmatrix}$$
Translational joint
Translational joint는 회전자유도를 구속하는 joint로써, 병진에 대한 자유도 1개만을 가집니다.
병진과 회전자유도 각각 1개씩을 구속하는 구속식이 필요한데요.
회전자유도는 아래와 같은 구속식으로 구속가능합니다.
$$\Phi^{(t,1)} \equiv \phi_i - \phi_j - \left(\phi_i^0 - \phi_j^0\right) = 0$$
나머지 회전자유도 하나를 구속하는 방법은 위의 그림을 보면서 생각해봅시다.
body $i$ 위에 벡터 $n_i$가 존재한다고 했을 때,
body $i$ 위에서 body $j$ 위를 가리키고, 상호 병진운동하는 자유도의 방향과
같은 방향의 벡터 $d$를 만들면
벡터 $n_i$와 벡터 $d$가 항상 수직이면 이 기구는 직선운동만 합니다. 즉,
$$n_i^Td = 0$$
풀어서 쓰면 아래와 같습니다.
$$\left(x_i^P -x_i^R\right)\left(x_j^P-x_i^P\right)+\left(y_i^P-y_i^R\right)\left(y_j^P-y_i^P\right)=0$$
따라서 translational joint의 전체 구속식은 아래와 같이 정의됩니다.
$$\Phi^{(t,2)} \equiv \begin{bmatrix} \left(x_i^P -x_i^R\right)\left(x_j^P-x_i^P\right)+\left(y_i^P-y_i^R\right)\left(y_j^P-y_i^P\right) \\ \phi_i - \phi_j - \left(\phi_i^0 - \phi_j^0\right) \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} $$
그런데 만약 3개 자유도 중 병진자유도 1개만 구속하고 싶다면 그 구속식은 어떻게 될까요?
translational joint의 구속식에서 각도에 대한 부분만 빼주면 되겠죠?
여기까지 회전과 병진자유도를 구속하는 각각의 joint에 대하여 알아보았습니다.
'공학 > 동역학' 카테고리의 다른 글
[동역학] 오일러 각(Euler Angle)을 Python으로 구현해보기 (2) | 2024.07.23 |
---|---|
[동역학] 평면에서의 운동방정식 (with MATLAB) (0) | 2022.01.25 |
[동역학] 오일러 파라미터(Euler parameters) - (2) (0) | 2022.01.13 |
[동역학] 오일러 파라미터(Euler parameters) - (1) (1) | 2022.01.12 |
[동역학] 기구학적 구속(kinematic constraint) - Four-bar linkage (0) | 2021.11.25 |