볼봇 모델링

17
827

처음 볼봇을 만들기 시작한 건 13년도 학교 수업에서 마이크로 프로세서2 과목을 들으면서 과제로 시작 했다. 당시에 이 볼봇을 생각하게 된 계기는 공 위에서 중심을 잡으면서 접시 돌리기를 하는 곡예사가 떠올라서 로봇으로 한 번 만들어 보자 생각 했다. 인터넷에 찾아보니 이미 세상에 존재했었고 유투브를 검색해보니 외국에선 이미 많은 볼봇들이 있었다. 하지만 내가 만들고 싶었던 것은 공 위에서 균형을 잡으며 위에서는 막대기가 쓰러지지 않게 또 다른 제어를 동시에 하는 것이 최종 목표였다!

그렇게 시작된 볼봇 프로젝트.. 당시에 교수님 말하시길 그건 졸작으로 하는게 어떻겠냐고 하셨었다. 그 말을 듣고 더욱더 의지가 불타올랐다. (나란 놈은 이것이 문제다. 남들이 하는 것, 쉬운 것엔 별 흥미가 안 생기고 어려운 것, 희귀한 것에만 끌린다.)

마이크로 프로세서1 과목에서 당시 과제물로 만들었던 작품이 있었다. 그 작품은 자동차가 가속 운동(가감속, 방향전환 등)을 할 때,  자동차 내부에 컵받침을 제어하여 물이 밖으로 튀지 않도록 제어 해보자라는 생각에 RC카에 기구부를 제작하고 8051에 어셈블리어를 이용해서 제작했었는데, 기구부가 불안정하여 소프트웨어는 무의미 했었다. 이 때 얻은 교훈은 최우선적으로 기구부를 잘 설계해야 한다는 것이었다.

그리하여 나는 기구부 설계를 할 때 상당히 고심했다. 몸체의 크기, 몸체와 바퀴가 이루는 각도, 바퀴의 크기, 체결 방법, 모터와 바퀴 연결을 위한 커플링 제작 등등.. 가장 중점을 둔 부분은 결합 부위의 유격이 발생하지 않도록 한 점이다. 그 당시 급하게 생각한 방법이 아래 사진처럼 본체와 바퀴 결합 부위를 끼워넣기 방식으로 체결하는 것이었다.

결과를 말하자면 내가 얻고자 하는 것은 확실했다. 유격이 조금도 존재하지 않았다. 이 방식의 단점은 모터 유지 보수를 해야할 때 끼워맞춤 용으로 사용하는 막대를 제거하기가 상당히 힘들다. 본체 위에 PCB가 올라가기 때문에 간섭이 발생해서 더 힘들다. 유격이 없는 부분에 대해선 만족하지만 유지보수가 힘든점 때문에 차후 새로 제작하게 된다면(?) 이 부분을 나사를 체결하는 방식으로 바꿀 생각이다.

위 사진의 파란색 막대가 끼워넣기용 막대이다.

당시에 나는 인벤터, 솔리드웍스, 카티아 등 3D모델링 프로그램을 다룰줄 몰라서 전지를 사다가 1:1로 도면을 그리고 아크릴 가공 업체에 맡겼다. 커플링 부분은 초기에 설계 했던것에 문제가 있어서 수정하여 알루미늄으로 가공했다.(위 모델링과 아래에 첨부한 파일은 인벤터로 모델링 했다.)

이 후 AVR에 추가 회로를 꾸미고 자이로, 가속도 센서를 각각 달아서 칼만필터나 상보 필터로 융합하려 했는데, 이것 자체도 쉽지 않았고 결과가 좋지 않았다. 무엇보다 이 때 전공만 가득채워서 21학점 들었는데, 거의 모든것에 무지했던 나에게 쉬운 건 하나도 없었다.

그렇게 나는 학점도 작품도 모두 망했었고, 언젠간 완성하겠다는 다짐과 함께 고이모셔 두었던 볼봇을 작년 10월 경에 다시 한 번 세상에 빛을 보여줬고, 올 해 3월 말쯤에야 균형잡기에 성공을 했다.

모델링 파일은 아래 링크를 눌러 다운받을 수 있다.
(혹시 사용하는 프로그램에서 열리지 않으면 댓글을 남겨주세요. 변환하여 드리겠습니다.)

다운로드 : Modeling_of_Ballbot

guest
17 Comments
newest
oldest
Inline Feedbacks
View all comments
ballrobot want
ballrobot want
2020년 4월 6일 17:00

안녕하세요. 엘큐님.
저도 L298드라이버를 사용하고있습니다. IMU는 MPU6050을 사용하고있어요.
제어보드는 아두이노 메가를 사용중입니다.
L298드라이버에 외부전원 12V를 인가하였고, IMU값에 따라서 모터가 돌게 하였습니다.

근데, 잘되다가 아두이노가 먹통이되네요. 중간에 IMU값을 살펴보니 확 튀는값들이 존재하더라구요.

엘큐님은 이런 현상이 없었나요?
어떻게 해결해야할까요?

이상혁
이상혁
2017년 6월 5일 14:41

안녕하세요. 볼봇에 대해서 공부하고 있는 대학생입니다. 현재 3개의 옴니휠을 사용하여 제어를 하려고하는데 가장 큰 문제가 동역학의 계산이 막혀서 다양한 자료를 찾아보고 있습니다. 혹시 운영자님께서는 프로젝트할 때 동역학을 계산하셨나요? 만약 하셨다면 어떤 자료를 참고 하셨나요? 궁금합니다!

박정석
박정석
2017년 5월 14일 13:08

안녕하세요. 저도 볼봇에 관심을 갖게 되어 자료 공부하던 중 찾아오게 되었습니다.
볼봇의 균형제어를 위해 엔코더가 장착된 dc모터가 필요한 것으로 알고있는데,
엔코더용 컨트롤러를 따로 구입해야하는지..
ATmega128이나 아두이노에 직접 엔코더를 연결해서 컨트롤은 불가능한가요?
엔코더dc모터를 어떻게 연결하고 제어하셨는 지 궁금합니다.