6족보행로봇 제작과정 및 원리설명(1)

6족보행로봇은 이 분의 가이드를 참고하여 만들었음을 밝힙니다.

https://markwtech.com/robots/hexapod/

 

Hexapod – markwtech

Hexapod This is my hexapod robot inspired by the PhantomX AX from Trossen Robotics. The PhantomX costs $1300, which is way too expensive for my taste, so I decided to design a robot using cheap 180 degree MG996R clone 11kg-cm servos (if they are out of sto

markwtech.com

 

 

물품구매

일단 이분이 만들어주신 부품리스트를 통해서 알리익스프레스에서 부품을 구매하였습니다. 나사같은 경우는 미국에 McMaster-Carr이라는 사이트에서 해외구매대행을 통해 구매하였습니다. 3D프린터도 없고 주변에 무료로 할 수 있는 곳도 없어서 사서 30만원짜리 저가프린터를 구매해 제작하였습니다. 정상동작만을 테스트하고 싶은 분은 배터리용량이 적은 것을 구매하셔도됩니다.

 

조립

조립은 위에 가이드써주신 분이 사진과 함께 잘 설명해주셔서 쉽게 할 수 있었습니다. 아무래도 다리가 6개다 보니 시간이 좀 걸리긴 합니다. 처음에 전동드릴없이 해볼려고 했는데 너무 힘들어서 결국 3만원짜리 구매했습니다. 참고해주세요.

 

부품문제

위 가이드에서는 MG996R 서보모터를 모두 사용하면 된다고 했지만, 제가 COXA 서보모터의 모터토크가 부족해 DM-S2000MD모터로 바꿨습니다. 이것도 부족하면 어쩌나 싶었는데 다행히 잘 작동하였습니다.

로봇떨림현상

 


정기구학을 이용해 6족보행로봇의 다리 움직이기

기구학에는 정기구학(Foward Kinematics)과 역기구학(Inverse Kinematics)가 있습니다.

정기구학은 각각의 관절각을 움직였을 때 로봇의 다리가 어디에 위치하는 지 알려주는 이론이고, 역기구학은 원하는 위치를 사용자가 제공하면 로봇이 그 위치에 도달하기 위해 각각의 관절을 어떻게 움직여야하는 지 알려주는 것입니다.

 

로봇을 조종하기 위해서 Ps3 컨트롤러의 조이스틱을 이용해 조종하고 x,y,z방향으로 얼마만큼 움직여라!와 같은 명령을 내리므로 역기구학을 통해 관절이 어떻게 움직여야 하는 지 계산해주어야 합니다.

 

정기구학, 역기구학을 이용해 어떻게 다리를 움직이는 지 알아보도록 하겠습니다.

 

- Denavit Hartenberg convention을 사용해 로봇관절의 좌표계설정하기

DH 표현법을 사용해 로봇관절의 좌표계를 설정해야합니다. DH표현법을 알고, DH parameter를 어떻게 계산하는 지 알고계셔야 합니다. 알고있다는 전제하에 설명하면, 좌표계를 설정하기 위해서 두 개의 구속조건을 준수해야합니다.

1. $x_i$축은 $z_{i-1}$축과 수직이다

2. $x_i$축과 $z_{i-1}$축과 만난다.

좌표계설정

 

  저는 좌표계를 다음과 같이 설정하였습니다. 좌표계를 설정하고 link length, link twist, joint offset, joint angle을 계산합니다. 

Link link length(a) link twist(b) Joint offset(c) joint angle(d)
1 L0 90 0 세타1(-90)
2 L1 0 0 세타2(0)
3 L2 0 0 세타3(0)

 

이렇게 좌표계를 설정한 후 동차변환행렬(Homogeneous Transformation Matrix)를 정의하면 됩니다.

 

$$T_{i}^{i-1} =\begin{bmatrix}
\cos\theta_i & -\sin\theta_i\cos\alpha_i & -\sin\theta_i\sin\alpha_i & a_i\cos\theta_i
\\\sin\theta_i & \cos\theta_i\cos\alpha_i & -\cos\theta_i\sin\alpha_i & a_i\sin\theta_i
\\0 &\sin\alpha_i&\cos\alpha_i&d_i
\\ 0 & 0 & 0 & 1 \end{bmatrix}$$

 


역기구학을 이용해 6족보행로봇의 다리 움직이기

 

 

제가 만든 6족보행로봇이 저렇게 생겼는 데 오른쪽 사진의 첫번째를 J1, 고관절이라고 부르고 두번째를 J2, 대퇴골관절 세번째를 J3, 종아리관절이라고 합시다. 고관절의 각도를 알기 위해서 로봇의 위에서 다리를 바라보면 다음과 같습니다.

 

로봇 다리를 위에서 보았을 때(top view)

고관절의 각도는 매우 쉽게 알 수 있는데 J3의 좌표를 알고있으므로(사용자가 제공하는 값), 역탄젠트를 취해주면 고관절각도를 알 수 있습니다.

이제 J2,J3를 살펴봅시다. J1->J3방향으로 P축을 설정해 PZ평면을 2차원평면으로 바라보면 다음과 같습니다.

 

 

이때 $\theta1$과 $\theta2$의 값을 구해주어야 하는데요. $\alpha$는 End-effector(말단부)의 좌표를 알기 때문에 $\tan^{-1}$를 사용해서 구할 수 있습니다. 각 링크의 길이는 상수이고 알고 있는 값입니다. 삼각형의 세 변을 알고있으므로 코사인 제2법칙을 사용해 $\beta$를 구할 수 있고, ($\beta$ - $\alpha$)를 해주면 $\theta1$ 나옵니다. $\theta2$도 코사인 제2법칙을 사용해 구하면 됩니다.

 

고관절 링크를 L0라 하고, 대퇴골 링크를 L1, 종아리 링크를 L2, J2와 End-effector를 연결시킨 선분이 L3라고 하면

다음과 같이 회전각을 알 수 있습니다.

 

로봇을 제작할 때 주의해야할 점은 서보모터 각도를 90도로 맞춘 채 조립해야합니다. 그래야 앞 뒤로 움직일 수 있습니다.