3D 프린터, 아두이노, 라즈베리파이로 로봇팔 만들기
연초, 졸업작품 시즌이 다가오면서 아이디어를 정할 때가 되었다. 많은 것들을 만들고 싶었지만 내가 배운 것들을 최대한 많이 이용하고 싶었다. 그래서 정한 아이디어.
'범용 로봇팔 펌웨어'
로봇팔은 최신식 공장에서 쓰이는 그 로봇팔이 맞긴 한데, 그것을 구입해서 펌웨어만 만들기에는 가격이 너무 높다. 그래서 로봇팔을 결국 만들어야하는데, 이렇게 되면 하드웨어도 만들어야하고 결국 펌웨어를 만드는 것이기 때문에 소프트웨어(?)도 다뤄야한다. 내가 원래 추구했던 하드웨어-소프트웨어를 모두 다뤄볼 수 있는 좋은 아이디어였다. 로봇팔을 우선 만들고, 그것을 스마트폰으로도 컨트롤 할 수 있는 펌웨어를 만드는 것이 목표다.
그런데 기계요소에 대해서는 잘 모르기 때문에 오픈소스를 찾기 시작했다. 그렇게 찾은 BCN3D MOVEO. 3D프린터로 인쇄할 수 있도록 3D파일도 제공하고 어떤 볼트, 너트, 모터, 베어링을 활용할지 리스트도 제공하고 있다. 설치 순서도 pdf로 잘 정리되어있다. 그렇게 인쇄를 시작했다.
인쇄를 끝내고 설명서에있는 부품리스트를 여기서 구입하고 조립을 완료했다.
제법 그럴싸하게 나왔다. 그리고 설명서에 있는 모터 드라이버를 구입하고 설치하니 잘 움직였다.
그리고 이제 본 게임 펌웨어를 만들어야한다.
나는 스마트폰으로도 컨트롤 할 수 있는 UI를 원하기 때문에 아두이노로는 어렵다고 판단했다. 그래서 라즈베리파이를 컨트롤러로 선택하고 모터드라이버를 구동하기 위핸 코드 작성을 시작했다.
라즈베리파이를 웹서버로 활용해서 인터페이스를 구현하고, 데스크탑, 스마트폰으로 접속해서 제어하는 구조를 고안했다. 그런데 유저가 편리하게 이용할 수 있으면 좋겠다는 생각으로 3D 뷰어를 만들었다.
각 모터를 제어할 수도 있고 직관적으로 전후좌우상하를 조절할 수 있다.
모션을 저장하고 불러와서 반복시킬 수도 있다.
그리고 이것을 이용해서 붓으로 그림을 그리고자 했다. 따라서 로봇팔을 큰 틀에서 움직일 수 있도록 프레임을 제작했다.
큰 틀에 달린 로봇팔을 움직이게 하기 위해 랙기어를 제작하기로 했다. CNC라우터를 이용해 목재를 재단했다. 그리고 락카로 스틸느낌이 나도록 칠해주었다.
그리고 3D프린터로 피니언을 제작하고 스텝모터에 달아주었다.
로봇팔 자체를 큰 틀 내에서 움직이게 하기 위해 아두이노를 사용했다.
라즈베리파이와 아두이노는 usb 시리얼 통신을 이용해 통신한다. 라즈베리파이가 로봇팔을 이동시키라고 아두이노에게 명령을 내린다. 그리고 끝에 붓을 달아주고 그림을 그리기 시작했다.
그리고 고암 이응노 선생님의 군상 중 사람 그림을 수집하고 GAN 알고리즘을 이용해 새로운 그림을 그릴 수 있도록 학습하고 그릴 수 있도록 진행하고 있다.
물론 아직 AI로 그렸다기엔 사람의 손이 너무 많이 들어갔다. 점점 더 노력하면 스스로 그릴 날이 오겠지. 이렇게 졸업작품이 마무리 되었다.
작성한 코드는 범용성이기에 다른 로봇팔에도 적용이 가능하지만 코드 수정이 필요하고 BCN3D MOVEO는 바로 적용이 가능하다. 코드는 깃헙에 업로드 되어있다.
이 프로젝트를 진행하면서 교육용으로 사용하면 다양한 분야를 체험할 수 있겠다고 느꼈다. 워크샵을 하면 직접 체험하며 넓은 분야를 느낄 수 있겠다.