서론
이전 글에서 Ball Balancing을 위한 기구 설계를 끝냈고, 3D 프린터를 가지고 출력까지 마무리 했다. 출력물은 설계한 대로 모두 잘 출력되었으며, 서포터를 제거하고 잘 조립했다. 다행히도 끼워맞춤 공차가 잘 맞았으며 조립에는 이상이 없었다.
하지만 한 가지 큰 문제점이 있었다. 바로 plate를 기울일 때 필요한 Spherical ball joint가 너무 높은 자유도를 가지고 있다는 점이다. 우리가 원하는 움직임음 서보모터에 의해 plate의 한쪽 끝이 위 아래로 움직이는 것을 원했다. 하지만 spheical ball joint로 인해서 위와 x, y 축에서의 2DOF 뿐만 아니라 z축의 회전까지 가능해졌다. 따라서 우리가 원하는 자유도보다 과도한 자유도가 발생해서 오히려 원하는 움직임이 나오지 않았다.
2DOF Universal join

이곳이 문제가 되었던 부분이다. 기존에는 Spherical joint로 기구 설계를 했고, 인벤터의 시뮬레이션에서는 아무런 문제가 없이 잘 작동 되었다. 어쩌면 오히려 자유도가 높아서 원활한 움직임이 나왔다. 하지만 실제로 출력을 해서 작동을 해보려고 하니 자유도가 너무 높아서 원하는 움직임이 나오지 않았다.
그래서 새로 설계한 Universal joint이다. 노란색 부분은 687Z 베어링이다. 베어링을 가지고 설계를 할 때는 끼워맞춤 공차를 꼭 잘 지켜줘야 한다. 안그러면 베어링에 무리가 가서 잘 돌아가지 않을 수 있다. 아무튼 새로 설계한 2DOF 관절을 가지고 시뮬레이션을 했고, 서보모터의 각도에 따라서 내가 원하는 움직임이 잘 나오는 것을 확인했다.
3D 프린터 출력

Universal joint를 새로 설계하는 것 말고도 조립 과정에서의 편의성을 위해서 조금 더 수정을 했다. 3D 프린터의 출력물의 특성상 평평한 면끼리는 순간접착제로 잘 붙지 않는다. 왜냐하면 완전히 평평하지 않고, 모서리 부분이 조금 튀어나와서 접촉면적이 좁기 때문이다. 그래서 그것을 막기 위해서 홈을 파주고 끼워 넣을 수 있는 구조로 만들었다.
또한, 3D 프린터의 출력 방식을 고려해서 다시 설계를 했다. 특히, 서포터가 최대한 생기지 않을 수 있도록 배치를 했으며 설계를 했다. 아무리 3D 프린터가 만들기 힘든 구조롤 만들어준다고 하더라도, 3D 프린터의 출력 방식을 고려해서 설계하게 된다면 보다 더 퀄리티 좋은 결과물을 얻을 수 있기 때문이다.

결국 3D 프린터로 다시 출력을 해야 했다. 지난번과 같이 이번에도 스커트(skirt) 방식으로 출력을 했으며 10시간 20분이라는 시간이 필요했다. 필라멘트도 112.22g으로 꽤나 많은 양을 사용한다. 그래도 이번 출력을 마지막으로 앞으로 더 이상의 출력이 필요하지 않았으면 좋겠다.
출력 결과 및 동작 확인
위의 영상은 3DOF 관절을 사용했을 때와 2DOF 관절을 사용했을 때의 차이점이다. 확실히 3DOF에서는 Z축 회전이 가능하기 때문에 서보모터의 각도가 같아도 다른 결과가 나온다. 이를 통해서 무조건 높은 자유도와 좋은 부품을 쓴다고 해서 내가 원하는 결과가 나오는 것은 아니라는 것을 깨달았다. 오히려 자유도가 높기 때문에 정밀한 제어가 힘들어진다.
재설계
2DOF 관절로 다시 설계를 해서 출력했지만, 여전히 아쉬운 부분이 있다. 작동은 되기는 하지만 특정 각도에서 plate가 움직이지 않고 어딘가 걸리게 된다. 이것의 원인을 분석해보았다.
서보모터의 팔과 plate에 연결되어 있는 Ball Link가 문제였다. 나는 Ball Link의 양쪽에 Ball Joint를 넣어주었다. 즉, 이 서보모터의 자유도는 7자유도가 된 것이다. 하지만 내가 필요한 자유도는 그저 5자유도이다. 이번에도 자유도가 너무 과하게 설계되어 있다. 그래서 이러한 점을 막기 위해서 다시 설계하게 되었다.
2DOF 창문형 프레임

