ROS2를 활용한 6축 로봇 제작 가이드 1

2 minute read

재미있는 주제 하나 가지고 왔습니다.
오드로이드로 재밌는걸 만들어볼까 하다가 집에 있던 기계팔 하나 집어왔습니다.


6axis
[picture 1] Six-Axis robot arm


구매는 link 혹은 국내 사이트에서도 판매합니다.
모터 드라이버( pca9685 )와 모터( MG996R 6개)는 별도로 구매해야 합니다.

제어는 C 나 파이썬으로 제작해도 되지만, ros2를 사용해 보고 싶어서 ros2를 선택했습니다.
조금씩 시간을 들여서 하나씩 기능도 추가하고 완성해 보겠습니다.

준비물은 다음과 같습니다.

- Odroid C4       ... (x1)
- MG996R          ... (x6)
- PCA9685         ... (x1)
- Robot frame set ... (x1)

C4 보드에서 pca9685를 사용할 수 있는 환경을 미리 세팅해야 합니다.
포스트패키지 문서를 참고해서 미리 세팅합니다.
OS는 C4 ROS2 이미지를 사용합니다.

조립하기

이 제품의 조립 메뉴얼이 놀랍게도 없습니다..
작성 안하려고 했지만 제가 조립했다 풀었다를 계속 반복했기 때문에 정리했습니다.

아래 사진처럼 부품들을 조립해 줍니다.

axis6-base axis6-arm
[picture 2] assembly 1


pca9685 보드에 MG996R 모터 6개를 연결해 줍니다.
연결한 후 프레임에 붙여 줍니다.
저는 프레임 포장상자에 있던 스펀지를 잘라 붙였습니다.

axis6-pca9685 axis6-assembly-base
[picture 3] assembly 2


처음에 조립했던 부분들 합쳐서 팔 완성합니다.

axis6-assembly-arm
[picture 4] assembly 3


그리퍼 부분 조립합니다.

axis6-gripper
[picture 4] assembly 3


여기까지 잘 따라 왔으면 다음 사진처럼 조립이 되었을 겁니다.

axis6-ready
[picture 5] parts


피드백 제어로 오토 캘리브레이션 같은건 없습니다.
기능을 점진적으로 추가할 예정이여서 지금은 모터 기본값으로 돌려놓고 조립하겠습니다.

axis6-cali
[picture 6] motor cali


패키지 소스코드를 다운로드 합니다.
이 코드는 완성본이며, 포스팅에서 처음부터 하나씩 채워나갈 것입니다.

$ git clone --recurse-submodules https://github.com/how2flow/ros2_axis6


소스코드를 다운로드 받는다고 바로 프로그램들이 실행되지 않습니다.
위에서도 언급했지만 ros2 패키지 동작 환경을 README 를 참고하여 구성해 줍니다.

전체 회로도입니다.

axis6-circuit
[picture 7] circuit


회로를 구성할 때 DIP-SWITCH 부분을 GND로 묶어줍니다.

axis6-cali-circuit
[picture 8] circuit for test


사진과 다를것 없이 브레드보드는 그대로 두면 욉니다.

pca9685에 외부 전원(6V/3A 이상)을 연결합니다.
다운로드 받은 ros2 패키지를 빌드하고 프로그램을 실행합니다.

$ cd ~/robot_ws
$ ln -s ~/ros2_axis6 .
$ ln -s ~/ros2_axis6/how2flow_interfaces .
$ cb
$ source ~/.bashrc
$ ros2 run axis6 operator



그리퍼를 제외한 나머지 모터의 날개를 다음사진처럼 연결하고 고정합니다.

axis6-cali-check1
[picture 9] calibrated motors



모터 날개를 고정한 사진입니다.

axis6-cali-check2
[picture 10] calibrated motors 2


사진에서는 모터가 외부전원에 연결 되어 있지 않지만, 조립할 때 연결되어 있어야 합니다.



그리퍼는 이렇게 고정합니다.

axis6-cali-end
[picture 11] calibrated motors 3



그리퍼를 팔에 연결할 때는 길이 더 짧은 볼트를 사용합니다.
제품 구매시 같이 들어있습니다.

axis6-link-bolt
[picture 12] endeffector bolt


그리퍼를 조립합니다.
사진에 나온 순서대로 조립합니다.

axis6-link-arm-end
[picture 13] link endeffector 1


axis6-link-arm-end2
[picture 14] link endeffector 2

팔 프레임에 모터를 고정합니다
역시 사진 순서대로 조립합니다.

axis6-assembly-motor1
[picture 15] link motor 1


axis6-assembly-motor2
[picture 16] link motor 2


axis6-assembly-motor3
[picture 17] link motor 3


조립을 이렇게 하시면 됩니다.

axis6-assembly-arm
[picture 18] assembly arm


이제 아래 기둥과 팔을 연결합니다.

axis6-assembly-arm2
[picture 19] link arm and base


나머지 모터를 연결하면 다음과 같은 모습이 나옵니다.

axis6-all1
[picture 20] assembly 2


선정리가 가능하면 하는게 좋습니다.

axis6-all2
[picture 21] clean up the wires



전체 회로도를 다시 보고 회로 구성합니다.
저는 브레드보드 위에서 회로 구성했습니다.

axis6-circuit
[picture 22] circuit


axis6-circuit1
[picture 23] breadboard circuit 1


axis6-circuit2
[picture 24] breadboard circuit 2






이제 패키지를 다시 실행해서 로봇팔이 초기 위치로 이동하는지 확인합니다.

$ ros2 run axis6 operator

Leave a comment