본문 바로가기
robotics/mecanum wheel

메카넘 휠 차량의 동작 원리 - 2

by monotics 2021. 2. 25.

조향 장치가 따로 없는 메카넘 휠 차량의 자세와 속도는 4개 휠의 회전 각속도를 통해 제어된다. 그리고 우리는 차량을 어떠한 자세와 속도로 움직이길 원한다. 차량의 움직임과 각 휠의 회전 각속도를 연결하는 것이 이번 글의 목적이다. 이를 위해서는 차량의 이동 속도를 입력으로 받아서 최종적으로 각 휠의 회전 각속도를 계산해내야 한다. 이 과정을 4개의 단계로 나누어 살펴보자.


1. 차량의 움직임 분해

차량 움직임은 섀시 중심에서의 병진 이동 속도(\(\overrightarrow{v_t}\))와 Yaw 회전 각속도(\(\overrightarrow{w}\))로 나누어 생각해 볼 수 있다. 이들의 성분은 아래와 같으며 Fig 1에 벡터로 표현되어 있다. 여기서 아래 첨자로 사용된 t는 병진 운동(Translational motion)을 의미하고 r은 회전운동(Rotational motion)을 의미한다.

  • \(\overrightarrow{v_t}\) : 차량의 병진 이동 속도 벡터
  • \(\overrightarrow{v_{t_x}}\) : \(\overrightarrow{v_t}\)의x 방향 성분
  • \(\overrightarrow{v_{t_y}}\) : \(\overrightarrow{v_t}\)의 y 방향 성분
  • \(\overrightarrow{w}\): 섀시 중심을 축으로 한 yaw 회전의 각속도(angular velocity)

Fig 1. 차량의 병진/회전 운동과 각 휠에서의 속도 벡터

2. 휠에서의 속도 계산

섀시 중심에서의 속도인 vt와 w는 결국 각 휠에서 발생하는 속도들로 나누어 표현할 수 있다. 이후 계산방식이 모든 휠에 대해 동일하므로 여기서는 1번 휠을 기준으로 설명하고 마지막에 나머지 3개 휠로 확장하도록 하겠다.

  • \(\overrightarrow{r}\) : 차량의 중심에서 휠의 중심까지의 벡터
  • \(\overrightarrow{v_{r_1}}\) : 1번 휠의 중간 지점에서 \(\overrightarrow{r}\)에 대한 접선 속도
  • \(\overrightarrow{v_1}\) : 1번 휠의 중간 지점에서의 직선 속도로 \(\overrightarrow{v_t}\)와 \(\overrightarrow{v_{r_1}}\)의 합 벡터이다.

\(\overrightarrow{v_t}\)는 휠의 중심에서도 동일하다. 하지만 \(\overrightarrow{w}\)는 \(\overrightarrow{r}\)을 통해 접선속도 \(\overrightarrow{v_{r_1}}\)으로 된다. 회전운동을 할 경우 각 휠마다 접선속도는 다르다. 접선속도는 각속도와 반지름 방향 벡터의 외적으로 구한다.

\[ \overrightarrow{v_{r_1}} = \overrightarrow{w} \times \overrightarrow{r} \tag{1} \]

\(\overrightarrow{v_1}\)은 \(\overrightarrow{v_t}\)와 \(\overrightarrow{v_{r_1}}\)의 합 벡터이며 식(1)의 접선속도를 대입하여 구할 수 있다.

\[ \begin{matrix} \overrightarrow{v_1} &=& \overrightarrow{v_t} + \overrightarrow{v_{r_1}} \\ &=& \overrightarrow{v_t} + \overrightarrow{w} \times \overrightarrow{r} \tag{2} \end{matrix} \]

\(\overrightarrow{v_1}\)을 x와 y 성분으로 나누면 아래 식(3)과 식(4)와 같다.

\[ \overrightarrow{v_{1_x}} = \overrightarrow{v_{t_x}} - \overrightarrow{w} \times \overrightarrow{r_y} \tag{3} \]

\[ \overrightarrow{v_{1_y}} = \overrightarrow{v_{t_y}} + \overrightarrow{w} \times \overrightarrow{r_x} \tag{4} \]

나머지 휠에 대해서도 구해보면 아래와 같다.

\[ \overrightarrow{v_{2_x}} = \overrightarrow{v_{t_x}} - \overrightarrow{w} \times \overrightarrow{r_y}, \qquad \overrightarrow{v_{2_y}} = \overrightarrow{v_{t_y}} - \overrightarrow{w} \times \overrightarrow{r_x} \]

\[ \overrightarrow{v_{3_x}} = \overrightarrow{v_{t_x}} + \overrightarrow{w} \times \overrightarrow{r_y}, \qquad \overrightarrow{v_{3_y}} = \overrightarrow{v_{t_y}} - \overrightarrow{w} \times \overrightarrow{r_x} \]

\[ \overrightarrow{v_{4_x}} = \overrightarrow{v_{t_x}} + \overrightarrow{w} \times \overrightarrow{r_y}, \qquad \overrightarrow{v_{4_y}} = \overrightarrow{v_{t_y}} + \overrightarrow{w} \times \overrightarrow{r_x} \]

 

3. 롤러의 속도 계산

앞에서 구한 1번 휠의 \(\overrightarrow{v_1}\)을 통해 롤러에서 발생하는 속도를 계산해보자. 1번 휠의 롤러에서 발생하는 속도들은 Fig 2에 나타내었다.