이번에는 아예 구조를 바꾸어 보았다. 서보모터에서 팔을 이용하여 plate를 회전시키는 것이 아니라, 직접 plate에 연결되어 회전시키는 방식이다. 이 구조의 단점은 안쪽에 있는 서보모터가 직접 회전하기 때문에, 바깥쪽에 있는 서보모터에 부하가 많이 가해진다.
또한 각도의 제어 정밀도가 더 낮아진다. 기존의 방식은 서보모터가 90도 회전하는 동안 plate가 약 30도 회전한다. 즉, 서보모터 1도로 plate의 1/3도를 제어할 수 있는 것이다. 하지만 지금의 방식은 서보모터 1도가 plate의 1도를 제어한다. 따라서 정밀한 제어가 어려워졌다.
하지만 이러한 단점들에도 불구하고 이 구조를 선택한 이유가 있다. 아주 직관적이고 단순하며, 확실하기 때문이다. 기존의 방식은 어떤 관절을 사용하느냐에 따라 성능이 달라진다. 또한, 구조가 복잡할 수록 변수가 많아진다. 하지만 위의 2DOF 창문형 프레임의 경우에는 단순한 구조를 하고 있기에, 변수가 적다.

이번 설계를 마지막이라고 생각하고 정말 정밀하게 설계를 진행했다. 로봇팔이 움직일 수 있는 최대 각도를 설계 과정에서 확인하고, plate가 기울어질 수 있는 최대 각도도 모두 확인했다. 단순히 3D 프린터로 출력을 해보면서 피드백을 해야겠다고 생각을 해왔지만, 정밀하게 설계를 할 경우, 다시 뽑지 않아도 되기 때문에 출력 시간을 줄일 수 있다는 것을 깨달았다.

구조가 단순해서 그런지 설계 시간도 많이 단축되었다. 기존의 설계들은 기본적으로 18시간씩 걸린다. 출력도 한 번에 안 돼서 두 번씩 출력해야 한다는 귀찮음이 있었다. 하지만 이번 구조 설계에서는 간단하고 직관적인 덕분에 설계 시간과 출력 시간 모두 단축되었다.
마무리
오늘은 내가 기구 설계를 하면서 느낀 점을 정리해보았다. 무언가를 설계한다는 것은 원하는 동작을 할 수 있도록 적당한 자유도와 제한을 사용해야 한다. 또한, 설계를 하는 과정에서 충돌이나 가동범위 등을 미리 확인하여 정확하게 설계해야 시간과 자원을 아낄 수 있다는 점을 느꼈다. 앞으로도 설계를 할 일이 있을 텐데, 그때마다 오늘 느낀점을 통해서 정밀하고 엄밀하게 설계를 해야겠다.
이제 진짜 설계와 제작은 모두 끝났다. 앞으로 회로 설계와 서보모터 제어, 카메라 제어의 과정만 남아있다.
'Robotics' 카테고리의 다른 글
[Ball Balancing] 5. 아두이노 서보모터 2개 제어 코드 (MG996R) - 매트랩 (0) | 2025.01.13 |
---|---|
[Ball Balancing] 4. 아두이노 회로 - 3선 서보모터, 가속도센서 (1) | 2024.12.29 |
[OpenCV] 3. 객체 탐지를 위한 이미지 전처리 프로세싱 (Image Processing) (1) | 2024.12.03 |
[Ball Balancing] 2. 인벤터 도면으로 3D 프린터 (3DP-110F) 출력하기 (0) | 2024.11.23 |
[Ball Balancing] 1. 인벤터로 동작 시뮬레이션 확인하기 (1) | 2024.11.22 |