서론
설계라는 과정은 머릿속에 있는 것을 그리거나 모델링해서 실제로 눈으로 볼 수 있게 하는 과정이다. 아무리 머릿속에서 완벽하게 상상했다고 하더라도 실제로는 공차가 맞지 않다거나 단차가 생기는 등의 변수가 발생할 수 있다. 따라서 직접 그려보고, 더 정확하게는 치수를 입력해서 모델링한 뒤 시뮬레이션을 통해서 동작을 확인하는 것이 가장 좋다.
나는 3D 프린터로 출력을 하기 위해서 모델링을 했다. 하지만 시뮬레이션을 돌리지 않았고, 나의 설계가 완벽할 것이라고 믿었다. 하지만 실제로 3D 프린터로 출력을 한 뒤, 조립을 해서 확인을 해보니 내가 생각했던 움직임이 나오지 않았다.
사실 약간의 공차와 단차는 사포질을 통해서 해결할 수 있다. 하지만 애초에 불가능한 관절의 움직임을 해결하는 것은 쉽지 않다. 따라서 인벤터의 시뮬레이션을 통해서 이 동작이 가능한지 확인하는 것이 중요하다.
관절의 자유도 (DOF, Degree of Freedom,)
내가 이번에 설계하고자 하는 Ball Balancing의 경우에는 공이 올라가는 plate가 3 DOF에서 원활하게 움직여야 한다. 하지만 처음 설계할 때는 1 DOF인 Revolute 관절을 두 개 사용해서 2 DOF의 Universal 관절을 만들었다.
이렇게 plate의 바로 아래에 687Z 베어링을 사용해서 Universal 2DOF 관절을 만들었다. 그리고 그것을 Y 프레임에 연결해서 지지대에 고정하려고 했다. 2 DOF를 사용해도 사실 움직이는 데는 이상이 없다. 하지만 동작이 깔끔하지 않다.
게다가 이 plate를 컨트롤하는 MG996R 서보모터에 연결된 링크(검정색 뼈다귀 모양)가 가장 큰 문제였다. 저 링크는 Revolute 1 DOF 관절이기 때문에 회전만 있을 뿐 좌우로 움직이지 못한다. 하지만 plate가 회전하는 과정에서 1D 방향의 움직임이 추가로 필요하다.
하지만 나는 그 사실을 모르고 저 부품들을 모두 3D 프린터로 출력했다. 출력 과정은 총 18시간이 들었으며, 필라멘트도 정말 많이 사용했다. 하지만 이것은 동작할 수 없는 실패한 설계였고, 나는 결국 출력물을 모두 버렸다.
볼 조인트와 볼 링크 (Ball joint and ball link)
볼 조인트
plate가 회전하는 과정에서 서보모터와의 단차가 생긴다는 것을 확인했다. 그래서 이것을 해결하기 위해서 ball joint와 ball link를 사용하려고 한다. ball joint는 Spherical 3 DOF 관절이다.
Ball joint를 모델링하는 것은 간단하다. 우선 구를 하나 만들고, 그것을 감싸는 구를 하나 더 만들어서 어셈블리하면 된다. 이때, 각 구의 지름에는 0.5mm ~ 1mm 정도의 공차를 넣는 것이 좋으며, 감싸는 구를 만들 때는 위의 사진과 같이 홈을 파서 구가 원활히 들어가도록 설계하는 것이 좋다.
이것을 인벤터에서 시뮬레이션 해보는 방법은 내접 구속조건을 사용하는 것이다. 나는 두 구의 지름 공차를 0.5mm로 주었다. 따라서 내접의 간격을 0.25mm로 주게 되면, 구가 이리저리 움직이지 않고, 고정된 채로 주변을 회전만 하게 된다.
볼 링크
볼 링크는 꽤나 진보된 디자인이다. 원래라면 그냥 링크 형식으로 1DOF를 가질 것이다. 하지만 각 링크의 끝에 ball을 넣음으로써 3 DOF를 가지는 링크가 된다. 이로써 plate가 회전하면서 생기는 서보모터와의 단차를 ball link가 같이 회전하면서 해결해 줄 것이다.
사실 ball link는 꽤나 비싼 부품이다. 하지만 우리에게는 3D 프린터가 있고, 우리가 만들고자 하는 복잡한 디자인을 얼마든지 출력할 수 있다. 따라서 이렇게 복잡하고 비싼 부품도 쉽게 모델링해서 출력하여 사용할 수 있다. 이것이 우리가 모델링을 배우고 3D 프린터를 사용하는 이유이다.
Ball link를 설계할 때도 마찬가지로 공차를 0.5mm ~ 1mm 정도 넣어줘야 한다. Link에 ball이 들어갈 수 있도록 지름 공차를 주어 구 모양으로 파주면 된다. 그리고 안쪽 Ball에는 축이 들어갈 수 있도록 원통형 구멍을 파주었다.
시뮬레이션을 위해서 구속을 걸어주는 것은 위에서 설명한 Ball joint와 비슷하다. 볼 조인트와 같이 내접을 이용하면 볼 링크의 관절이 회전할 것다. 그리고 링크를 서보모터와 plate와 연결할 때는 축 일치 구속과 면 간격 구속을 적용하면 된다.
인벤터 동작 확인 시뮬레이션
위의 영상은 인벤터로 동작 확인을 해보는 시뮬레이션이다. 여러 부품들을 .ipt 파일로 모델링하고, 그것들을.iam 파일로 어셈블리한다. 어셈블리를 할 때 구속조건을 적절하게 준다면 원하는 동작을 확인할 수 있다.
위의 영상처럼 동작을 확인하는 방법은 간단하다. 그냥 움직임을 보고자 하는 객체를 드래그하면 된다. 그러면 그 객체가 움직이거나 회전할 수 있는 방향으로 움직이거나 회전한다. 만약 원하지 않는 움직임이 나오거나 원하는 움직임이 나오지 않는다면 그것은 구속을 잘못한 것이다.
마무리
오늘은 Ball Balancing Project를 위한 프레임을 설계하고 모델링한 뒤 시뮬레이션을 하는 과정까지 해보았다. 머릿속에 있는 구조를 바탕으로 내가 만들고자 하는 것을 설계하고 모델링했다. 이 과정에서 내가 생각한 구조물이 가능한지 불가능한지를 직접 눈으로 확인해 보고 시뮬레이션할 수 있었다.
다음 글에서는 모델링한 설계를 가지고 3D 프린터로 출력하는 과정을 보여주고자 한다.
'Robotics' 카테고리의 다른 글
[OpenCV] 3. 객체 탐지를 위한 이미지 전처리 프로세싱 (Image Processing) (1) | 2024.12.03 |
---|---|
[Ball Balancing] 2. 인벤터 도면으로 3D 프린터 (3DP-110F) 출력하기 (0) | 2024.11.23 |
[Ball Balancing] 0. 아두이노 프로젝트로 공 균형 잡기 도전 (1) | 2024.11.15 |
[OpenCV] 2. 아루코마커 인식하기 (ArUco marker) (0) | 2024.11.14 |
[OpenCV] 1. 카메라 캘리브레이션 (Camera Calibration) (1) | 2024.11.13 |