Motion Teaching 방식에 대해서

매우 오랜 기간동안 소형 휴머노이드 로봇을 다뤄 오면서 느낀점을 살짝 적어볼까 한다.

소형 휴머노이드 로봇을 제작할 때 들어가는 모터는 약 22개 정도 소요 된다. 상황에 따라서 몇 개는 추가 되고 몇 개는 없어지기도 하는데, 이 모든 모터들을 정확한 시간에 정확한 위치에 두게 하는 방법은 다양하다.

먼저 하드코딩을 할 수 있다. 하드코딩이란, 다양한 해석이 있겠지만, 적어도 여기서 말하는 하드코딩은 모든 좌표를 일일이 수기로 코드나 파일에 한 땀 한 땀 기입하는 것을 뜻한다. 현재 시간에 몇 번째 모터는 어디에 가라는 것을 코드에 박는다는게 말로는 쉬울 수 있으나 그 것을 행동으로 하기에는 너무나 큰 시간 소요가 들어간다. 차라리 그 시간에 다양한 기법을 공부해서 프로그램을 하나 짜는 것이 더 이득일 수 있다.

두 번째로, 어떠한 framework 을 만들 수 있다. 이를테면, 전체 모터의 힘을 모두 풀어준 상태에서 사용자가 어떠한 동작을 수작업을 통해서 직접 만들어 주고, 그 상태를 모터의 엔코더나 포텐셜미터(위치를 파악하는 장치 혹은 센서)를 사용해서 읽어들이며, 그 좌표의 집합을 어떠한 시간에 정렬하는 것이다. 말로 설명하기는 어려우니 그림으로 설명하는 것이 좋겠다. 이렇게 입력된 하나의 집합은 특정 시간에 그 프레임 집합을 play 함으로써 자세를 복원할 수 있다. 가장 흔하게 사용되는 방식으로써, 이 방식은 휴머노이드 대회에 참가하는 다양한 팀이 사용했던 방법이다.

세 번째로, 계산을 통한 모션 play 방식이다. 로봇은 대부분 관절 로봇이며, 그 관절은 가변하지 않고 설사 가변하더라도 그 길이와 각도를 계산하면 끝 점의 위치를 알 수 있다. 또한, 원하는 끝 점을 주면 중간 관절 값을 얻을 수 있도록 계산할 수 있고, 그 것을 관절에 써 주기만 하면 관절을 움직이고, 자신이 원하는 포즈를 취할 수 있다. 포즈 뿐만이 아니라 관절의 궤적을 제어할 수 있는 것이다. 이렇게 계산을 통한 모션 플레이 방식은 특히 보행에서 많이 쓰인다. 휴머노이드 보행은 관절 끝 점의 궤적을 다양하게 제어해 주고, 무게중심의 쏠림을 센싱하고, 다시 그 것을 보행에 적용하는 일련의 과정이 필요한데, 이 것을 적용하기 위해서 계산하는 중간에 외부 변수를 추가해 줌으로써 아주 간단하게 (생각보다 복잡하지만 두 번째 방법보다는 간단) 구현할 수 있다. 하지만 이러한 방법은 퍼포먼스 수행에는 다소 어려울 수 있다. 사람의 몸짓을 계산을 통해서 표현한다는 것은 당연히 힘들다. 이럴 때 사용하는 것이 모션캡쳐다.

네 번째로, 위에서 언급한 것 처럼 모션 캡쳐 방식을 사용하는 것이다. 보행처럼 계산이 들어가는 그런 모션이 아닌 일반적인 사람의 행동이나 춤 등을 로봇에 입력하기 위해서 두 번째 방법을 사용한다면 어떻게 될까? 입력해야 할 값이 너무나 많아서 하다 보면 싫증과 회의가 느껴질 수 있는 그런 작업이 될 것이다. 이러한 문제를 해결하기 위해서 모션캡쳐 방식을 사용할 수 있다. 사람의 신체에 일련의 센서를 장착하고 그 센서를 정해진 시간 주기마다 읽어서 로봇에게 적용을 해 주는 것이다. 원래 모션 캡쳐는 가상 현실 애니메이션에서 캐릭터의 행동을 입력하기 위해서 사용하는 기법이었으나, 로봇도 똑같이 적용할 수 있다. 또한 모션 캡쳐를 사람 몸에만 적용하는 것이 아니라 로봇 몸체 자체의 센서를 이용해서 할 수도 있다. 소형 휴머노이드 로봇의 퍼포먼스 모션을 제작하기 위해서 사용할 수 있다. 마치 녹화나 녹음을 한다는 생각으로 로봇의 팔을 잡고 춤을 추게 만드는 것이다. 흡사 인형을 가지고 춤을 추게 하는 것과 비슷할 것이다.

광운로봇게임단 시절, 두 번째 방법으로 인기 댄스가수의 댄스를 입력했었던 적이 있다. 지금도 이러한 방식으로 많이 댄스를 짜는데, 이 것은 매우 많은 노력이 필요하다. 즉, 노가다인 것이다. 숭고한 노가다의 시간과 노력에 비해서 퍼포먼스가 그렇게 잘 나오지는 않는다. 모든 동작은 한 프레임 프레임으로 쪼개져 있고, 그 것을 일일이 입력을 해 주며, 그 입력된 것과 노래의 시간을 맞추는 일은 정말 고역이 아닐 수 없다. 스탑 모션 애니메이션 같은 것이다. 이러한 노력을 줄여줄 수 있는 방법이 바로 네 번째 모션 캡쳐 방식이다. 아쉽지만 지금 모션 캡쳐 방식을 보유하고 있지는 않고, 국내 소형 휴머노이드 팀에서도 역시 그런 방식은 없는 듯 하다.

그래서 그러한 방식으로 로봇의 동작을 입력하는 소프트웨어 프레임워크를 만들까 한다. 초당 약 20번 이상의 frame 을 캡쳐 하도록 하고, 그 것들을 따로 파일에 저장하며, 시간에 맞춰서 그 것을 다시 재생하는 것을 쉽게 할 수 있도록 할 것이다. 얼마나 시간이 걸릴지는 모르겠지만, 그리고 어떠한 언어로, 어떠한 것으로 짜야 할 지 감은 오지 않지만 창의 과제를 수행하는 기분으로 진행할 것이다.

내가 필요해서 만드는 소프트웨어. 시작해야겠다.

Leave a Comment