Intro : 로봇에게 복잡한 작업을 어떻게 가르쳐 줄 것인가?
지금까지 많은 로봇들은 공장과 같은 정형화된 환경 속에서 미리 입력된 위치 정보를 따라 움직이며 작업을 수행했습니다. 하지만 일상에서의 많은 작업들은 공장과 달리 비정형화된 환경에서 수행되며, 외부의 다양한 물체와 물리적인 상호작용을 필요로 합니다.
하나의 예로, 잼을 빵에 바르는 작업을 상상해봅시다. 잼의 굳기, 빵의 단단한 정도에 따라 누르는 힘을 적당히 조절하며 움직여야 합니다. 지우개를 이용해서 화이트 보드를 지우는 작업은 어떨까요? 우리는 화이트 보드를 깨끗하게 지우기 위해서 지우개를 적당히 누르며 움직여야 한다는 것을 알고 있습니다. 또한 오래전에 써서 잘 지워지지 않는 부분은 더 세게 눌러야 한다는 것도 알고 있죠. 이렇듯 일상에서 작업을 수행하는 도중에 물체와 접촉하는 경우, 힘(접촉력)을 조절하는 것은 굉장히 중요합니다.
즉, 로봇은 작업 수행을 위해 어떻게 '움직'여야 하는지 뿐만 아니라 환경과 상호작용하는 과정에서 어떤 '힘'을 내야하는지에 대한 정보도 알고 있어야 합니다. 일상의 많은 작업들을 가능하게 하는 물리적인 상호작용은 '힘'을 매개로 이뤄지기 때문입니다. 이와는 반대로, 공장에서는 환경을 거의 완벽하게 알고 있으며 물건을 잡는 것 외에는 물리적인 상호작용이 거의 없습니다. 요구되는 환경과 작업의 특성이 완전히 다르기 때문에 일상에서의 작업들을 가르치는 것은 공장 로봇에게 적용한 방법과는 달라야 합니다.
사람에게 배우는 운동지능(Physical Intelligence)
물리적인 상호작용이 필요한 작업을 로봇에게 가르치는 방법에 대한 아이디어를 얻기 위해 사람은 어떻게 작업을 가르치고 배우는지 생각해봅시다. 사람의 경우, 외부 환경과 상호작용하며 사물을 다루거나 어떤 행위를 할 때는 의식적으로 하는 것 외에도 무의식적으로 하는 것들이 많이 존재합니다. 잼을 바를때 손각락의 움직임, 손가락과 손목에 들어가는 힘을 일일이 생각하며 움직이지 않습니다. 주머니에서 동전을 꺼내는 작업을 할때도 마찬가지로 작업 자체는 의식하지 않고도 쉽게 수행할 수 있으며 팔과 손의 움직임을 하나하나 생각하지 않습니다. 이런 부분은 무의식의 영역에서 일어나기 때문입니다. 그래서 이와 같은 무의식의 영역에서 수행되는 과정과 원리를 언어로 설명하거나 프로그래밍하기는 어렵습니다. 우리는 이러한 운동 경험을 바탕으로 한 지식, 지능을 운동지능(Physical Intelligence)이라고 부릅니다.
우리가 간단한 조립 매뉴얼만으로가구 조립 같은 복잡한 작업을 수행할 수 있는 이유도, 공통적으로 가지고 있는 운동 경험이 있기 때문입니다. 이러한 지능을 로봇에게 가르쳐줄 수 있다면 어떨까요? 한번의 경험으로도 로봇은 학습을 통해 정의되지 않은 더 많은 작업들을 해낼 수 있을 것입니다. 문제는 위에서 언급한 것처럼 운동지능은 무의식의 영역에서 일어나기 때문에 말, 글 또는 코드로 표현해서 로봇에게 전달하는 것이 불가능하다는 것이죠. 만약 이러한 운동지능을 로봇에게 효과적으로 전달 할 수만 있다면 우리는 로봇에게 훨씬 효과적으로, 더 많은 작업들을 가르칠 수 있을 것입니다.
햅틱 디바이스(Haptic Device)의 개발
운동선수에게 코치가 새로운 기술을 오직 글로만 가르친다면 어떨까요? 생각만해도 답답하네요. 분명 코치가 동작을 보여준 후 직접 해보게 하는 것이 더 빠를 뿐 아니라 정확할 것입니다. 로봇에게도 그게 가능할까? 이 질문에서 시작한 것이 바로 햅틱 디바이스입니다. 사람과 동일한 스케일, 사람의 팔과 같은 일곱개의 자유도로 제작된 햅틱 디바이스를 통해 프로그래밍이나 말로 설명할 수 없는 사람의 운동지능과 힘 조절 능력을 추출하여, 로봇의 학습 데이터로 사용합니다.
햅틱 장치는 일종의 조종 장치로 일반적인 조종 장치와는 다르게 양방향으로 위치와 힘 정보를 전달합니다. 사용자가 로봇에게 어디로 움직여야 하는지 명령을 전달하는 것뿐만 아니라 로봇이 느끼는 힘을 사용자도 느낄 수 있게 해줍니다. 사람은 햅틱 장치를 통해 로봇을 조종하면서 작업을 수행하고, 로봇은 그 과정 속에서 사람의 운동지능을 간접적으로 얻을 수 있게 됩니다.
지금부터 햅틱 디바이스가 어떤 방식을 통해 로봇에게 물리적 "경험"을 체험하게 하고 어떤 "정보"를 축적하는지 설명드리도록 하겠습니다. 사람의 운동지능을 로봇에게 전달하기 위해서는 사람은 해당 작업을 최대한 원래 본인이 하던 것과 유사하게 그리고 자연스럽게 수행 해야합니다. 이를 위해 아래와 같은 방향으로 고도화하고 있습니다.
사람의 동작을 로봇에게 잘 전달 해줄 수 있는 설계 구조
위에 언급한 것처럼 사람의 작업을 가르쳐야 하는 햅틱 디바이스는 당연히 사람의 팔이 움직일 수 있는 공간을 커버할 수 있어야 합니다. 따라서 사람 팔과 유사한 자유도인 7개 관절을 가진 구조로 개발했습니다. 6개의 관절로도 모든 공간의 위치와 방향을 표현할 수 있지만 추가로 여자유도를 줌으로써 햅틱 디바이스의 자세를 더 자연스럽게 만들 수 있었습니다.
움직임이 상대적으로 적은 파트는 모터가 충분한 힘을 내면서 질량이 작은 모터로, 움직임이 많은 부분은 사람의 힘을 잘 느낄 수 있는 형태로 제작하였고 손목 운동과 관련된 동작은 독립적으로 수행할 수 있게 설계했습니다. 이러한 구조를 통해 조작이 용이하면서도 사람의 힘을 잘 전달 수 있었고, 그 결과 아래와 같은 햅틱 디바이스의 모습이 되었습니다.
안전한 상호작용을 위한 제어 알고리즘
사람의 동작을 로봇에게 자연스럽게 전달할 수 있다는 것은, 반대로 말하면 로봇의 동작 또한 사람에게 자연스럽게 전달된다는 의미입니다. 이러한 상호간의 동작 전달을 위해서는 로봇과 사람은 서로 물리적으로 연결되어 있어야 합니다. 하지만 사람과 로봇은 물리적으로 분리된 시스템으로 구성되어 있기 때문에 서로 간의 힘과 위치 정보를 공유할 수 있는 bilateral teleoperation을 구현하였습니다.
시뮬레이터와 연동해서 양방향 힘제어 구현 (데모 영상 전체 보기)
이 같은 노력에도 불구하고, 사람의 동작을 이용해 로봇의 동작을 표현 함에 있어서 로봇과 사람간의 차이가 발생할 수 밖에 없습니다. 물리적인 동작 제한 범위, 낼 수 있는 힘의 한계, 관절의 종류와 구성 등 사람과 로봇은 서로 비슷하면서도 다른 특징을 많이 갖기 때문입니다. 이러한 제한 조건으로, 사람이 햅틱장치를 이용해 로봇을 동작할 때 목표 작업에 집중하지 못하고 여러 요소들을 고려해야한다면 이는 분명 어떤 작업을 수행하기 위한 사람의 자연스러운 동작과는 다를 수 밖에 없을 것입니다. 우리는 이러한 사람과 로봇의 차이에 따른 오차들을 배제하기 위해, 로봇이 스스로의 제한 조건들을 최우선적으로 고려하면서도, 사람의 동작은 최대한 따라할 수 있도록 hierarchical 구조의 optimization controller를 사용하였습니다.
위 과정을 통해 개발된 햅틱 장치와 제어 방식은 아래의 그림으로 정리할 수 있습니다. 이러한 구조와 알고리즘을 통해 네이버랩스의 햅틱 장치는 사람이 작업을 보다 편하고 수월하게 수행할 수 있는 구조가 되었습니다. 이로써 사람의 세밀하고 자연스러운 동작, 운동지능을 로봇에게 훨씬 정확하게 전달할 수 있는 것이죠.
그림3. 앰비덱스와 햅틱 디바이스의 제어 구조
햅틱 디바이스를 이용한 다양한 데모들
위에서 설명한 햅틱 장치를 이용하여 다양한 작업들을 수행한 데모 영상입니다. 사람에게는 간단해 보이지만 세밀한 로봇의 힘제어와 햅틱 장치의 양방향 힘전달이 모두 가능해야 할 수 있는 작업들입니다. 만약 하나라도 제대로 동작하지 않는다면, 칼과 고구마 사이의 접촉력이 필요 이상으로 들어가서 고구마나 칼이 부서져버리거나 로봇이 고장났을 것입니다.
(영상) 양방향 힘 제어 기반 햅틱디바이스 양팔 데모 - peeling
아래 영상은 날라오는 공을 그물망에 넣는 데모입니다. 영상을 잘 살펴보시면 로봇이 양팔로 하나의 봉을 잡고 있는 것을 보실 수 있는데요, 여기서 햅틱 장치를 움직이는 오퍼레이터 또한 하나의 봉을 양팔로 잡고 있는 듯한 움직임의 제약을 그대로 느끼고 있습니다. 만약에 양방향 힘제어가 제대로 되지 않아서 오퍼레이터가 햅틱 장치를 아무렇게나 움직였다면, 햅틱 장치의 움직임을 따라가려고 하다가 너무 많은 힘이 걸려 봉이 부러지거나 로봇이 고장났겠죠. 아래 데모에서는 빠르고 유연하게 동작하는 것을 볼 수 있습니다.
(영상) 양방향 힘 제어 기반 햅틱디바이스 양팔 데모 - catching
지금까지 네이버랩스에서 왜 햅틱 디바이스를 만들고 있는지 그리고 어떻게 개발을 해왔는지에 대해서 설명드렸습니다. 햅틱 디바이스는 사람의 운동지능을 로봇에게 전달하기 위한 데이터를 습득하기 위한 매개체입니다. 결국 로봇이 운동지능을 갖기 위해서는 사람의 운동으로 부터 얻은 데이터를 이용하여 학습을 해야합니다. 네이버랩스에서는 더 좋은 학습 데이터를 얻기 위한 햅틱 디바이스 고도화와 이를 통해 얻은 데이터를 활용하는 방법에 대해서 지속적으로 연구 개발해 나갈 것입니다.