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, 종아리관절이라고 합시다. 고관절의 각도를 알기 위해서 로봇의 위에서 다리를 바라보면 다음과 같습니다.

고관절의 각도는 매우 쉽게 알 수 있는데 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도로 맞춘 채 조립해야합니다. 그래야 앞 뒤로 움직일 수 있습니다.
'프로젝트 > 6족보행로봇 프로젝트' 카테고리의 다른 글
| 6족보행로봇 작동을 위한 전기/전자 내용 (0) | 2022.11.06 |
|---|---|
| 6족보행로봇 제작과정 및 원리설명(2) (0) | 2022.11.06 |
| esp32와 Arduino간에 Serial 통신하기 (0) | 2022.07.26 |