\(\overrightarrow{v_1}\) : 1번 메카넘 휠의 속도

\(\overrightarrow{v_{\shortparallel_1}}\) : 롤러의 축과 평행하게 발생하는 속도

\(\overrightarrow{v_{\perp_1}}\) : 이 속도는 롤러의 회전축과 직각 방향이므로 어떠한 힘도 발생시키지 못하고 롤러가 그냥 굴러가기 때문에 무시해도된다.

\(\hat{u}\) : 롤러의 회전축 방향의 단위 벡터

 

Fig 2. 롤러의 속도

단위 벡터 \(\hat{u}\)는 x와 y 성분으로 나눌 수 있다.

\[ \hat{u} =-\frac{1}{\sqrt{2}}\hat{i} + \frac{1}{\sqrt{2}}\hat{j} \]

이를 통해 \(\overrightarrow{v_1}\)로부터 \(\overrightarrow{v_{\shortparallel_1}}\)을 구해보자.

\[ \begin{matrix} {v_{\shortparallel_1}} &=& \overrightarrow{v_1} \cdot\hat{u} \\ &=& ({v_{1_x}}\hat{i} + {v_{1_y}}\hat{j}) \cdot (-\frac{1}{\sqrt{2}}\hat{i} + \frac{1}{\sqrt{2}}\hat{j}) \\ &=& -\frac{1}{\sqrt{2}}{v_{1_x}} + \frac{1}{\sqrt{2}}{v_{1_y}} \\ \end{matrix} \tag{5}\]

나머지 휠들에 대해서도 계산해보면 아래와 같다.

\[ \begin{matrix} v_{\shortparallel_2} = \frac{1}{\sqrt{2}}{v_{2_x}} + \frac{1}{\sqrt{2}}{v_{2_y}} \\ v_{\shortparallel_3} = -\frac{1}{\sqrt{2}}{v_{3_x}} + \frac{1}{\sqrt{2}}{v_{3_y}} \\ v_{\shortparallel_4} = \frac{1}{\sqrt{2}}{v_{4_x}} + \frac{1}{\sqrt{2}}{v_{4_y}}
 \end{matrix} \]

4. 바퀴의 속도 계산

마지막으로 롤러의 속력(\(v_{\shortparallel_1}\))를 통해 휠의 속력(\(v_{w_1}\))을 구해보자. Fig 3은 이 둘의 관계를 보여준다.

\(v_{w_1}\) : 1번 휠의 속력

 

 

Fig 3. 휠의 속도

\[ v_{\shortparallel_1} = v_{w_1}\cos (45^\circ) \]

\[\cos (45^\circ) = \frac{1}{\sqrt{2}} \]

\[ \begin{matrix} v_{w_1} &=& \sqrt{2} \cdot v_{\shortparallel_1} \\ &=& \sqrt{2} (-\frac{1}{\sqrt{2}}v_{1_x} + \frac{1}{\sqrt{2}}v_{1_y}) \\ &=& -v_{1_x} + v_{1_y} \end{matrix} \tag{6} \]

식(3)과 식(4)를 a와 b의 식으로 나타내면 아래와 같다.

\[ v_{1_x} = v_{t_x} - wb \tag{7} \]

\[ v_{1_y} = v_{t_y} + wa \tag{8} \]

식(7)과 식(8)을 식(6)에 대입하면 더디어 1번 휠의 속력이 구해진다.

\[ \begin{matrix} v_{w_1} &=& -(v_{t_x} -wb) + (v_{t_y} + wa) \\ &=& -v_{t_x} + v_{t_y} + wa + wb \\ &=& -v_{t_x} + v_{t_y} + w(a+b) \end{matrix} \]

나머지 휠들에 대해서도 계산을 하여 최종 결과를 얻는다.

\[ \begin{matrix} v_{w_1} = -v_{t_x} + v_{t_y} + w(a+b) \\ v_{w_2} = v_{t_x} + v_{t_y} - w(a+b) \\ v_{w_3} = -v_{t_x} + v_{t_y} - w(a+b) \\ v_{w_4} = v_{t_x} + v_{t_y} + w(a+b) \end{matrix} \]

결과 식을 보면 아주 간결하다. a와 b는 차량을 설계할 때 이미 정해지는 값이고 \(\overrightarrow{v_t}\)의 x와 y 축 성분인 \(v_x\)와 \(v_y\) 그리고 차량의 회전 속력 값인 \(w\)만 입력으로 주면 각 휠의 속력을 얻을 수 있다. 또한 차량이 병진 이동만 한다면 \(w\)는 0이므로 \(v_x\)와 \(v_y\) 값만 있으면 되며 회전만 한다면 \(w\) 값만 있으면 된다.

 

다음 글부터는 실제 메카넘 휠 차량을 제작해보고 여기서 얻은 결과식을 이용하여 차량을 제어하도록 하자.


참고자료

[메카넘 구동 시스템 (5)] 메카넘 구동 시스템 제어기술(1) / 좌표변환을 통한 메카넘 구동 시스템 제어

【学渣的自我修养】麦克纳姆轮浅谈 - 知乎 (zhihu.com)

'robotics > mecanum wheel' 카테고리의 다른 글

메카넘 휠 차량 제작 - 하드웨어  (15) 2021.02.25
메카넘 휠 차량의 동작 원리 - 1  (0) 2021.02.25

댓글