본문
모델링을 이용한 뱀 로봇 연구
경기북과학고 공학 R&E팀(최우수 수상)
안녕하세요! 저희는 '수학적 모델링을 이용한 뱀 로봇 제작'이라는 주제로 연구한 경기북과학고 수학 R&E '팀 틀꿈틀꿈'의 김준환, 박병하, 안은성, 한승민입니다. 우선 [R&E For You 웹진]에 저희의 이야기를 실을 수 있게 되어서 정말 영광입니다. 이 글을 통해서 저희 R&E의 내용과 뒷이야기, 그리고 R&E가 저희에게 미친 영향을 여러분에게 전해보려고 합니다. 참고로 저희 R&E 결과보고서는 과학영재 창의연구(R&E) 지원센터 홈페이지 자료실에서 확인하실 수 있습니다.
주제 선정의 과정
저희 팀은 고등학교 1학년 때 3명이서 연구를 시작하여, 2학년 때 한 명이 추가되었고 그렇게 4명이 한 팀을 이루어 연구를 시작하게 되었습니다. 저희 연구 주제 선정 과정을 요약하자면 '어떤 연구든 내가 해 보고 싶은 연구를 하자'라는 것입니다. 일례로, 병하는 본교의 5개 R&E 분과(수학, 물리학, 화학, 생명과학, 지구과학, 정보)중 1순위로 정보과를 지원했지만 '수학' 분과로 오게 되었습니다. 하지만 주제 선정 과정에서 소신 있게 로봇을 하고 싶다는 의견을 냈고 결국 원하는 것을 연구할 수 있었습니다. 최종 선정된 연구주제는 '수학적 모델링을 이용한 뱀 로봇 제작'이었습니다. 이 주제는 한 친구가 먼저 제안한 의견이었지만, 팀원들 역시 모두가 지향하는 것이 반영된 결과였습니다. 병하와 은성이는 로봇 관련 R&E를 원했고, 준환이는 수학과 프로그램을 이용한 분석을 하고 싶어 했습니다. 서로가 원하는 것들을 모두 존중할 수 있는 주제가 무엇이 있을지 고민하던 중 떠오른 주제인 거지요.
다만 연구가 겉으로 보기에도 어려워 보였던 만큼, 정말 실현 가능성이 있는지 확신이 필요했습니다. 그래서 본교의 정보 교과 선생님들께 찾아가 실현 가능한 연구인지 조언을 구했고, 선배 중 다관절 로봇을 만든 R&E 팀이 있다는 소식을 듣고 비로소 주제를 확정할 수 있었습니다.
연구를 진행하기 전에
연구를 진행하기 전, 먼저 각자 자신이 할 수 있고 하고 싶은 역할을 알아보고 나누었습니다. 은성이의 경우 하드웨어 제작과 하드웨어 제작을 통한 시뮬레이션 및 코딩을 할 수 있었고, 준환이는 뱀 로봇의 알고리즘 설계, 최적화된 움직임 설계, 소프트웨어 메인을 담당했습니다. 그리고 병하는 기존 선행연구들과의 차이를 통한 앞으로의 연구 동향 분석, 뱀 로봇의 움직임 데이터 셋 제작을 맡게 되어 각자의 강점을 살려 보다 효율적인 연구를 진행할 수 있었습니다. 또한, 각각의 파트가 있다고 하더라도 서로가 서로에게 질문하고 모르는 점을 개선할 수 있도록 자기 분야가 아닌 다른 분야에서도 지식을 쌓았습니다. 예를 들면, 아두이노와 매트랩에 관한 서적을 구입한 후 서로 모르는 것을 알려주는 협력 학습을 통해 기술적 지식을 쌓아 갔습니다. 승민이는 2학년이 되어서야 뒤늦게 연구에 합류했지만, 평소 로봇을 좋아했고 연구 일지를 바탕으로 연구를 빠르게 이해했습니다. 다양한 분야에 지식이 있던 승민이는 파이썬, 하드웨어 개선에 다양한 의견을 내며 기존에 있었던 문제들에 대한 해결책을 제시해 주어 많은 도움을 주었습니다.
뱀의 움직임을 어떻게 분석할 수 있을까?
먼저 기존에 있던 연구들에서 뱀의 움직임을 어떻게 연구하고 구현하였는지 알아볼 필요가 있었습니다. 선행 연구에서는 실제 뱀의 운동을 보고 서보모터를 활용하여 각 로봇 관절의 방향을 다르게 함으로써 3차원 운동을 구현하였습니다. 2차원 평면에서 움직일 경우, 사인파의 형태로 움직여 구현하는 경우가 많았습니다. 그리고 저희는 3차원에서의 움직임을 구현하기 전에 2차원에서 움직임을 먼저 실현해 보자는 의견을 모았습니다. 그리고 기존 연구들에서는 하드웨어에 집중했다면 저희 연구에서는 소프트웨어에 집중하는 차별점을 두기로 했습니다.
이에 뱀의 움직임을 나타낸 영상들을 찾기 시작했고 인터넷 동영상 플랫폼 등을 통해 여러 가지 뱀의 움직임이 나타난 영상들을 찾을 수 있었습니다. 그러나 대부분의 뱀 영상이 기울어지거나 뱀이 잘려 있어 적합한 영상을 찾기 힘들었습니다. 더욱이 저희는 좁은 공간을 유연하게 다닐 수 있는 뱀 로봇이 목표였기 때문에 조건에 맞는 가느다란 뱀을 찾아야 했습니다. 그래서 적합한 영상을 모으는 데에 일주일 넘게 걸렸던 거 같네요. 이후 저희는 PASCO CAPSTONE을 활용해 뱀들의 영상을 트래킹하여 머리의 이동 경로를 구하고 이를 매트랩으로 분석하고자 했습니다. 예상대로 자동 트래킹이 잘 되었으면 좋았겠지만, 머리 부분이 트래킹 되는가 싶다가도 트래킹 되는 부분이 몸통, 꼬리 쪽으로 자꾸만 바뀌었습니다. 이때 병하가 수동으로 뱀의 움직임 데이터를 얻어냈습니다. 매트랩 분석은 준환이가 맡았는데, 분석 이후에 어떻게 분석했는지, 어떤 결과가 나왔는지 저희끼리 미니 설명회처럼 진행했던 기억도 납니다.
결과적으로 뱀의 움직임이 푸리에 급수 형식을 따른다는 것을 파악할 수 있었고, 추후 아두이노에서도 식의 계산이 가능하도록 하기 위해 n=2인 식 f(x) = ksin(wx) + lsin(2wx) + mcos(wx) + ncos(2wx) 을 다루기로 결정했습니다.
알고리즘의 큰 그림은 생각보다 간단하게 잡을 수 있었습니다. 은성이의 세미나에서 서보모터가 어떻게 동작하는지 배웠기 때문에, 저희가 세운 함수식과 각도를 어떻게 연관 지을지 고민해 보았고, 접선의 기울기라는 키워드를 통해 도함수 값에 아크탄젠트를 씌우자는 아이디어를 낼 수 있었습니다. 다만 알고리즘이 세워진 이후 문제점을 발견했는데요. 시간에 따라 아크탄젠트로 계산한 각도를 모터에 주게 되면, 각도 값이 쌓이는 효과가 나타나서 예상보다 훨씬 큰 각도의 움직임을 가지게 된다는 것이었죠. 이 부분을 어떻게 해결할지 고민하는 데에도 꽤 오랜 시간이 걸렸습니다. 결국 준환이가 스텝마다 축을 돌려준다는, 생각보다는 단순한 해결 방법을 제시했습니다. 그렇게 알고리즘은 비로소 현재의 형식을 갖추게 되었습니다.
이후에 한국과학창의재단의 전문가 컨설턴트 풀을 통해 연구 과정의 피드백과 여러 가지 배움을 얻을 수 있었습니다. 일례로, 연세대학교 기계공학부의 백윤수 명예교수님께서 뱀의 이동 경로를 푸리에 급수로 결정한 것에 대해 '수치로' 왜 뱀의 경로가 푸리에 급수와 유사하다고 판단할 수 있는지 증거를 제시해야 한다고 하셨습니다. 이 조언 덕분에 평균제곱오차(MSE)를 계산하여 뱀의 이동 경로가 푸리에 형식과 가장 비슷하다는 과정을 추가할 수 있었습니다.
또한 위에서 모터의 이동 각도를 도함수에 아크탄젠트를 씌워서 결정한다고 했는데, 그 방법의 이름이 Roll-Pitch-Yaw의 Yaw 각도라는 것을 알게 되기도 했습니다. 그리고 아크탄젠트는 제2, 3사분면의 각은 제어하지 못한다는 조언을 통해 공학이 눈에 보이지 않는 예외를 처리하는 것이 중요하다는 것을 깨닫게 되기도 했습니다.
이제 알고리즘을 세웠지만, 막상 식의 계수를 확정하지 못했다는 문제가 있었습니다. 처음에는 식의 각 계수가 어떤 역할을 하는지 확실히 알기 위해 지오지브라에서 식의 계수를 바꿔보았고, 뱀 로봇의 구조에 따라 사인 및 코사인의 변수의 계수를 정해야 함을 알게 되었습니다. 하지만 사인 및 코사인의 계수를 정하는 것은 쉽게 해결되지 않았습니다. 예전 연구 자료에서 피팅 된 계수와 뱀의 생김새를 연관 지어 보려고 했으나, 아무런 연관성을 찾지 못했습니다. 그래서 생각한 것이 최적화였습니다. 선정된 알고리즘은 유전 알고리즘으로, 다변수를 한 번에 파악하기 쉽고 인터넷에 자료도 많아 배우기도 쉽다는 것이 그 이유였죠. 다행히도 이전 지오지브라 분석 과정에서 이 계수들에 따라 그래프의 진동 양상이 바뀐다는 것을 알고 있었기 때문에 최적화의 목표를 로봇 동선과 모터 부담의 최적화로 결정할 수 있었습니다. 그래서 적합도 식을 '곡선의 길이 + 곡선 위 자연수 점에서 도함수 값'으로 할 수 있었죠. 곡선의 길이는 심프슨 방법을 이용했는데요, 여기에 또 뒷이야기가 있습니다. 당시 조기졸업 평가를 준비하느라 심프슨의 방법을 공부했던 준환이가 심프슨 방법을 한 번 코드에 적용해 보고 싶다고 말했기 때문에 이용했었죠.
모든 준비가 끝났으니 아두이노 코드로 구현할 일만 남았습니다! 라고는 하지만 알고리즘 설계보다 이 과정이 더 어려웠던 거 같아요. 코드의 구성을 설계하고 바로 코딩 작업에 돌입했지만 로봇은 움직이지 않았습니다. 이전의 문제 상황에서는 무엇이 문제인지 감이 오기라도 했지, 이 상황은 전혀 가늠되지 않았습니다. 다만 중요한 것은 꺾이지 않는 마음이잖아요? 모든 코드에 디버깅을 하는 강수를 뒀습니다. 결국 하드웨어와 코드가 잘 맞지 않아서 일어나는 문제라는 것을 알게 되었고, 코드를 다시 짜야 했습니다. 그리고 코드를 돌렸는데, 로봇이 움직이긴 했지만 문제가 또 발생했습니다. 모터의 초기 각도가 다 제멋대로였죠. 처음에는 단순 AX-12A의 모터 문제일 것이라 판단해 최대 전압도 걸어보고, 부팅을 처음부터 해봤는데도 해결되지 않았어요. 그러던 중 ROBOTIS의 e 매뉴얼을 보고 다이나믹셀 위자드를 찾아내 해결해 냈습니다. 여담으로, 준환이의 제안으로 모터에 부하가 걸리지 않도록 모터 최대 회전각을 제어하는 코드를 추가하기도 했습니다.
뱀 로봇 제작 중 시행착오
저희 R&E팀은 ROBOTIS의 AX-12A라는 서보모터를 사용하여 기본적인 로봇의 틀을 제작했습니다. 브래킷을 이용하여 모터를 모두 연결하였는데 이 과정에서 브래킷에 볼트를 체결하는 과정에서 상당한 어려움이 있었습니다. 볼트가 홈에 잘 맞지 않아 볼트가 들어갈 길을 힘을 주어 뚫어주며 하나하나 체결했습니다. 이 과정에 상당한 시간이 들어서 모터 한 개에 두 개의 볼트를 사용하기로 결정했습니다.
한편 아두이노 메가보드를 컨트롤러로 하여 이를 부착하기 위한 위치를 선정하는데 고려해야 하는 요소들도 정말 많았습니다. 로봇의 맨 앞에 좌우 장애물 사이의 거리를 판단해 줄 라이다 센서가 있고, 이와 모든 모터들이 아두이노에 연결되어야 했기 때문에 로봇의 모터 중 관절에 영향을 주지 않는 위치에 아두이노를 부착하였습니다. 또한 아두이노에 전력을 공급해줄 리튬이온 배터리의 무게가 매우 무거웠기 때문에 아두이노 무게를 고려하여 무게 분배를 고르게 해주어야 했습니다.
DC모터를 구동시키기 위한 스위치 회로를 제작하는 데에는 브레드 보드를 사용했습니다. 하지만 이를 작동시키려면 건전지가 필요했고 브레드보드, 건전지, 스위치를 모두 뱀 로봇에 부착하기 위한 공간이 부족하여 이를 모두 일체형으로 붙여서 단 하나의 모터의 공간만을 차지하게 공간을 최소화시켰습니다. 이때 가장 큰 문제는 DC모터의 부착이었습니다. 저희가 연구를 위해 구매했던 DC모터의 RPM 스펙이 예상보다 느리고 토크도 생각보다 크지 않았습니다. 건전지와 여러 회로, 모터가 있는 뱀 로봇의 몸체의 무게를 감당하기에 작은 DC모터에게는 큰 부담이 되었습니다. 처음에는 양면 테이프로 고정했는데 얼마 지나지 않아 바로 뱀 로봇 몸체가 가라앉아 글루건도 이용해 보았습니다. 양면테이프와 글루건을 모두 이용한 후 이를 테이프로 여러 번 감고 나서야 확실하게 고정할 수 있었습니다. 정확한 위치에 모터를 확실하게 고정을 하고 나서야 로봇이 잘 구동되었습니다.
각종 발표회 및 대회 준비 과정
저희는 본 연구를 바탕으로 한국과학창의재단의 중간 및 최종 결과 발표, 연구보고서 우수사례 발표 평가, 교내 R&E 성과 발표, 교내 국제학술교류 발표 그리고 국제 대회 예선까지 참가하게 되었습니다.
각종 발표회와 대회에 참가하는 과정에서 가장 많은 시간이 소요된 부분은 바로 제출할 자료를 제작하는 일이었습니다. 방대한 연구 내용을 정리하여 매번 차트와 보고서 등을 양식이나 조건에 맞도록 수정해야 했고 때로는 영상을 찍어서 제출해야 했습니다. 또한 발표환경이나 조건에 맞춰 발표 자료를 새롭게 구성하거나 추가로 연구한 내용을 더하는 등 정말 여러 번의 제작 과정들이 있었습니다. 반복적이고 힘든 일이었지만 팀원들 모두 각자 역할을 분담해 힘을 합쳤습니다. 이때 연구일지가 큰 도움을 주었는데요, 투박한 서식이긴 하지만 연구가 어떻게 발전해나갔고, 각 단계에서 어떤 생각으로 연구를 진행했는지 알 수 있어서 매우 큰 도움이 되었습니다. 연구일지를 작성하기 위해 연구 사진도 종종 찍었는데요, 발표 자료를 만들 때 요긴했습니다. 처음 보고서를 작성할 때는 여러 명이 함께 쓰다 보니 체계적이지 못하고 정돈되지 않은 부분들이 많았습니다. 이런 부분에 대한 피드백을 통해 보고서 작성법을 조금씩 익혀갔습니다. 또한 국제학술교류와 국제 대회를 준비할 때에는 한글 대본을 영작하는 과정도 필요했는데요. 빠듯한 일정으로 급한 마음에 돌린 번역기에서 '유전(遺傳) 알고리즘'을 'Oil field(油田) algorithm'으로 번역하는 해프닝도 있었습니다. 결국 번역기의 결과는 폐기하고 직접 영작했습니다. 발표 자료를 제작하는 과정에서 저희 연구의 아쉬운 점을 찾아내기도 했습니다. 대중 앞에서 발표를 하고 나면 부족한 부분들이 더 선명해졌습니다. 그래서 발표 후에 부족한 부분은 보완하고 잘못된 부분은 정정하는 과정을 거치도 했습니다.
팀원들 모두 연구의 전체 과정에 성실히 참여했지만, 각자가 잘하는 부분과 맡은 역할이 달랐습니다. 뱀 로봇의 특성상 다양한 분야의 기술이 필요했기 때문입니다. 뱀 로봇의 움직이는 모델, 뱀 로봇에 들어가는 프로그램, 뱀 로봇의 하드웨어 모두 다른 영역입니다. 각자가 맡은 부분에 비해 다른 부분에는 이해도 부족했기에 이를 맞춰주는 작업도 필요했습니다. 때로는 강의실에서 때로는 온라인 회의실에 모여서 각자 맡은 부분에 대하여 더 자세히 설명해주고 서로 질의응답을 하는 시간을 수시로 가졌습니다. 그리고 발표 자료를 수정하고 개선하는 과정을 반복할수록 더욱 매끄럽고 유창한 발표 실력으로 연구 내용을 잘 전달할 수 있었다는 생각도 듭니다.
연구 물품의 배달 사고
뱀 로봇을 제작하는 데에는 모터, 바퀴, 각종 센서들, 그리고 각 모터를 연결하는 모듈과 아두이노 등과 같이 다양한 부품이 들어갑니다. 이런 다양한 부품들이 학교에 모두 구비되어 있진 않았습니다. 각각에 필요한 물품들의 규격이 다르고, 고성능의 센서가 필요하거나 연결과정에서만 쓰이는 특정 모듈도 있기 때문입니다. 이에 연구 재료비로 연구에 필요한 물품을 구입했지만 이 과정에서 예상치 못한 어려움을 종종 겪었습니다. 해외 배송으로 배송 기간이 너무 길거나 제작 과정에서의 시행착오로 인해 부품이 추가로 필요할 때가 많았습니다. 물품이 도착하기 전에는 제작이 중단되었고 또 인터넷에서 검색되지 않아 판매처에 직접 전화 문의해야만 하는 필수 부품도 있었습니다. 그러나 이러한 현실적인 어려움에 주저앉지 않고 하드웨어 연구가 중단되는 동안 소프트웨어 연구에 집중함으로써 효율적인 연구가 되도록 노력했습니다. 결과적으로는 이런 경험들이 저희 연구를 더 완성도 있게 만들어주었다고 생각합니다.
느낀 점
경기북과학고 박병하 먼저 1학년부터 이끌어주시며 항상 따뜻하게 대해주신 정민영 선생님께 감사드립니다. 전 사실 R&E 분과 선택 시 정보과를 지원했지만 기대와 달리 수학과에 오게 되었습니다. 그래서 당시에는 아쉬웠지만 수학 분과에서 연구를 진행한 것이 정말 큰 행운이었어요. 모르는 지식이 많았는데 준환이와 은성이, 승민이가 항상 이해해주고 알려주어 친구들에게 고마움을 느끼고 있습니다. 연구 과정에서 정말 어려운 점이 많았는데 함께 해주신 선생님들, 친구들이 있었기에 마무리할 수 있었고 이를 통해 보고서 작성법도 익히고 연구의 부족한 점들을 느끼며 더욱 성장할 수 있었습니다. 연구를 진행하는 것은 단순히 공부하고 주어진 문제를 해결하는 것이 아닌 서로 협동하고, 소통하고 성장하는 것임을 깨달았습니다. 우리 팀원들과 함께 연구자로서 필요한 소양을 기를 수 있어 영광이었습니다.
경기북과학고 안은성 구매 사이트에서 필요한 물품들을 찾아 구매하고 제가 원하는 역할을 수행할 수 있는 그런 로봇을 만들어 본 것은 이번이 처음이었습니다. 뱀 로봇의 제작에 대한 메뉴얼이 없었기 때문에 로봇을 어떻게 만들어야 하는지 막막했습니다. 하지만, 이와 비슷한 관절 로봇들을 많이 찾아보니 점차 감이 잡혀 우리만의 뱀 로봇을 만들어낼 수 있었습니다. 하드웨어를 제작하는 과정 중 마음처럼 되지 않는 일들이 정말 많았습니다. 전선이 자꾸 끊어져 계속 납땜을 해야 했고 모터 구동이 잘 안 되어 부품들의 위치를 자주 변경하기도 하였습니다. 하지만 이런 시행착오를 겪으면서 오히려 문제를 해결해 나가는데 재미를 느꼈습니다. 점차 연구 활동이 재미있는 놀이를 하는 것 같이 느껴졌습니다. 하드웨어를 제작하는 과정에서 친구들이 함께 부품을 찾아주고 브래킷을 조립하는 등 정말 많은 도움을 주어 고마움을 많이 느낍니다.
경기북과학고 한승민 복잡한 다관절 로봇을 제작하는 것은 이번이 처음이었는데 정말 새로운 경험이었습니다. 힘든 일들도 많았지만 함께해준 은성이, 병하, 준환이가 있어서 함께 잘 헤쳐 나갈 수 있었습니다. 이번 연구를 통해 서로 잘하는 부분을 공유하고 부족한 부분은 보완해가며 더 좋은 연구를 할 수 있다는 것을 알게 되었습니다. 중간에 모터가 잘 작동되지 않아 정말 힘들었는데 다음에는 조금 더 호환성이 좋은 모터를 꼭 사용해 봐야겠다는 숙제를 스스로에게 남기기도 했습니다. 이 연구를 통해 뱀 로봇의 연구가 아직 새롭고 연구할 수 있는 부분이 많다는 것을 느꼈습니다. 기회가 된다면 조금 다른 방향으로의 뱀 로봇도 연구해 보고 싶어졌습니다. 친구들과 한 연구가 벌써 끝났다고 하니 아쉽습니다. 정이 많이 든 친구들에게 그동안 정말 고마웠고 기회가 된다면 또 같이 연구를 하자고 하고 싶습니다.
경기북과학고 김준환 저는 처음에 로봇에 대한 큰 관심은 없었습니다. 그래서 뱀 로봇이라는 주제가 마음에 들지는 않았었어요. 하지만 새로운 주제를 접하면서 아두이노, 매트랩, 로봇공학, 최적화 등 다양한 분야를 익힐 수 있었고, 그 과정도 정말 재미있었습니다. 또한 연구 과정에서 데이터 과학자라는 새로운 흥미를 찾고, 대학 입시의 방향을 결정하는 데에도 도움이 되었습니다. 이런 부분이 팀 연구의 가장 큰 장점인 것 같아요. 개인 연구와 달리 서로 양보하고 도와주며 연구자로서의 능력을 기를 수 있고, 예기치 못한 곳에서 새로운 적성을 찾아갈 수도 있습니다. 연구가 끝나고 이렇게 과정을 돌아보니 생각보다 고생도 많이 하고, 노력이 많이 들어간 연구라는 생각이 드네요. 그에 비해 다들 각자가 맡은 역할을 확실하게 수행해 주었고 그 과정을 긴밀하게 공유했기 때문에 연구가 잘 마무리될 수 있었던 거 같습니다.
글을 마치며
지금까지 저희 연구의 내용과 뒷이야기, 연구하며 느낀 점을 이야기해 보았습니다. 마지막으로 저희 연구를 믿고 지지해 주시고 다방면으로 지원해주신 정민영 선생님과 이런 좋은 기회를 마련해 주신 과학영재 창의연구(R&E) 지원센터에 진심으로 감사드립니다. 이 글을 읽으시는 분들도 연구 진행에 있어서 큰 도움이 되었기를 바랍니다. 감사합니다.