두 발로 걷고 두 손으로 일하는 인간형 로봇은 넘어지지 않게 자세 잡는 일이 대단히 어렵다. 움직일 때마다 균형을 맞추기 위해 온 몸의 관절을 유기적으로 움직여야 한다. 더구나 재난수습로봇은 장애물 가득한 곳에서 복잡한 업무를 연달아 수행해야 한다. 짜임새 있게 설계된 소프트웨어 없인 불가능한 일이다.
휴보는 세계 어디에도 없는 독특한 소프트웨어 프레임워크를 가지고 있다. 이름부터 특이하게 ‘포도(PODO)’다. 여러 포도 알이 모여 포도송이를 이루듯이, 독립적으로 움직이는 여러 모듈이 모여 소프트웨어를 구성하고 있다. 2012년 소프트웨어 개발과정에서 이 이름을 처음 붙인 이정호 레인보우 대표이사는 “기존에 있던 로봇 구동 소프트웨어들이 너무 복잡해서 이해하기 어려웠다”며 “컴퓨터공학과 출신이 아닌 나 같은 사람도 프로그램을 다룰 수 있도록 쉽게 만드느라 포도송이 같은 구성이 됐다”고 말했다.
필요할 때만 사용하는 모듈
레고블록으로 만든 집을 생각해보자. 여러 블록이 모여 한 가지 기능을 하는 방을 만든다. 안방, 서재방, 운동방, 공부방, 샤워실, 옷방…, 소프트웨어에선 여러 소스가 모여 특정 기능을 하는 방을 ‘모듈’이라고 부른다. 운전을 하는 모듈, 밸브를 잠그는 모듈처럼 말이다. 휴보의 독특한 점은 포도송이 따듯이 각 모듈을 따로 분리시킬 수 있다는 점이다. 옆방과 레고블록이 겹치지 않도록 잘 조립하면 된다. 항상 사용하는 집의 거실(공유메모리)이나 입구(휴보2 데몬모듈)는 따로 분리할 수 없지만, 각 방은 기능을 사용할 때만 일시적으로 결합하면 된다. 이렇게 만들면 장점이 있다. 서재방에 불이 나도 집 전체가 불에 탈까 걱정할 필요가 없다. 서재방만 따로 떼어내면 되니까.
실제 대회에서도 이런 소프트웨어 구조는 큰 도움이 됐다. 이 대표는 “과제별로 작동하는 모듈이 달라서, 한 군데서 에러가 나도 다른 모듈을 쓰면 돼 문제를 빨리 해결할 수 있었다”고 말했다. 한 군데서 에러가 나면 전체를 손봐야 하는 다른 팀의 시스템보다 편리하다. 모듈을 모두 가동하지 않아도 돼 시스템이 가벼워지고, 하나를 수리하는 동안 다른 모듈을 쓸 수 있는 장점도 있다.
로봇 보호하는 소프트웨어
소프트웨어는 조종사의 명령을 받아 로봇을 구동시키지만, 때로는 조종사의 명령에 반해 로봇 스스로를 지키기도 한다. 예를 들어 로봇이 장애물에 걸려 발이 묶이는 상황이 됐다고 하자. 조종사의 명령에 따르려면 로봇이 계속 앞으로 움직여야 하지만, 실제로는 한 자리에 묶여있다. 그냥 놔두면 과전류가 흘러 모터나 회로가 망가진다. 소프트웨어는 이런 상황을 막기 위해 오류를 탐지한 다음 두꺼비집처럼 전류를 차단한다.
로봇을 많이 조종해보지 않은 사람이 실수로 엉뚱한 위치 값을 입력하면 로봇이 다칠 수 있다. 이럴 땐 소프트웨어가 감지하고 모터 제어기를 자동으로 멈추게 한다. 관절별로 움직일 수 있는 최대 속도와 가속도를 넘는 값을 입력해도 소프트웨어가 개입해 로봇 파손을 막는다. 이런 기능들이 합쳐져 휴보의 세계대회 우승을 이끌었다. 휴보의 심장에는 하드웨어 못지않게 강력한 소프트웨어가 숨어 있다.