스위스 연방 공과대학교 (ETH Zurich) 등의 연구팀이 사지 보행 로봇을 이용해 거대한 루비크 큐브를 자율적으로 완성하는 데 성공했습니다. 로봇은 카메라로 큐브의 상태를 인식하고 완성까지의 단계를 계산한 뒤, 발만 사용하여 큐브를 조작합니다. 사지 보행 로봇은 장애물이 많은 곳을 이동할 수 있을 뿐만 아니라 발을 이용해 주변 물체를 조작할 수도 있습니다. 이러한 기술은 '페디펠레이션 (Pedipulation)'으로 불리며, 지금까지 발로 버튼을 누르거나 문을 여는 연구가 이루어져 왔습니다. 그러나 여러 개의 움직이는 부분을 가진 물체를 정확하게 조작하는 것은 여전히 어려운 과제입니다.
따라서 연구팀은 사족 보행 로봇 'ANYmal-D'를 사용하여 1 변 40cm, 무게 4.6kg 의 거대한 루비크 큐브를 완성하는 시스템을 구축했습니다. 실제로 로봇이 루비크 큐브를 푸는 모습을 다음 유튜브 영상에서 확인하실 수 있습니다. Solving a Giant Rubik's Cube with a Quadruped Robot - YouTube
루비크 큐브를 풀려면 본체를 기울이거나 방향을 바꾸며 필요한 부분만 회전시켜야 합니다. 또한 조작 중 의도하지 않은 부분이 회전하면 미리 계산한 절차가 성립하지 않으므로 정확한 동작이 요구됩니다. 이에 연구팀은 로봇이 '스캔', '계획', '실행'의 3 단계로 나누어 루비크 큐브를 풀도록 프로그래밍했습니다. 로봇은 먼저 큐브의 주변을 270 도 이동하며 각 면을 촬영하고, 중간에 큐브를 1 회 기울여 평소에는 보이지 않는 바닥면도 확인합니다. 이를 통해 6 면의 모든 색상 배치를 인식하고 현재 상태를 파악합니다. 큐브 인식에는 RGB 이미지와 깊이 이미지를 결합한 RGB-D 카메라를 사용합니다. 이미지 인식 AI 의 'SAM 3'로 큐브 영역을 검출하고 깊이 정보로부터 위치와 방향을 추정한 후, 각 면을 9 개의 격자로 나누어 색상을 식별합니다. 또한 여러 방향에서 얻은 정보를 통합함으로써 큐브 전체의 색상 배치를 복원합니다.
다음으로 기존 루비크 큐브 풀기 알고리즘을 사용하여 완성까지의 절차를 계산하고, 로봇이 실행 가능한 동작으로 변환합니다. 이 시스템에는 큐브를 앞으로 기울이는, 뒤로 기울이는, 반시계 방향으로 회전시키는, 시계 방향으로 회전시키는 4 가지 동작과 로봇 자체가 큐브의 주변을 이동하는 동작이 준비되어 있습니다.
그리고 실제로 큐브를 다리로 조작하며 풀어나갑니다. 큐브를 뒤집을 때는 앞다리로 전체 본체를 90 도 기울이고, 큐브의 일부만 회전시킬 때는 오른쪽 앞다리로 최하층을 눌러 고정하면서 왼쪽 앞다리로 위 2 층을 90 도 회전시킵니다. 로봇은 이러한 동작들을 조합하여 원하는 면을 하측으로 이동시킨 후 회전시켜 큐브를 완성 단계에 가깝게 만들어갑니다.
이러한 복잡한 동작을 구현하기 위해 연구팀은 NVIDIA 의 로봇 학습 환경인'Isaac Lab'를 사용했습니다. 먼저 시뮬레이션에서 로봇과 큐브의 상세한 상태를 파악할 수 있는 강인한 AI 에게 강화학습을 수행하여 각 동작을 습득하게 했습니다. 이후 학습 결과를 다른 AI 에게 전달하고, 실제 로봇에 탑재된 2 대의 깊이 카메라와 관절 상태 등을 기반으로 동작을 가능하게 했습니다.
또한 학습 중에는 로봇과 큐브의 위치 관계, 무게, 마찰력 등의 조건을 무작위로 변화시킵니다. 이를 통해 시뮬레이션과 현실 세계의 차이에 대응하고, 큐브의 위치가 약간 어긋나 있거나 외부에서 힘이 가해져도 조작을 계속할 수 있도록 합니다. 또한 시계 방향 회전은 개별적으로 학습하지 않고, 반시계 방향 동작을 좌우 반전시켜 구현하고 있습니다. 시뮬레이션상 각 동작을 각각 1,000 회 검증한 결과, 실제 기기에 학습한 AI 는 앞뒤로倾倒하는 동작에서 99.7%, 반시계 방향 회전에서 99.0%, 시계 방향 회전에서 97.4% 의 성공률을 기록했습니다. 반면 실제 기기를 사용한 각각 15 회 시험에서는 앞뒤로倾倒하는 동작은 모두 15 회에 성공했으나, 반시계 방향 회전은 13 회, 시계 방향 회전은 10 회에 그쳤습니다. 연구팀은 다양한 환경에서 동작의 견고성을 검증하기 위해 마찰력이 적은 바닥이나 야외의 석조 바닥에서 조작을 시도하고 있습니다.
또한 로프로 다리를 당기는, 막대로 큐브를 밀고, 무거운 상자로 큐브의 움직임을 방해하는 등의 실험도 실시했습니다. 로봇은 방해로 인해 다리의 위치가 어긋나도 다시 다리를 뻗어 접촉 위치를 조정하는 등 상황에 맞는 동작을 보여줍니다.
그러나 모든 조건에서 성공적으로 조작되지는 않았습니다. 예를 들어, 미끄러운 바닥에서는 큐브가 넘어지지 않고 미끄러져 버리는 경우가 있으며, 회전 조작에서는 발의 위치가 크게 벗어나면 과하게 돌리거나 큐브를 고정하지 못하게 되는 문제가 확인되었습니다. 또한, 야외에서의 스캔 테스트는 5 회 중 3 회에 그쳤으며, 상용화를 위해서는 개선 여지가 있습니다.
결국 연구팀은 실제 로봇을 이용한 루비크 큐브의 자동 해법을 3 회 시도했고, 모두 성공했습니다. 각 시도에서는 약 30 회 이상의 조작이나 위치 변경을 수행했으며, 완성까지 8~9 분이 소요되었습니다. 중간에 큐브의 층이 약간 어긋났을 경우에도 이후 조작으로 어긋남을 수정하는 등, 완전히 정확한 동작이 이어지지 않더라도 끝까지 완성될 수 있다는 것이 입증되었습니다.
이번 연구는 전용 로봇 암을 추가하지 않고도 사족 보행 로봇이 발을 이용해 복잡한 물체를 조작할 수 있는 가능성을 보여줍니다. 연구팀은 이번 성과가 루비크 큐브를 풀기만 하는 것을 넘어, 한 발로 도구를 고정하고 다른 발로 뚜껑을 닫거나, 접이식 상자를 지지하며 접는 등의 용도에도 적용될 수 있다고 논지했습니다.
원문 보기 | 출처: Gigazine